仅用2台GCE通过mongomirror迁移MongoDB报源连接超时如何解决?
使用mongomirror迁移MongoDB报错排查方案
报错核心原因
报错的本质是mongomirror无法连接源MongoDB副本集的主节点,直接诱因有两个:
- 源副本集
rsMigration的内部成员配置异常:你在mongomirror命令中填写的源IP是正确的,但mongomirror连接源实例后会自动拉取副本集的成员配置列表,用列表内的地址尝试连接主节点,报错里显示的异常地址27017:27017、0.0.105.137就是副本集配置里填的错误地址,该地址在两台GCE的内网环境下不可达,导致连接超时。 - 次要可能原因包括GCE防火墙未放开MongoDB默认端口27017的内网互通权限、MongoDB服务仅绑定本地回环地址未监听内网IP。
排查解决步骤
- 优先修正源副本集成员配置:在源GCE实例上登录MongoDB shell,执行
rs.conf()查看成员配置,确认members数组下的host字段是否为源GCE可被对端访问的内网IP加27017端口,若为错误地址执行以下命令修改:
cfg = rs.conf() // 这里的0对应你副本集成员的索引,根据实际情况调整 cfg.members[0].host = "源GCE实际内网IP:27017" rs.reconfig(cfg)
- 验证GCE防火墙规则:确认GCP项目VPC的防火墙规则中,已放开两台GCE实例之间TCP 27017端口的入站、出站权限,源和目标地址范围填写两台GCE的内网IP。
- 检查MongoDB监听配置:查看源和目标实例的MongoDB配置文件(默认路径为
/etc/mongod.conf),确认bindIp参数值为0.0.0.0或对应实例的内网IP,不能仅设置为127.0.0.1,修改完成后重启MongoDB服务生效。 - 手动预验证连通性:在源GCE上先用Mongo shell测试副本集连接是否正常,执行命令
mongo --host rsMigration/源GCE内网IP:27017 -u root -p root123,确认可以正常登录并识别到主节点后,再重新执行mongomirror迁移命令。
内容的提问来源于stack exchange,提问作者Mohammed Sahil
相关产品推荐
相关产品推荐

