MongoDB副本集跨数据中心新增节点停留在startup状态无法同步问题
MongoDB副本集跨地域新增节点卡在startup状态排查方案
1. 基础配置一致性检查
- 确认新节点的
mongod.conf中replication.replSetName参数值和美区现有副本集名称完全一致,该参数大小写敏感,拼写错误会直接导致节点卡在startup状态 - 确认新节点
net.bindIp未绑定127.0.0.1,必须允许副本集所有成员IP访问,可设置为0.0.0.0配合安全组规则控制访问范围 - 检查所有节点
security.keyFile的文件内容、存储路径、权限完全一致,keyFile权限必须为600、属主为mongod运行用户,权限异常会导致节点间鉴权失败,无法进入同步流程
2. 副本集添加命令校验
- 添加数据节点时不要误设置
arbiterOnly: true,添加仲裁节点必须明确指定arbiterOnly: true、priority: 0、votes: 1 - 标准添加命令示例:
// 添加AWS侧数据节点,初期建议priority设为0,避免同步未完成被选举为主节点 rs.add({host: "aws-data-node:27017", priority: 0, votes: 1}) // 添加AWS侧仲裁节点 rs.addArb("aws-arbiter-node:27017")
注意:执行添加操作必须在副本集主节点上执行,从节点执行添加命令不生效
3. 日志定位根因
登录新节点查看mongod运行日志,默认路径为/var/log/mongodb/mongod.log,搜索replSet、error、denied关键字快速定位问题:
- 出现
replSet authentication failed报错:为keyFile配置或权限错误 - 出现
replSet name mismatch报错:为副本集名称配置不一致 - 出现
couldn't connect to [节点IP]报错:即使端口telnet正常,也需要确认MongoDB层面IP白名单、安全组是否允许所有节点27017端口双向通信 - 出现
oplog too old报错:美区主节点oplog保留时间小于跨地域同步需要的时长,需要先临时调大主节点oplog大小再重新添加节点
4. MongoDB 4.0版本特定问题排查
- 确认所有节点MongoDB小版本完全一致,4.0.14之前的版本存在跨小版本添加成员的兼容性BUG,会导致同步无法启动
- 确认新节点数据目录为空,没有遗留旧副本集数据,存在旧数据会导致节点无法加入新副本集
内容的提问来源于stack exchange,提问作者Siddharth Shankar M
相关产品推荐
相关产品推荐

