# 基本备份命令
mongodump --host <hostname> --port <port> --username <username> --password <password> --db <database> --out <backup_directory>
# 全量备份示例
mongodump --host localhost --port 27017 --out /backups/mongodb/full_$(date +%Y%m%d)
# 对于使用WiredTiger存储引擎的MongoDB
# 1. 开启文件系统快照功能
# 2. 执行db.fsyncLock()锁定写入
# 3. 创建快照
# 4. 执行db.fsyncUnlock()解锁
# 从secondary节点备份,减少对primary的影响
mongodump --host secondary-node.example.com --port 27017 --out /backups/mongodb
# 基本恢复命令
mongorestore --host <hostname> --port <port> --username <username> --password <password> --db <database> <backup_directory>
# 全量恢复示例
mongorestore --host localhost --port 27017 /backups/mongodb/full_20230101
# 结合oplog实现时间点恢复
mongorestore --oplogReplay --oplogLimit <timestamp> /backups/mongodb/full_backup
# 定期验证备份有效性
mongorestore --dryRun /backups/mongodb/latest_backup
#!/bin/bash
# MongoDB备份脚本
BACKUP_DIR="/backups/mongodb"
DATE=$(date +%Y%m%d)
HOST="localhost"
PORT="27017"
DB_NAME="your_database"
USER="admin"
PASSWORD="your_password"
# 创建备份目录
mkdir -p $BACKUP_DIR/$DATE
# 执行备份
mongodump --host $HOST --port $PORT --username $USER --password $PASSWORD --db $DB_NAME --out $BACKUP_DIR/$DATE
# 压缩备份
tar -zcvf $BACKUP_DIR/mongodb_backup_$DATE.tar.gz $BACKUP_DIR/$DATE
# 删除未压缩的备份
rm -rf $BACKUP_DIR/$DATE
# 保留最近7天备份
find $BACKUP_DIR -name "mongodb_backup_*.tar.gz" -mtime +7 -exec rm {} \;
# 记录日志
echo "$(date) - MongoDB备份完成" >> /var/log/mongodb_backup.log
通过以上方法,您可以有效保护MongoDB数据安全,确保在意外情况下能够快速恢复数据。