1.集群异常恢复节点方法
1)删除数据目录,重做异常节点
2) 通过pg_rewind尝试修复
对于数据量大的实例,使用方法1将会导致重做时间久,而pg_rewind是通过比较文件差异来拉取文件,适用于数据量较大,变化较小的异常场景恢复。
2.使用pg_rewind前提
1)开启full_page_writes
2)开启wal_log_hints或者初始化时开启checksums
3.具体实现
常用命令:pg_rewind -D /data/pg/data --source-server="hostaddr=127.0.0.1 user=repl port=5432"
pg_rewind是基于源节点和目标节点的分叉点(checkpoint),找到最近的一个一致性位点,并将源节点的wal文件同步过来,目标节点分叉的wal文件删除,以使得数据达到一致