ubuntu 16.04 下 postgresql 9.5 的 one primary and one standby(hot_standby) 部署配置

primary

添加replication用户

  • sudo -u postgres psql
  • CREATE USER rep REPLICATION CONNECTION LIMIT 30 ENCRYPTED PASSWORD 'rep-user-password'; 用户名可自定义

编辑 pg_hba.conf

  • 追加 host replication rep standby-private-ip/32 md5

编辑 postgresql.conf

listen_addresses = 'localhost,primary-private-ip'
max_connections = 610  # 客户端连接数+max_wal_senders
wal_level = hot_standby
max_wal_senders = 50
wal_keep_segments=200
hot_standby = on

重启 postgresql 服务

  • 如果用 apt 安装并用 systemd 部署,则执行 sudo systemctl restart postgresql@9.5-main.service

standby (hot_standby)

停止 postgresql 服务

  • 如果用 apt 安装并用 systemd 部署,则执行 sudo systemctl stop postgresql@9.5-main.service

生成初始数据

  • sudo mv /var/lib/postgresql/9.5/main /var/lib/postgresql/9.5/main.old
  • sudo -u postgres pg_basebackup -h primary-private-ip -D /postgres/data -U rep -v -P --xlog-method=stream
  • Password: (使用rep user的密码)

编辑 postgresql.conf

listen_addresses = 'localhost,standby-private-ip'
max_connections = 610 # 和primary保持一致
wal_level = hot_standby # 和primary保持一致
max_wal_senders = 50 # 和primary保持一致
wal_keep_segments=200 # 和primary保持一致
hot_standby = on # 和primary保持一致

recovery.conf

  • sudo cp /usr/share/postgresql/9.5/recovery.conf.sample /postgres/data/recovery.conf
  • sudo chown postgres:postgres /postgres/data/recovery.conf
  • 编辑 recovery.conf
    • sudo vi /postgres/data/recovery.conf
    • 修改相应的配置项
      standby_mode = on
      primary_conninfo = 'host=primary-private-ip port=5432 user=rep password=rep-user-password'
      

启动 postgresql 服务

  • sudo chmod 700 /postgres/data
  • 如果用 apt 安装并用 systemd 部署,则执行 sudo systemctl start postgresql@9.5-main.service

trouble shooting

wal_keep_segments

  • wal_keep_segments 要足够大,否则会造成standby server中断同步数据

max_connections

  • max_connections 要根据 max_wal_senders 做调整

standby如何提升为primary

当 primary 宕机后,提升 standby 继续提供服务

  • 命令格式 pg_ctl promote [-D datadir]
  • 参考形式 sudo su postgres -c "/usr/lib/postgresql/9.5/bin/pg_ctl promote -D /var/lib/postgresql/9.5/main" -- 注意数据路径可能不同

其他注意事项

  • 要配置日志,便于排查问题。

  • primary and standby 的 postgresql.conf 除部分配置项不能相同外,其他尽量保持一致。便于后期维护,特别是当需要提升standby为primary时。

  • primary and standby 部署的机器和操作系统尽量保持一致。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容