定时维护,强制执行保留策略、WAL文件管理
Barman如通过rpm安装将自动添加定时配置文件/etc/cron.d/barman,内容如下,设置每分钟进行一次定时维护
# m h dom mon dow user command
* * * * * barman [ -x /usr/bin/barman ] && /usr/bin/barman -q cron
手动执行备份
# 备份133,133为配置的服务名称
barman backup 133
如果备份报错:WAL archive: FAILED (please make sure WAL shipping is setup)
在数据库上执行
select pg_switch_xlog() ; -- for 9.6 and earlier
or
select pg_switch_wal() ; -- for 10
在barman上执行
# 执行维护,强制开始收取WAL
barman cron;
# 检查是否可以开始备份
barman check 133;
# 开始备份
barman back_up 133;
# 备份所有服务
barman backup all
可以使用cron配置定时执行备份,修改/etc/cron.d/barman,添加全量定时备份
# m h dom mon dow user command
0 1 * * * barman [ -x /usr/bin/barman ] && /usr/bin/barman -q backup all
重新加载定时配置
systemctl reload crond
barman replication-status 133
# 133为配置的服务名称
barman list-backup 133
返回结果例如
133 20190104T012032 - Fri Jan 4 01:20:39 2019 - Size: 48.6 MiB - WAL Size: 0 B
133 20190103T232839 - Thu Jan 3 23:28:42 2019 - Size: 48.5 MiB - WAL Size: 320.0 MiB
第二列为backup id,第四列为备份时间
需要先安装与备份数据库相同版本的PostgreSQL
Barman需要对还原的目标文件夹具备权限
chown -R barman:barman /home/pg
chmod -R 700 /home/pg
恢复备份到指定时间点,可以大于当前时间,表示恢复到最新时间
su barman
barman recover --target-time "2019-01-04 01:07:30" 133 20190103T232839 /home/pg
Postgres对还原的目标文件夹具备权限
chown -R postgres:postgres /home/pg
chmod -R 700 /home/pg
修改服务器配置文件postgresql.conf,检查以下配置
修改pg_hba.conf,设置合适的访问权限
检查Barman备份的streaming目录下是否有.partial后缀的文件,如果将该文件拷贝到恢复目录的pg_wal下,并删除.partial后缀
启动Postgres
查看Postgre日志,如出现以下内容,表示恢复到了指定的2019-01-04 01:07:30.563802+08时间点
2019-01-14 10:09:12 CST [30671]: [140-1] user=,db=,app=,client= LOG: recovery stopping before commit of transaction 23584393, time 2019-01-04 01:07:30.563802+08
2019-01-14 10:09:12 CST [30671]: [141-1] user=,db=,app=,client= LOG: recovery has paused
2019-01-14 10:09:12 CST [30671]: [142-1] user=,db=,app=,client= HINT: Execute pg_wal_replay_resume() to continue.
此时数据库是只读的,可以打开数据库查看数据是否恢复正确
还原目标服务器需要先安装与备份数据库相同版本的PostgreSQL
还原前需要先对被还原服务器做SSH免秘钥登录,否则还原将出错
恢复备份到指定时间点,可以大于当前时间,表示恢复到最新时间
barman recover --remote-ssh-command "ssh root@192.168.220.133" --target-time "2019-01-04 01:07:30" 133 20190103T232839 /home/pg
Postgres对还原的目标文件夹具备权限
chown -R postgres:postgres /home/pg
chmod -R 700 /home/pg
修改服务器配置文件postgresql.conf,检查以下配置
修改pg_hba.conf,设置合适的访问权限
检查Barman备份的streaming目录下是否有.partial后缀的文件,如果将该文件拷贝到恢复目录的pg_wal下,并删除.partial后缀
启动Postgres
查看Postgre日志,如出现以下内容,表示恢复到了指定的2019-01-04 01:07:30.563802+08时间点
2019-01-14 10:09:12 CST [30671]: [140-1] user=,db=,app=,client= LOG: recovery stopping before commit of transaction 23584393, time 2019-01-04 01:07:30.563802+08
2019-01-14 10:09:12 CST [30671]: [141-1] user=,db=,app=,client= LOG: recovery has paused
2019-01-14 10:09:12 CST [30671]: [142-1] user=,db=,app=,client= HINT: Execute pg_wal_replay_resume() to continue.
此时数据库是只读的,可以打开数据库查看数据是否恢复正确