背景
场景:
- standby 临时开启读写后继续成为standby.
- standby 激活时老主库没有完全同步, 希望老的primary可以变成新主库的standby.
挑战:
- 传统方式, 需要重新拷贝整个数据库, 重建standby. 速度慢, 对当前主库的IO、网络冲击很大.
- 采用rsync的方式, 需要比对所有的数据文件, 找到变化的文件, 即使只是少量的字节变化也需要同步整个文件. 速度慢, 对当前主库的IO冲击很大.
PG解决方案:
- pg_rewind, 支持在线修复分裂, 只需解析并同步自分裂点以来老库的变化blocks. 速度快、对当前主库的IO、网络影响小.
例子
1、source, 配置checksum or wal_log_hints, 开启fpw
2、source, checkpoint
3、source, 创建user, 赋予权限,例子