EDB Postgres Replication Server添加数据库连接报控制器数据库未初始化如何解决
EDB Postgres Replication Server SMR搭建控制器数据库未初始化报错排查方案
报错信息:Database connection cannot be added. Controller database is not initialized yet
1. 验证控制数据库初始化状态
绝大多数该报错是因为完成Publication Server配置后,遗漏了控制数据库的显式初始化步骤:
- 切换到EDB默认运行用户:
su - enterprisedb - 执行控制库初始化命令:
java -jar /usr/edb/xdb/lib/edb-xdb-common.jar initializeController - 初始化完成后连接到你指定的控制数据库执行:
\d xdb.*,如果能查询到xdb_ctl_publication、xdb_ctl_subscription等核心表则初始化成功。
注意:如果执行初始化命令报错提示模式已存在,先在控制库执行
DROP SCHEMA xdb CASCADE;清理残留对象后再重新执行初始化命令。
2. 验证Publication Server运行状态与配置一致性
- 检查Publication Server服务状态:
systemctl status edb-xdbpubserver,确保服务处于active (running)状态,无异常报错日志 - 核对
/etc/edb/xdb/pubserver.properties配置文件中控制库相关参数:- xdb.controller.db.host=控制库所在节点IP
- xdb.controller.db.port=控制库端口(EDB Advanced Server默认5444)
- xdb.controller.db.user=控制库连接用户名
- xdb.controller.db.password=对应连接密码
- xdb.controller.db.database=控制库数据库名
- 在订阅节点手动测试控制库连通性:
psql -h <控制库IP> -p <控制库端口> -U <控制库用户名> <控制库名>,排除防火墙、pg_hba.conf拦截等网络问题。
3. 验证Subscription Server配置
- 打开订阅节点配置文件
/etc/edb/xdb/subserver.properties,确认控制数据库相关参数和pubserver.properties中的配置完全一致,无拼写、IP/端口填写错误 - 重启订阅服务使配置生效:
systemctl restart edb-xdbsubserver,重启后查看/var/log/edb/xdb/subserver.log确认无控制库连接报错。
4. 验证控制库权限
确认控制库的连接用户拥有xdb模式的全量权限,在控制库中执行以下命令赋权:
GRANT ALL ON SCHEMA xdb TO <你的控制库连接用户>; GRANT ALL ON ALL TABLES IN SCHEMA xdb TO <你的控制库连接用户>;
测试阶段可直接使用enterprisedb超级用户作为控制库连接用户,快速排除权限问题。
内容的提问来源于stack exchange,提问作者Mark Davidson
相关产品推荐
相关产品推荐

