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数据库中的数据是否与备份时一致。