使用Mongomirror同步Atlas实例至本地Mongo副本集时遭遇连接与证书校验错误求助
Mongomirror目的地连接故障排查方案
1. TLS证书相关校验排查
- 替换
--sslCAFile为绝对路径:mongomirror 0.11.1存在相对路径解析缺陷,不会基于运行工作目录拼接相对路径,会直接读取不到CA文件,导致信任链校验失败,报x509: certificate signed by unknown authority错误。 - 确认服务端证书的SAN字段同时覆盖
localhost、192.168.0.23:mongomirror 0.11.1基于Go 1.14编译,--tlsInsecure仅跳过主机名校验,不会完全跳过CA信任链校验,和Robo3T完全跳过所有证书校验的逻辑不同,因此会出现同CA下Robo3T可连接、mongomirror不可用的情况。 - 临时验证可移除
--sslCAFile参数,仅保留--tlsInsecure执行连接,若此时可正常连接,说明确实是CA文件加载或格式问题。
2. 无TLS场景连接超时排查
- 确认mongomirror运行环境的网络可达性:若mongomirror运行在独立docker容器中,
localhost指向容器自身回环地址,而非宿主机mongo服务,会直接导致连接超时,需替换为宿主机可被mongomirror所在环境访问的IP地址。 - 替换目的地参数为副本集连接串格式:移除裸
host:port格式,使用mongodb://<ip>:<port>/?replicaSet=rs0作为--destination的入参,可消除版本对无副本集标识的单地址拓扑识别缺陷。 - 确认端口连通性:检查mongomirror运行环境与本地mongo节点的27017/27018/27019端口无防火墙拦截。
3. 调试日志获取方法
- mongomirror 0.11.1无内置verbose参数,可通过Go运行时调试环境变量输出底层连接细节,执行命令前增加环境变量即可获取TLS握手、TCP连接的全流程日志:
GODEBUG=http2debug=1 mongomirror [原有参数]
4. 已知版本兼容注意事项
- 若使用多层CA签发证书,需将根CA、所有中间CA按PEM格式顺序拼接后传入
--sslCAFile,该版本不自动加载CA链中间节点。 - 测试单节点场景时,需先将mongo服务调整为standalone模式运行,否则mongomirror会按副本集协议握手,直接被服务端拒绝导致连接超时。
内容的提问来源于stack exchange,提问作者Arman
相关产品推荐
相关产品推荐

