在 CentOS 上备份 MongoDB,最常用、官方推荐的方式是使用 mongodump。下面按常见场景给你一个完整说明。
mongodump 备份(推荐)如果只是备份,不需要完整 MongoDB,只要安装工具包即可。
sudo yum install -y mongodb-org-tools
sudo dnf install -y mongodb-org-tools
如果未配置 MongoDB YUM 源,可以先配置(示例 MongoDB 6):
cat <<EOF | sudo tee /etc/yum.repos.d/mongodb-org.repo
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/\$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
EOF
mongodump --host 127.0.0.1 --port 27017 -u 用户名 -p 密码 --authenticationDatabase admin --out /data/backup/mongodb/$(date +%F)
✅ 示例(本地无密码):
mongodump --out /data/backup/mongodb/$(date +%F)
✅ 备份指定数据库:
mongodump --db mydb --out /data/backup/mongodb/$(date +%F)
✅ 备份指定集合:
mongodump --db mydb --collection users --out /data/backup/mongodb/$(date +%F)
mongodump --db mydb --archive=/data/backup/mongodb/mydb_$(date +%F).gz --gzip
✅ 优点:
mongorestore --host 127.0.0.1 --port 27017 -u 用户 -p 密码 --authenticationDatabase admin /data/backup/mongodb/2026-01-21
或恢复 gzip 文件:
mongorestore --archive=/data/backup/mongodb/mydb_2026-01-21.gz --gzip
如果是生产环境,建议:
mongodump --host secondary_ip --port 27017 --out /backup
crontab -e
每天凌晨 2 点备份:
0 2 * * * /usr/bin/mongodump --archive=/data/backup/mongo_$(date +\%F).gz --gzip
mkdir -p /data/backup/mongodb
chown -R mongod:mongod /data/backup/mongodb
| 方式 | 说明 |
|---|---|
| 文件系统快照 | 需要 LVM / 云磁盘快照 |
| 复制 dbPath | 必须停服,不推荐 |
| MongoDB Atlas | 云托管自动备份 |
mongodump 不会锁库✅ 可以,MongoDB 支持热备份
mongodump --archive=/data/backup/mongo_$(date +%F).gz --gzip
如果你愿意,可以告诉我:
我可以帮你定制一套 CentOS 生产级备份方案 ✅