1. 手动备份(使用mongodump工具)
mongodump是MongoDB自带逻辑备份工具,可导出指定数据库或集合的数据及元数据(如索引、用户权限)。基本命令示例:
mongodump --host localhost --port 27017 -u root -p 123456 --authenticationDatabase admin --out /backup/mongodbmongodump --db your_database --out /backup/mongodb/$(date +%Y%m%d)mongodump --db your_database --collection your_collection --out /backup/mongodb2. 定时自动备份(结合Crontab)
通过crontab设置定时任务,自动执行备份脚本,实现定期自动备份。步骤如下:
/home/crontab/mongod.sh),包含mongodump命令、压缩(tar -czvf)及过期备份清理(find /backup/mongodb -mtime +7 -delete,删除7天前备份)逻辑;chmod +x /home/crontab/mongod.sh;crontab -e,添加定时任务(如每天凌晨2点执行:0 2 * * * /home/crontab/mongod.sh)。3. 物理备份(使用Percona XtraBackup)
Percona XtraBackup是开源物理备份工具,直接复制MongoDB数据文件(如/var/lib/mongo),无需停止服务(支持热备份),适合大规模数据或对备份速度要求高的场景。步骤如下:
sudo yum install percona-xtrabackup-24;innobackupex --user=root --password=123456 --host=localhost --port=27017 /backup/mongodb;innobackupex --apply-log /backup/mongodb;innobackupex --copy-back /backup/mongodb(需停止MongoDB服务)。4. 增量备份(基于Oplog或rsync)
增量备份仅备份自上次备份以来变化的数据,节省存储空间和备份时间。常见方法:
mongodump);mongosh --eval 'db.oplog.rs.find().sort({$natural:-1}).limit(1).next().ts');mongodump --db local --collection oplog.rs --query '{"ts": {"$gt": Timestamp(上次时间戳, 1)}}' --out /backup/incremental)。rsync同步MongoDB数据目录(/var/lib/mongo)到备份目录,仅复制变化的文件:rsync -av --delete /var/lib/mongo/ /backup/mongodb/$(date +%Y%m%d)。5. Docker容器环境下的自动备份
若MongoDB部署在Docker容器中,可通过在容器内安装cron服务实现自动备份。步骤如下:
docker exec -it mongodb_container /bin/bash;yum install -y cronie;/backup/mongod.sh),内容同普通定时脚本;echo "0 2 * * * /backup/mongod.sh" > /etc/cron.d/mongod_cron;service cron start。6. 备份管理与验证
无论采用哪种备份策略,都需做好备份管理与验证:
find命令),节省存储空间;mongorestore --dryRun模拟恢复过程,检查备份文件的完整性和可恢复性(如mongorestore --dryRun /backup/mongodb/20250101)。