在 Debian 系统上备份 MongoDB,常见做法有 mongodump、文件系统快照、复制集延迟节点 等。下面按常用程度给你一个完整、可操作的方案。
mongodump 备份(推荐新手/通用)Debian 12+ 默认可能未安装 mongodump:
sudo apt update
sudo apt install mongodb-database-tools
或去官方下载: https://www.mongodb.com/try/download/database-tools
mongodump --out /data/backup/mongo/$(date +%F)
默认备份:
127.0.0.1:27017mongodump \
--host 127.0.0.1 \
--port 27017 \
--username admin \
--password '密码' \
--authenticationDatabase admin \
--db mydb \
--out /data/backup/mongo/$(date +%F)
✅ 生产环境建议用 --authenticationDatabase admin
mongodump --archive=/data/backup/mongo/mongo_$(date +%F).archive --gzip
恢复时:
mongorestore --archive=/data/backup/mongo/mongo_2026-01-21.archive --gzip
mongorestore /data/backup/mongo/2026-01-21
或指定数据库:
mongorestore --db mydb /data/backup/mongo/2026-01-21/mydb
--oplog(推荐)适用于 副本集
mongodump --oplog --out /data/backup/mongo/full
恢复:
mongorestore --oplogReplay /data/backup/mongo/full
✅ 可保证时间点一致性
适合 停机或锁定写操作
systemctl stop mongod
cp -a /var/lib/mongodb /data/backup/mongo/snap
systemctl start mongod
或使用 LVM:
lvcreate --size 1G --snapshot --name mongo-snap /dev/vg0/mongo
✅ 速度快
❌ 需要文件系统支持
#!/bin/bash
BACKUP_DIR=/data/backup/mongo
DATE=$(date +%F)
mongodump --out $BACKUP_DIR/$DATE
find $BACKUP_DIR -type d -mtime +7 -exec rm -rf {} \;
chmod +x /usr/local/bin/mongo_backup.sh
crontab -e
每天凌晨 2 点执行:
0 2 * * * /usr/local/bin/mongo_backup.sh
/data/backup/mongo/
├── 2026-01-20
├── 2026-01-21
└── latest -> 2026-01-21
Authentication failed
✅ 确认用户权限:
db.getUser("admin")
✅ 使用:
mongodb-database-tools
| 场景 | 推荐 |
|---|---|
| 单机 / 小项目 | mongodump |
| 副本集 | mongodump + --oplog |
| 大数据量 | 文件系统快照 |
| 定时备份 | cron + mongodump |
如果你愿意,我可以:
你可以直接贴:
mongo --eval "rs.status()"