MongoDB在Linux系统中的备份配置指南
/usr/bin/mongodump或/usr/local/mongodb/bin/mongodump)。可通过mongodump --version命令验证是否安装。若未安装,需先安装MongoDB工具包(如Ubuntu使用sudo apt-get install mongodb-org-tools,CentOS使用sudo yum install mongodb-org-tools)。/backup/mongodb),并确保MongoDB用户(通常为mongod或mongodb)有写入权限:sudo mkdir -p /backup/mongodb
sudo chown -R mongod:mongod /backup/mongodb # 根据实际用户调整
mongodump是MongoDB最常用的备份工具,支持全量备份、指定数据库/集合备份及压缩。
--out参数指定输出路径):mongodump --host 127.0.0.1 --port 27017 --out /backup/mongodb/$(date +%Y%m%d_%H%M%S)
其中$(date +%Y%m%d_%H%M%S)用于生成带时间戳的子目录(如20251027_143000),避免备份覆盖。mydb),添加--db参数:mongodump --host 127.0.0.1 --port 27017 --db mydb --out /backup/mongodb/$(date +%Y%m%d_%H%M%S)
mydb.users),添加--collection参数:mongodump --host 127.0.0.1 --port 27017 --db mydb --collection users --out /backup/mongodb/$(date +%Y%m%d_%H%M%S)
tar命令压缩备份目录:tar -czvf /backup/mongodb/mongodb_backup_$(date +%Y%m%d_%H%M%S).tar.gz -C /backup/mongodb $(date +%Y%m%d_%H%M%S)
压缩后可将原始备份目录删除(rm -rf /backup/mongodb/$(date +%Y%m%d_%H%M%S))。为确保定期备份,需使用Linux的cron工具设置定时任务。
crontab -e命令,添加以下行(以每天凌晨2点执行备份为例):0 2 * * * /usr/bin/mongodump --host 127.0.0.1 --port 27017 --out /backup/mongodb/$(date +\%Y\%m\%d_\%H\%M\%S) >> /var/log/mongodb_backup.log 2>&1
其中\%用于转义%符号(cron的特殊字符),>> /var/log/mongodb_backup.log 2>&1将备份日志追加到/var/log/mongodb_backup.log文件中。sudo systemctl restart crond # CentOS/RHEL
sudo systemctl restart cron # Ubuntu/Debian
为避免备份文件占用过多存储空间,需定期清理旧备份。可在备份脚本中添加find命令,删除指定天数前的备份:
# 保留最近7天的.tar.gz备份文件
find /backup/mongodb -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;
# 保留最近3天的原始备份目录(如20251027_143000)
find /backup/mongodb -type d -mtime +3 -exec rm -rf {} \;
chmod -R 750 /backup/mongodb)。gpg工具加密压缩文件:gpg -c /backup/mongodb/mongodb_backup_$(date +%Y%m%d_%H%M%S).tar.gz
加密后会生成.tar.gz.gpg文件,需妥善保管私钥。