1 异常现象
从主机添加内存维护操作,由于维护过程时间比较长,导致pg wal已经归档,pg wal目录的wal已经清理掉,从节点无法接受到对于的wal日志,PAF自动修复重建从库的方案失败
2 根本原因
pg_wal保留日志数量太少,导致同步异常需要手工重建
3 解决方案
3.1 长期方案
调整wal_keep_segments参数,保留足够多wal在pg_wal目录,比如128,或者256
3.2 命令重建从节点方法(常规做法)
3.2.1 异常节点执行,清理节点和目录
pg_autoctl drop node --pgdata /kingdee/postgres/pg_data –destroy
3.2.2 重建
pg_autoctl create postgres --hostname 10.0.43.21 --auth trust --no-ssl --monitor 'postgres://autoctl_node@10.0 .43.22:5433/pg_auto_failover?sslmode=prefer'
3.3 手动重建从节点方法(特殊做法)
如果上面命令执行有问题,可以采用下面的方法清理,特殊情况下才手工清理
比如下面的情况,执行create无法成功,一直重复备份恢复
3.3.1清除异常node节点
异常节执行
pg_autoctl drop node --pgdata /kingdee/postgres/pg_data –destroy
monitor节点执行
pg_autoctl drop node --name=node_1 --force
3.3.2清理掉pg_autoctl show file 里面的配置目录
rm -rf /home/postgres/.config/pg_autoctl
rm -rf /home/postgres/.local/share/pg_autoctl
3.3.3清理pg_data数据
rm -rf $PGDATA
3.3.4执行重做异常从节点
pg_autoctl create postgres --hostname 10.0.43.21 --auth trust --no-ssl --monitor 'postgres://autoctl_node@10.0 .43.22:5433/pg_auto_failover?sslmode=prefer'