MongoDB 4 命令行导入导出操作指南

一、概述

本指南介绍如何在 MongoDB 4 环境中使用命令行工具进行数据导入与导出,包括:

  • mongodump / mongorestore(适用于 BSON 全量备份恢复)
  • mongoexport / mongoimport(适用于 JSON/CSV 数据导入导出)

适用于日常运维、数据迁移、备份恢复等场景。


二、工具说明

工具用途
mongodump导出数据库(BSON格式)
mongorestore导入数据库(BSON格式)
mongoexport导出集合(JSON/CSV)
mongoimport导入集合(JSON/CSV)

三、mongodump(导出)

1. 导出整个数据库

mongodump -h 127.0.0.1 -P 27017 -u username -p password --authenticationDatabase admin -d test -o /data/backup/

说明:

  • -d:指定数据库
  • -o:导出目录

2. 导出指定集合

mongodump -h 127.0.0.1 -d test -c users -o /data/backup/

3. 导出所有数据库

mongodump -h 127.0.0.1 -o /data/backup_all/

4. 压缩导出(推荐)

mongodump -h 127.0.0.1 -d test --archive=/data/backup.gz --gzip

四、mongorestore(导入)

1. 恢复整个数据库

mongorestore -h 127.0.0.1 -P 27017 -u username -p password --authenticationDatabase admin -d test /data/backup/test

2. 恢复指定集合

mongorestore -d test -c users /data/backup/test/users.bson

3. 覆盖原数据(危险操作)

mongorestore --drop -d test /data/backup/test

说明:

  • –drop:恢复前删除原集合

4. 从压缩文件恢复

mongorestore --archive=/data/backup.gz --gzip

五、mongoexport(导出 JSON/CSV)

1. 导出为 JSON

mongoexport -h 127.0.0.1 -d test -c users -o users.json

2. 导出为 CSV

mongoexport -d test -c users --type=csv -f name,age,email -o users.csv

说明:

  • -f:指定字段

3. 条件导出

mongoexport -d test -c users -q '{"age": {"$gt": 30}}' -o users.json

六、mongoimport(导入 JSON/CSV)

1. 导入 JSON

mongoimport -d test -c users --file users.json

2. 导入 CSV

mongoimport -d test -c users --type=csv --headerline --file users.csv

3. 覆盖导入

mongoimport -d test -c users --drop --file users.json

4. 批量模式(高性能)

mongoimport -d test -c users --file users.json --numInsertionWorkers 4

七、认证参数说明

-u 用户名
-p 密码
--authenticationDatabase admin

示例:

mongodump -h 127.0.0.1 -u root -p 123456 --authenticationDatabase admin -d test -o /backup

八、常见问题

1. 认证失败

检查:

  • 用户名密码是否正确
  • 是否指定 authenticationDatabase

2. 字符编码问题

建议统一使用 UTF-8:

export LANG=en_US.UTF-8

3. 性能优化建议

  • 使用 –gzip 压缩
  • 使用 –numParallelCollections(mongodump)
  • 使用 –numInsertionWorkers(mongoimport)

九、生产建议

  • 定期备份(cron + mongodump)
  • 保留多版本备份
  • 测试恢复流程
  • 使用压缩减少存储

十、示例:定时备份脚本

#!/bin/bash

DATE=$(date +%F)
BACKUP_DIR="/data/mongo_backup/$DATE"

mkdir -p $BACKUP_DIR

mongodump -h 127.0.0.1 -u root -p 123456 \
--authenticationDatabase admin \
--gzip --archive=$BACKUP_DIR/backup.gz

# 删除7天前备份
find /data/mongo_backup/ -mtime +7 -exec rm -rf {} \;

总结

  • 全量备份:mongodump / mongorestore
  • 数据交换:mongoexport / mongoimport
  • 推荐:压缩 + 定时任务 + 多副本备份
此条目发表在初始分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注