postgresql13定时备份,增量备份 liunx/windows10_李英壮的博客-程序员资料_centos postgresql 定时备份

技术标签: postgresql  shell  windows  centos  

postgresql定时备份,增量备份

**

注:
1. 以下命令大都是root用户登录输入,有问题请查看是否是权限问题
2.中文为方便理解,实际操作不要在里面写中文
3.路径请根据对应数据库安装位置修改

**

一: 开启日志归档

1: 配置文件修改
vim /home/postgresql/bin/postgresql.conf
#开启日志归档
wal_level = replica
archive_mode = on
#归档日志压缩存入 /home/postgresql/db/back/ %f是文件名,不需要改
archive_command = ‘bzip2 < %p > /home/postgresql/db/back/%f.bz2’
max_wal_senders = 10
hot_standby = on

可直接加入恢复时所需的配置,data文件夹下没有recovery.signal文件就不会启动恢复模式
#恢复时配置,从/home/postgresql/db/back/下读取日志
restore_command = ‘bunzip2 < /home/postgresql/db/back/%f.bz2 > %p’
#恢复到几点
recovery_target_time = ‘2021-7-08 11:17:00’
#最新
recovery_target_timeline = ‘latest’

备份
2: 防止备份失败,可先授予postgres用户权限
chown -R postgres:postgres /home/postgresql
chmod -R 700 /home/postgresql

