pg故障修复记录

一个线上实例,用户数据大概300g 400g的样子,由于用户自己修改了最大连接数,超过了我们设置的合理范围,导致自动恢复失败,现在需要我们手动搭建起来新的主从关系。
但是在搭建的过程中,出现了两个比较麻烦的问题。

第一个问题:主节点不能正确恢复数据
我们把pgbackrest.conf配置文件中的oss路径改成源pg实例的路径,通过pgbackrest restore进行按时间点恢复。这种恢复方法需要先找到距离本次恢复时间点最近的一次全量备份,然后再把之后到该时间点(包括该时间点)的所有wal日志下载到本地,然后启动pg服务就可以了。
然而由于数据量比较大,恢复需要一定时间,在恢复的过程中,源实例做了一次自动全量备份(每天晚上自动备份),导致连续的wal日志出现了如下图所示的.backup的备份文件。
在这里插入图片描述
按照我的理解,这个.backup文件应该没有什么影响,但是本次全量备份做了大概有40分钟。目标实例在下载wal日志的时候中断在此了。。。
具体原因也不知道为什么,准备在其他的非生产实例上测试一下这个.backup文件是否会影响wal日志的下载。
这个问题相对好解决,我们通过pg_waldump定位到了需要的wal日志范围,pgbackrest archive-get命令把需要的wal日志都下载到本地,然后启动pg服务就可以了。

第二个问题:主从不能正常搭建
我们使用的主从搭建的工具是repmgr,这个工具大家应该都比较熟悉,一般就是用repmgr或者patroni来进行pg主从的搭建。先注册主节点,然后从节点clone,再register就可以了,按理说没什么难度。但是从节点注册之后,就比主节点多了一条timeline。
在这里插入图片描述
对了,刚开始的时候还注册不成功,我在从节点的data目录下手动创建了standby.signal,重启pg服务之后可以注册了。但是主从关系还是不对。
查了很多资料,卡了2天,但是没有解决。。。
直接说最后的解决方法吧。我把主节点的pgbackrest配置文件中的oss修改成当前实例,重建了stanza,修改了archive-command,然后又执行了一遍clone和register就成功了0.0.
感觉是和这个archive-command有关系,之前由于恢复把这个命令改成了/bin/true,忘记改回来了。后面改成pgbackrest archive-push,就成功了。其他的修改感觉用处不大。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值