安装工具
确保已安装mongodb-org-tools(含mongodump和mongorestore):
sudo apt update && sudo apt install -y mongodb-org-tools
全量备份
mongodump --host localhost --port 27017 --out /path/to/backup/full_$(date +%Y%m%d)
tar -czvf /path/to/backup/full_$(date +%Y%m%d).tar.gz /path/to/backup/full_$(date +%Y%m%d)
增量备份
基于oplog备份自上次全量备份后的变更(需启用副本集):
mongodump --host localhost --port 27017 --since "2025-01-01T00:00:00Z" --out /path/to/backup/incremental
自动化备份(Cron脚本)
创建定时任务,例如每日凌晨2点备份:
# 编辑crontab
crontab -e
# 添加以下内容(需替换为实际路径和用户)
0 2 * * * /usr/local/bin/mongodb_backup.sh >> /var/log/mongodb_backup.log 2>&1
脚本示例(含压缩和删除旧备份):
#!/bin/bash
BACKUP_DIR="/backups/mongodb"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR
mongodump --out $BACKUP_DIR/$DATE
tar -czvf $BACKUP_DIR/$DATE.tar.gz $BACKUP_DIR/$DATE
rm -rf $BACKUP_DIR/$DATE
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -exec rm {} \;
全量恢复
mongorestore --host localhost --port 27017 /path/to/backup/full_20250819
增量恢复
先恢复全量备份,再重放oplog:
mongorestore --oplogReplay /path/to/backup/incremental
恢复单个数据库/集合
mongorestore --db mydb /path/to/backup/mydb
mongorestore --db mydb --collection users /path/to/backup/mydb/users
注意事项
sudo systemctl stop mongod
sudo systemctl start mongod
mongorestore --dryRun模拟恢复)。