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

mongodump执行触发panic问题求助(send on closed channel)

解决mongodump panic: send on closed channel 错误的思路

环境信息

  • MongoDB版本:4.2.11(副本集配置)
  • mongodump版本:
mongodump version: r4.2.24
git version: 5e4ec1d24431fcdd28b579a024c5c801b8cde4e2
Go version: go1.12.17
   os: linux
   arch: amd64
   compiler: gc
  • 执行命令:
mongodump --quiet  --dumpDbUsersAndRoles --authenticationDatabase=admin   --authenticationMechanism=SCRAM-SHA-256 --username <USERNAME> --password <PASSWORD> --host <HOST> --db sample-database --archive | aws s3 cp - s3://samplbucket/samplefld
  • 错误特征:每导出6个数据库触发一次panic,无固定触发数据库,堆栈指向archive.(*MuxIn).Open方法的通道发送错误。

解决建议

  • 对齐mongodump与MongoDB服务端版本:当前mongodump版本(4.2.24)与服务端(4.2.11)小版本差异较大,工具与服务端的兼容性问题可能引发内部并发通道异常。将mongodump降级至4.2.11版本,保持与服务端版本完全一致后重试。

  • 取消管道直接输出,改用本地临时文件中转:管道传输过程中,AWS S3端的连接波动、IO中断可能导致mongodump的归档输出通道被意外关闭,触发panic。修改流程为先导出到本地临时文件,再上传至S3:

# 导出到本地临时文件
mongodump --quiet --dumpDbUsersAndRoles --authenticationDatabase=admin --authenticationMechanism=SCRAM-SHA-256 --username <USERNAME> --password <PASSWORD> --host <HOST> --db sample-database --archive=/tmp/sample-db.archive
# 上传至S3
aws s3 cp /tmp/sample-db.archive s3://samplbucket/samplefld
# 清理临时文件
rm /tmp/sample-db.archive
  • 降低mongodump并发数:默认的并发导出设置可能导致内部通道竞争,引发提前关闭的问题。添加--numParallelCollections=1参数强制单并发导出,减少并发资源冲突:
mongodump --quiet --numParallelCollections=1 --dumpDbUsersAndRoles --authenticationDatabase=admin --authenticationMechanism=SCRAM-SHA-256 --username <USERNAME> --password <PASSWORD> --host <HOST> --db sample-database --archive | aws s3 cp - s3://samplbucket/samplefld
  • 启用详细日志排查前置异常:去掉--quiet参数,添加--verbose获取mongodump的详细运行日志,查看panic发生前是否存在连接断开、超时、IO错误等信息,定位是否由网络不稳定导致通道关闭。

  • 单个数据库独立导出:如果是批量导出多个数据库,改用脚本循环逐个执行mongodump命令,每个数据库对应独立的mongodump进程,避免单个进程处理多个库时出现的资源泄漏或通道状态异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:12:58