如何在Postgres-XL集群中创建Standby Server实现高可用
Postgres-XL 集群Standby Server创建操作步骤
1. 前置环境检查
- 确认现有主集群所有节点(GTM主、Coordinator主、Datanode主)状态正常,执行
pgxc_monitor确认所有节点状态为running - 确认Standby节点服务器的操作系统版本、依赖库配置、postgres用户权限与主集群节点完全一致,且与主集群所有节点网络互通,防火墙开放Postgres-XL服务端口(默认5432、6666等自定义端口)
- 停止Standby节点上所有正在运行的Postgres-XL相关进程,清空原有的数据目录(如果有残留部署)
2. 主集群配置修改
2.1 GTM主节点配置
- 编辑gtm.conf文件,新增/修改以下参数:
listen_addresses = '*' gtm_keepalives_idle = 60 gtm_keepalives_interval = 10 gtm_keepalives_count = 3
- 执行
pg_ctl reload -D [GTM主数据目录]加载配置
2.2 所有Coordinator、Datanode主节点配置
- 编辑每个节点的postgresql.conf,新增/修改以下参数:
wal_level = replica max_wal_senders = 10 wal_keep_size = 16GB hot_standby = on
- 编辑每个节点的pg_hba.conf,新增Standby节点的 replication 权限:
host replication all [Standby节点IP段]/32 trust
- 每个节点执行
pg_ctl reload -D [对应节点数据目录]加载配置
3. Standby节点基础备份
3.1 GTM Standby备份
- 切换到postgres用户,执行
pg_basebackup -h [GTM主节点IP] -p [GTM主端口] -D [GTM Standby数据目录] -U postgres -X stream -P - 备份完成后,在GTM Standby数据目录下创建standby.signal文件,写入
gtm_standby_mode = 'on' - 编辑GTM Standby的gtm.conf,新增参数:
primary_conninfo = 'host=[GTM主节点IP] port=[GTM主端口] user=postgres'
3.2 所有Coordinator、Datanode Standby备份
- 对每个主节点对应执行备份:
pg_basebackup -h [对应主节点IP] -p [对应主节点端口] -D [对应Standby数据目录] -U postgres -X stream -P - 每个Standby节点数据目录下创建standby.signal文件
- 编辑每个Standby节点的postgresql.conf,新增参数:
primary_conninfo = 'host=[对应主节点IP] port=[对应主节点端口] user=postgres'
4. 启动Standby集群节点
- 优先启动GTM Standby:
pg_ctl start -D [GTM Standby数据目录] -Z gtm_standby - 依次启动所有Datanode Standby:
pg_ctl start -D [Datanode Standby数据目录] -Z datanode_standby - 依次启动所有Coordinator Standby:
pg_ctl start -D [Coordinator Standby数据目录] -Z coordinator_standby
5. 状态验证
- 执行
pgxc_monitor确认所有Standby节点状态为standby running - 在主集群任意Coordinator节点写入测试数据,验证Standby节点可正常同步
- 测试手动切换逻辑,确认主节点故障时Standby可正常提升为新主
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

