作者:瀚高PG实验室 (Highgo PG Lab)-天蝎座
将 archive_mode 设置成 off 时,依然能搭建成功流复制环境,而网上大多数资料都是将该参数设置成 on。
的确,在配置PostgreSQL流复制时,我们通常开启 archive_mode,但并不一定会配置archive_command shell脚本归档 WAL,因为 PostgreSQL 的归档非常大,而且保留归档WAL需要很大的存储空间,当然有条件的情况下建议开启并且设置保留策略。
接下来测试下,版本 PostgreSQL 9.5.7,关于流复制的搭建不再过多介绍,另外不同的是 archive_mode 参数设置成 off,并且注释 archive_command 参数,分以下两种情况测试:
测试一:
以开启 archive_mode 方式搭建流复制环境,搭建完成后更改主库,备库的 achive_mode
参数为 off,并重启服务; 测试结果:流复制正常。
测试二:
重新搭建流复制环境,并且搭建时关闭主库,备库的 archive_mode 参数(off)。
测试结果:流复制正常。结论: 根据以上测试,似乎说明在搭建流复制环境时,并不必须设置 archive_mode 参数为 on ,很多资料在介绍搭建流复制环境时设置这个参数为 on ,可能是出于开启 WAL归档更安全的原因,因为在主库宕机并且较长时间不能恢复时,从库依然可以读取归档目录的 WAL,从而保证不丢数据; 另一方面,如果主库使用了复制槽,也可以不用开启 archive_mode,因为主库保留了足够的 WAL,从而大大降低了因从库所需要的 WAL 被主库覆盖而需要从归档去取 WAL 的情况。所以从这方面说,archive_mode 参数的设置与搭建流复制并没有直接关系。
提示:
对于比较繁忙的库,在搭建流复制从库时,建议使用复制槽。