MongoDB备份策略在Linux环境中的应用
mongodump是MongoDB官方提供的逻辑备份工具,可将数据库或集合数据导出为BSON格式文件,支持灵活的备份选项;mongorestore则用于恢复备份数据,是mongodump的配套工具。
mydb
数据库到/backup/mongodb
目录:mongodump --db mydb --out /backup/mongodb
;备份mydb
中的users
集合:mongodump --db mydb --collection users --out /backup/mongodb
。--gzip
选项减少备份文件体积,节省存储空间。例如:mongodump --db mydb --out /backup/mongodb --gzip
。--username
、--password
和--authenticationDatabase
参数。例如:mongodump --host localhost --port 27017 --username admin --password 123456 --authenticationDatabase admin --out /backup/mongodb
。mongorestore
恢复备份。例如,恢复mydb
数据库到测试环境:mongorestore --db test /backup/mongodb/mydb
;恢复users
集合:mongorestore --db mydb --collection users /backup/mongodb/mydb/users.bson
。通过Linux的crontab
工具设置定时任务,实现定期自动备份,避免人工遗漏。
/data/backup/mongodb_backup.sh
,内容如下:#!/bin/bash
BACKUP_DIR="/backup/mongodb"
DATE=$(date +%Y%m%d%H%M%S)
mkdir -p $BACKUP_DIR/$DATE
mongodump --out $BACKUP_DIR/$DATE --gzip
tar -czvf $BACKUP_DIR/$DATE.tar.gz $BACKUP_DIR/$DATE
rm -rf $BACKUP_DIR/$DATE
echo "$(date): Backup completed: $BACKUP_DIR/$DATE.tar.gz" >> /var/log/mongodb_backup.log
赋予执行权限:chmod +x /data/backup/mongodb_backup.sh
。crontab
(sudo crontab -e
),添加以下行实现每天凌晨2点执行备份:0 2 * * * /data/backup/mongodb_backup.sh
。增量备份仅备份自上次备份以来变化的数据,节省存储空间和备份时间。
mongodump --oplog --out /backup/mongodb_incremental
,该命令会导出oplog并生成增量备份。rsync
工具同步数据目录,仅复制变化的文件。例如:rsync -avz --delete /var/lib/mongodb/ /backup/mongodb_incremental/
,其中--delete
选项会删除目标目录中源目录不存在的文件,保持同步。物理备份是直接复制MongoDB数据目录(默认/var/lib/mongodb
)的文件,恢复速度快,适合大规模数据。
sudo systemctl stop mongod
。sudo cp -r /var/lib/mongodb /backup/mongodb_physical
。sudo systemctl start mongod
。第三方工具提供更高级的功能(如增量备份、压缩、加密、云存储集成),适合企业级需求。
rsync
将备份同步到远程服务器:rsync -avz /backup/mongodb/ user@remote:/remote/backup/mongodb/
。find
命令删除旧备份,节省存储空间。例如,删除7天前的备份文件:find /backup/mongodb -type f -mtime +7 -exec rm {} \;
。echo "$(date): Backup started" >> /var/log/mongodb_backup.log
,mongodump ... >> /var/log/mongodb_backup.log 2>&1
。Prometheus
+Grafana
监控备份进程,设置告警规则(如备份失败时发送邮件/短信通知),及时处理问题。定期测试备份文件的完整性,确保在灾难发生时能成功恢复数据。
/backup/mongodb/20250901.tar.gz
),解压:tar -xzvf /backup/mongodb/20250901.tar.gz
。mongorestore --db test_restore /backup/mongodb/20250901
。test_restore
数据库中的数据是否与备份时一致。