做视频网站服务器多少钱,桂林技术交流站,公司简介模板表格,做网站费用上海1、环境
centos 7系统 postgresql 12 docker 20.10.6
2、整体思路
1#xff09;进行一个pgdata目录的全量备份
2#xff09;通过wal日志恢复到故障发生之前某个时间点
3、操作步骤
配置postgresql.conf文件
#日志级别
wal_level replica
#归档开关
archive_mode on
…1、环境
centos 7系统 postgresql 12 docker 20.10.6
2、整体思路
1进行一个pgdata目录的全量备份
2通过wal日志恢复到故障发生之前某个时间点
3、操作步骤
配置postgresql.conf文件
#日志级别
wal_level replica
#归档开关
archive_mode on
#归档命令
archive_command cp %p /home/archive/%f echo %f /home/archive/archive.list
#用于指定pg_wal目录中保存的过去的wal文件wal 段的最小数量
wal_keep_segments1024重启pg 4、查看归档目录
此后数据库的操作都会记录wal日志文件到/home/archive目录下
ls /home/archive/
000000010000000000000001 000000010000000000000002 000000010000000000000003 000000010000000000000004 archive.list如果归档目录中没有内容需要执行强制日志归档命令
select pg_switch_wal();如果还是没有查看数据库日志 如果报错cpcan not create XXX permission denied 给创建的归档目录授权777 然后再次重启 并查看 日志 看该报错是否消失 如果消失则再去查看归档目录 看是否有上面类似内容 如果没有 则执行强制归档命令select pg_switch_wal();
chmod 777 /home/archive5、使用pg_basebackup进行基础备份
pg_basebackup
/usr/local/pgsql/bin/pg_basebackup -h 127.0.0.1 -U postgres -p 5432 -Ft -Pv -Xf -z -Z5 -D /home/pgdata_bk
备份完成后对应备份目录会出现基础备份 是一个压缩包
准备试验数据
在2022-03-10 16:40:00 创建表dog 并随意插入几条数据 等待适当时间在16:43:00创建表cat 并随意插入几条数据 恢复时间点 2022-03-10 16:42:00 创建两张表之间的时间点就行 如果恢复后数据库中存在dog表不存在cat表 则试验成功
模拟数据库故障
模拟数据库故障停掉数据库
备份原来的data目录
cp -r _data data_bk ##备份目录rm -rf _data/* #删除原来data目录内容cp /home/pgdata_bk/base.tar.gz _data/ #将备份的压缩包复制到data目录中并解压
tar -zxvf base.tar.gzrm -rf base.tar.gz #删除备份修改postgresql.conf
设置归档命令和恢复时间点 设置恢复时间点的时候要注意时区问题
restore_command cp /home/archive/%f %p /home/archive/recovery.log 21
recovery_target_time 2022-03-10 16:42:00添加空白文件recovery.signal文件
data目录添加文件 提醒postgresql要做recovery
touch recovery.signal重启查看数据
查看数据是否符合预期 恢复后的数据库为只读模式 需要执行
select pg_wal_replay_resume()可能遇到的问题
1pg_basebackup 操作FATAL: no pg_hba.conf entry for replication connection from host
在pg_hba.cnf中 单单指明 local all postgres 127.0.0.1/32 md5 不够 还需添加 host replication all 127.0.0.1/32 md5
参考
https://www.cnblogs.com/zhenren001/p/15956270.html 链接https://www.jianshu.com/p/a492706238a6