我们正准备将 repmgr 添加到现有的 Postgresql 9.3 两节点流复制集群中。
之前我们有一个严重的问题影响了我们的主要业务,问题是主从之间的延迟,我们通过调整配置解决了这个问题:
掌握 postgresql 配置:
archive_timeout = 60
synchronous_commit = on
synchronous_standby_names = 'slave1'
archive_command = 'test ! -f /walshare/%f && cp %p /walshare/%f'
从属recovery.conf:
standby_mode = 'on'
primary_conninfo = 'host=master port=5432 user=repuser password=xxx application_name=slave1'
restore_command = 'cp /walshare/%f "%p"'
slave1 通过 NFS 从 master 挂载 /walshare:
postgres@slave1:~$ mount -t nfs
master:/walshare on /walshare type nfs (rw,noatime,nolock,bg,nfsvers=4,intr,tcp,actimeo=1800,addr=xx.xx.xx.xx,clientaddr=xx.xx.xx.xx)
通过同步提交的激活,我们终于解决了主从之间的延迟问题。
不,我们想将当前集群重新配置为由 repmgr 管理,以便于管理任务和故障转移。
我已经创建了一个新的虚拟机(使用 PG-9.4)并计划将数据库从旧集群迁移到新集群。
为了避免 pg_xlog 磁盘空间问题,我决定将 pg_xlog 目录放在与 PGDATA 逻辑卷相同的卷组上的单独逻辑卷中。
/dev/mapper/datavg-pgsqllv mounted on /var/lib/pgsql
/dev/mapper/datavg-pgxloglv mounted on /var/lib/pgsql/9.4/data/pg_xlog
我的问题是:
- repmgr 是本机激活同步提交,还是应该在主 postgresql.conf 中手动添加它?
- 开启同步提交,如果slave没有响应,Master会失败,repmgr如何处理这种情况?
- 当 repmgr 创建新的从属(克隆主)时,它是否删除 /var/lib/pgsql/9.4/data/pg_xlog 并重新创建一个新的?
- 在同一个卷组上拥有 pgsqllv 和 pgxloglv 不会影响 I/O 性能?我应该为 pg_xlog 使用专用磁盘吗?
- 按照 repmgr 官方文档,wal_keep_segments = 5000 这需要 pg_xlog 需要 80 GB,80Gb 是固定的,或者我应该创建足够大的逻辑卷 100Gb 的最小空间,例如管理 pg_xlog 磁盘空间增长?
感谢您的帮助,