使用repmgr搭建PostgreSQL主备:备节点克隆失败求助
解决repmgr备节点克隆失败:扩展未安装问题
问题根源
从错误信息和主节点检查结果来看:
- 主节点的
repmgr扩展仅处于可用状态(installed_version为空),并未实际安装到指定的repmgr数据库中 - 备节点克隆命令未明确指定连接的数据库,导致repmgr无法找到安装了扩展的目标库,报错
database "(null)"
解决步骤
1. 在主节点的repmgr数据库中安装扩展
登录主节点的PostgreSQL,执行以下操作:
# 以repmgr用户身份连接到repmgr数据库 psql -U repmgr -d repmgr
在psql交互界面中执行扩展安装命令:
CREATE EXTENSION repmgr;
验证安装结果:
SELECT extname, extversion FROM pg_extension WHERE extname = 'repmgr';
此时应该能看到extversion显示为5.3,说明扩展安装成功。
2. 修正备节点的克隆命令
在备节点执行克隆命令时,明确指定连接的数据库和用户(与主节点repmgr配置匹配):
/usr/pgsql-12/bin/repmgr -h master_ip -U repmgr -d repmgr standby clone
如果备节点已配置repmgr.conf文件,确保其中包含正确的连接参数:
conninfo='host=master_ip dbname=repmgr user=repmgr connect_timeout=2'
此时可以简化克隆命令为:
/usr/pgsql-12/bin/repmgr standby clone
3. 验证克隆是否成功
克隆完成后,在备节点启动PostgreSQL服务,然后执行:
/usr/pgsql-12/bin/repmgr standby register
再在主节点执行repmgr cluster show,应该能看到备节点已加入集群。
内容的提问来源于stack exchange,提问作者Oxycash
相关产品推荐
相关产品推荐