3: 输入以下命令
#登录postgres用户
su postgres
#切换到数据库目录
cd /home/postgresql
#备份到 /home/postgresql/db/7-8 下,这个文件夹只能为空!
rm -rf /home/postgresql/db/7-8/*
#备分到 /home/postgresql/db/7-8
pg_basebackup -D /home/postgresql/db/7-8 -v -P

**

热备份脚本,每日定时执行备份

注 : 定时备份为每日备份数据库,实际上增量备份只需要备份一次数据库,之后会自动将日志归档到指定文件夹中,data下pg_wal下每条日志写满16.8MB会自动归档,也可手动触发归档 : psql postgres -c “select pg_switch_wal()” , 恢复时会自动从归档目录读取文件

1.编写定时脚本
vim /home/backup/pgsql/bin/backup.sh

#!/bin/bash  
DATE=$(date '+%Y%m%d');
PG_HOME=/home/postgresql
PG_BACK=/home/postgresql/db/back
PG_BACKDATA=/home/postgresql/db/backdata

#START BACKUP
echo "chown -R postgres:postgres /home/postgresql chmod -R 700 /home/postgresql------------------------"
chown -R postgres:postgres $PG_HOME
chmod -R 700 $PG_HOME

echo "rm -rf /home/postgresql/db/backdata/* rm -rf /home/postgresql/db/back/*--------------------------"
rm -rf $PG_BACKDATA/*
rm -rf $PG_BACK/*

echo "START BACKUP...............pg_basebackup -D /home/postgresql/db/backdata-------------------------" 
cd $PG_HOME
su postgres <<!
echo "back -------------------------"
pg_basebackup -D /home/postgresql/db/backdata
exit $?
!
echo "BACKUP  END"

2.加入定时任务(多长时间执行一次,例子是每天8:00执行一次)
crontab -e
00 08 * * * /home/backup/pgsql/bin/backup.sh

查看定时任务
crontab -l

二: 恢复数据

留存当前数据库内容
mv /home/postgresql/data /home/postgresql/old_data_$(date ‘+%Y%m%d’)
1.将基本备份的数据copy并改名到data
mkdir /home/postgresql/data
cp /home/postgresql/db/7-8 /home/postgresql/data
2.有这个文件才会启动恢复模式,文件内不必有内容,归档完成会改名为recovery.signa
touch “/home/postgresql/data/recovery.signal”

4. 配置文件修改
vim /home/postgresql/data/postgresql.conf
#恢复时配置,从/home/postgresql/db/back/下读取日志
restore_command = ‘bunzip2 < /home/postgresql/db/back/%f.bz2 > %p’
#恢复到几点
recovery_target_time = ‘2021-7-08 11:17:00’
#最新
recovery_target_timeline = ‘latest’

5.防止启动失败,可先授予postgres用户权限

chown -R postgres:postgres /home/postgresql
chmod -R 700 /home/postgresql

6.启动数据库会以恢复模式启动
#备份文件生成是什么时间,恢复的时间只能比备份文件晚而不能比备份文件早!
/usr/pgsql-13/bin/pg_ctl -D /home/postgresql/data -l logfile start

恢复脚本(确定配置文件不需要更改再用)
以上为基本原理,如果配置文件不需要更改,可使用以下脚本
vim /home/backup/pgsql/bin/wal.sh

cd /home/postgresql

echo "mv data old_data--------------------------------------------------------------------------------"
mv /home/postgresql/data /home/postgresql/old_data_$(date '+%Y%m%d')

echo "mkdir /home/postgresql/data---------------------------------------------------------------------"
mkdir /home/postgresql/data

echo "cp -r /home/postgresql/db/backdata/*  /home/postgresql/data-------------------------------------"
cp -r /home/postgresql/db/backdata/*  /home/postgresql/data

echo "touch /home/postgresql/data/recovery.signal---------------------------------------------------"
touch "/home/postgresql/data/recovery.signal"

echo "chown -R postgres:postgres /home/postgresql chmod -R 700 /home/postgresql-----------------------"
chown -R postgres:postgres /home/postgresql
chmod -R 700 /home/postgresql

echo "/usr/pgsql-13/bin/pg_ctl -D /home/postgresql/data -l logfile start------------------------------"
su postgres <<!
/usr/pgsql-13/bin/pg_ctl -D /home/postgresql/data -l logfile start
exit $?
!

Windows10版备份恢复

流程和liunx一样,只是操作略微不同

备份

配置文件修改(其它同上面) :
备份归档:
archive_command = ‘copy “%p” “C:\java\postgresql\back\pg_wal\%f”’
恢复:
restore_command = ‘copy “C:\java\postgresql\back\pg_wal\%f” “%p”’

命令(不需要登录postgres用户,直接指定即可) :
开始备份(需要手动输入密码):
pg_basebackup -U postgres -D C:\java\postgresql\back\data -v -P
在这里插入图片描述
流程和liunx一样
备份就是修改配置文件,然后直接输入命令

恢复

1.修改data文件夹名保存原数据,也可能不是data,以实际为准
2.将备份数据复制过来,文件名为数据库名(data)
3.在data下创建recovery.signal
4.恢复时需要设置用户权限,默认启动并不是以管理员启动服务,所以先设置权限
在这里插入图片描述

5.启动服务,手动或者在管理-服务中点击启动都行

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qingjiu6664/article/details/118668068

智能推荐

网站程序员如何应对web标准_南三方的博客-程序员资料

        本文讨论的是在web标准普及的形势下,网站程序员的定位以及如何与设计师配合开发符合web标准的网站项目。本文适合的读者是传统TABLE布局下分工不是非常明晰的程序员。1:学习web标准,让你的工作变得更加简单。web标准是大势所趋,所以作为网站程序员。你必须洗脑,必须去学习web标准。去重新认识html标签,去了解如何让程序输出页面需要的代码。比如:上边是美工出来的

TI2243雷达芯片MIMO模式参数设置_#TrustTheProcess#的博客-程序员资料_ti 2243

TI2243雷达芯片MIMO模式参数设置为了提高雷达信号帧率,直接对Frames进行更改。可通过local nframes_master、local nframes_slave来调整。

「VS Code」如何通过跳板机连接服务器进行远程开发:Remote-SSH 篇_猫科龙的博客-程序员资料

通过 Visual Studio Code 的 Remote Development 插件,用户可以 ssh 到服务器中,直接开发服务器上的项目。但在使用过程中,打通跳板机是一个难题。本文将针对上述需求提供一个完整的解决方案。

xilinx 约束文件_Gkite的博客-程序员资料_xilinx约束文件

几种常用的约束语句,以备查阅。NET "clk0"  TNM_NET = "sys_clk_grp";  #在时钟网线clk上附加一个TNM_NET约束,把clk0驱动的所有同步元件定义为一个名为sys_clk的分组#使用TIMESPEC约束sys_clk_grp的周期TIMESPEC "TS_ sys_clk_grp " = PERIOD " sys_clk_grp

Oracle EBS 如何月结、对账 _cunxiyuan108的博客-程序员资料_ebs 月结关账检查要点

<br />在Oracle系统处理月结业务时,需要遵循一定的操作顺序。<br />这些业务,牵涉到相应的模块,包括:应付模块、采购模块、库存模块、应收模块、薪资模块、固定资产和总帐模块等<br /><br />在Oracle系统中,总帐模块处于财务核算的核心地位,它从其他模块中接收财务信息。<br />总帐接收到的财务信息与子模块业务必须保持一致,才能保证整个系统的帐务是正确的,所以要进行对帐。<br /><br />后面将描述一下模块之间的关帐顺序及模块间关帐要完成的步骤<br />一、Oracle EB

互联网:互联网进入下半场,这场赛怎么比?_诗音诗悦的博客-程序员资料

资本寒冬的开启; 互联网+热度的降温;美团点评CEO王兴提出互联网已进入“下半场”.互联网企业接下来的方向将是精耕细作,把用户服务得更好,通过每个用户创造更多的价值.如何通过互联网的技术和营销手段快速获取用户,在用户规模的基础上获得资本青睐,然后试错盈利模式。“技术+营销----->用户规模----->资本青睐----->盈利”上门服务的需求的确存在。无法在平台

随便推点

详解jQuery动画_安然lanr的博客-程序员资料

jQuery动画分为内置动画和自定义动画内置动画: 显示show()、隐藏hide()、显示隐藏切换toggle()、上拉slideUp()、下拉slideDown()、上拉下拉切换slideToggle()、淡入fadeIn()、淡出fadeOut、淡入淡出切换fadeToggle()、透明度fadeTo()自定义动画: animate()内置动画1.显示show()、隐藏hide()、...

Sentry-JS-SDK-Browser 官方示例最佳实践_为为少的博客-程序员资料

系列SDK 开发顶级开源项目 Sentry 20.x JS-SDK 设计艺术(理念与设计原则篇)顶级开源项目 Sentry 20.x JS-SDK 设计艺术(开发基础篇)顶级开源项目 Sentry 20.x JS-SDK 设计艺术(概述篇)顶级开源项目 Sentry 20.x JS-SDK 设计艺术(Unified API篇)系列Snuba:Sentry 新的搜索基础设施(...

启动 Tomcat 日志乱码问题_Acx7的博客-程序员资料_tomcat启动日志乱码

中文乱码大家在 Windows 启动 Tomcat 应该都会遇到中文乱码,其实也不影响使用,但是笔者看着这个乱码难受,于是提供一种较简单的解决方案。解决方案将 Tomcat 安装目录下 /conf/logging.properties 中的控制台日志编码由默认的 UTF-8 改为 GBK 即可。扩展乱码原因:Windows的控制台默认使用 GB2312 字符集,而 Tomcat 控制台日志输出默认使用 UTF-8 字符集,于是产生中文乱码,可使用 chcp 命令暂时修改控制台字符集

git提交修改——git add,git commit,git push作用的区分讲解_我是lk的博客-程序员资料_git addgit push

0.一般的上传文件分三步git add 要提交的文件名git commit -m "提交的理由"git push -u origin master对于上面的的git add可以使用git add .这个英文的点表示当前目录下的所有更改过的文件(这样更方便)。push的操作中,master表示为远程主分支(当你的远程仓库中建有别的分支,并且目前位于该分支上时,也可以填写别的分支名)1.g...

mybatis插入数据时,自动获取主键的自增id_Mitsuha三葉的博客-程序员资料

&nbsp;&nbsp;&nbsp;&nbsp;自己在写博客时,遇到了一个小问题,新增博客的时候,无法得到新增博客的id&nbsp;&nbsp;&nbsp;&nbsp;由于设计的数据库中博客id是自增长的主键,由数据库自动生成,所以只能先插入博客后,再获取它的id。解决方法:在mapper.xml文件里设置属性在insert方法中添加以下两个属性即可useGeneratedKeyske...

Pysvn 程序员使用指南_iteye_10850的博客-程序员资料

源文件:http://ju.outofmemory.cn/entry/35762这是一篇关于pysvn模块的指南.完整和详细的API请参考 http://pysvn.tigris.org/docs/pysvn_prog_ref.html.pysvn是操作Subversion版本控制的Python接口模块. 这个API接口可以管理一个工作副本, 查询档案库, 和同步两个.该API...

推荐文章

热门文章

相关标签