You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mongodump备份AWS 3节点MongoDB副本集时连接失败问题排查

AWS上MongoDB副本集mongodump连接问题排查

问题详情

在AWS部署3节点MongoDB副本集的备份策略时,执行mongodump遇到连接失败问题:

方式一:传统参数执行

执行命令:

mongodump --host="mydb/db1.myapp.co:27017,db2.myapp.co:27017,db3.myapp.co:27017" -o /home/ubuntu/db_backups/1 -d mydb--authenticationDatabase admin --username myself--password mypassword --ssl --sslCAFile=/home/ubuntu/mongotls/rootCA.pem --sslPEMKeyFile=/home/ubuntu/mongotls/mykey.pem

收到错误:

Failed: error connecting to db server: no reachable servers

方式二:URI方式执行

改用URI命令:

mongodump --uri="mongodb://myself:mypass@db1.myapp.co:27017,db2.myapp.co:27017,db3.myapp.co:27017/mydb?replicaSet=mydb&authSource=admin&ssl=true" -o /home/ubuntu/db_backups/  --sslPEMKeyFile=/home/ubuntu/mongotls/mykey.pem --sslCAFile=/home/ubuntu/mongotls/rootCA.pem

无返回信息,但主机尝试连接所有副本节点后立即断开,其中一个副本节点的mongod日志如下:

{"t":{"$date":"2023-02-05T12:54:29.297+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"122.11.24.98:39148","uuid":"ed692df4-8841-4211-8c66-1a8c1ab29b89","connectionId":23027,"connectionCount":12}}
{"t":{"$date":"2023-02-05T12:54:29.309+00:00"},"s":"I",  "c":"NETWORK",  "id":22944,   "ctx":"conn23027","msg":"Connection ended","attr":{"remote":"122.11.24.98:39148","uuid":"ed692df4-8841-4211-8c66-1a8c1ab29b89","connectionId":23027,"connectionCount":11}}
{"t":{"$date":"2023-02-05T12:54:29.850+00:00"},"s":"I",  "c":"NETWORK",  "id":22943,   "ctx":"listener","msg":"Connection accepted","attr":{"remote":"122.11.24.98:39160","uuid":"881a4b60-6883-4a7b-8fa9-becec0439140","connectionId":23028,"connectionCount":12}}
{"t":{"$date":"2023-02-05T12:54:29.882+00:00"},"s":"I",  "c":"NETWORK",  "id":22944,   "ctx":"conn23028","msg":"Connection ended","attr":{"remote":"122.11.24.98:39160","uuid":"881a4b60-6883-4a7b-8fa9-becec0439140","connectionId":23028,"connectionCount":11}}

排查步骤

  • 修复命令参数语法错误:第一个命令中-d mydb--authenticationDatabase缺少空格,正确写法应为-d mydb --authenticationDatabase,参数间的空格缺失会导致解析错误,直接引发连接失败。
  • 验证网络连通性:从执行mongodump的主机,用telnet db1.myapp.co 27017测试端口是否可通;用openssl s_client -connect db1.myapp.co:27017 -CAfile /home/ubuntu/mongotls/rootCA.pem验证SSL连接是否能正常建立,确认AWS安全组、NACL未拦截27017端口流量。
  • 检查SSL证书有效性:
    • 确认rootCA.pem和mykey.pem文件权限为600,避免权限过宽导致证书无法正常读取。
    • 检查证书是否在有效期内,mykey.pem是否包含完整的私钥和证书链,且与MongoDB节点信任的CA证书匹配。
  • 核对副本集配置与URI参数:
    • 登录MongoDB节点执行rs.status(),确认URI中replicaSet=mydb与实际副本集名称一致。
    • 若密码包含特殊字符(如@、:),需对密码进行URL编码后再写入URI,避免认证信息解析错误。
  • 获取mongodump详细日志:添加-v参数执行mongodump,获取更详细的连接、认证过程日志,定位具体失败环节:
mongodump --uri="mongodb://myself:mypass@db1.myapp.co:27017,db2.myapp.co:27017,db3.myapp.co:27017/mydb?replicaSet=mydb&authSource=admin&ssl=true" -o /home/ubuntu/db_backups/  --sslPEMKeyFile=/home/ubuntu/mongotls/mykey.pem --sslCAFile=/home/ubuntu/mongotls/rootCA.pem -v
  • 确认MongoDB节点配置:检查副本集节点mongod.conf中的security.authorization是否开启,net.ssl配置是否正确,若net.ssl.mode设置为requireSSL,需确保客户端证书被节点信任。

内容的提问来源于stack exchange,提问作者Taras Myronovich

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 16:16:06