Ubuntu升级后PostgreSQL repmgr排序规则版本不匹配警告无法消除
解决方案
问题核心是仅在primary节点执行操作无法同步集群内所有节点,且REINDEX DATABASE未彻底重建所有依赖默认collation的对象。需按以下步骤全集群处理:
彻底重建primary节点的repmgr数据库
导出并重新创建数据库,确保所有对象使用当前系统的collation版本:# 备份repmgr数据库 pg_dump -d repmgr -f repmgr_backup.sql # 删除原数据库 dropdb repmgr # 重新创建数据库(自动继承系统当前collation) createdb repmgr # 导入备份数据 psql -d repmgr -f repmgr_backup.sql重置standby节点
Standby节点依赖primary的复制流,需重新克隆同步:# 停止standby节点的PostgreSQL服务 sudo systemctl stop postgresql # 清理原数据目录(提前备份重要数据) sudo rm -rf /var/lib/postgresql/<你的PostgreSQL版本>/main # 从primary节点克隆新的standby数据 repmgr standby clone -h <primary节点IP> -U repmgr -d repmgr # 启动PostgreSQL服务 sudo systemctl start postgresql # 重新注册到集群 repmgr standby register重建witness节点的repmgr数据库
Witness节点需重新创建数据库并注册:# 进入psql终端 psql -U postgres # 删除原repmgr数据库 dropdb repmgr # 重新创建数据库 createdb repmgr # 退出psql后重新注册witness repmgr witness register -h <primary节点IP> -U repmgr -d repmgr验证修复结果
在任意节点执行命令确认警告消失:repmgr cluster show
注意事项
- 操作前务必备份所有节点的数据库数据,防止数据丢失。
- 确保repmgr用户在所有节点拥有
SUPERUSER或足够的操作权限。 - 操作过程中集群会短暂不可用,建议在业务低峰期执行。
内容的提问来源于stack exchange,提问作者Duarte Petiz
相关产品推荐
相关产品推荐

