三二互联专业提供速度最快最稳定的美国服务器、香港服务器。中美直连,亚洲优化![ 代理登陆 ] [ 付款方式 ] [ 找回密码 ][ 电子协议责任书 ]
硬件资源保障

采用高配品牌服务器

主流强悍CPU配置

确保服务高速稳定运行

中美直连线路

中美直连亚洲优化

采用中国CN2骨干网络

保证速度飞快稳定高效

如何备份和恢复MongoDB数据库?

美国、香港服务器

如何备份和恢复MongoDB数据库?

05-22   来源:

 在 MongoDB 中,备份和恢复数据库是保障数据安全的重要操作。以下是常见的备份恢复方法、工具及最佳实践:

一、备份方法
1. 使用 mongodump(逻辑备份)
bash
# 全量备份(默认localhost:27017)
mongodump --out /backup/mongo/$(date +%Y%m%d)
 
# 指定用户认证(需替换参数)
mongodump -u "admin" -p "password" --authenticationDatabase "admin" \
  --uri="mongodb://admin:password@localhost:27017/admin" \
  --out /backup/mongo/$(date +%Y%m%d)
 
# 备份指定数据库
mongodump --db mydb --out /backup/mongo/
 
# 备份指定集合
mongodump --db mydb --collection users --out /backup/mongo/
2. 文件系统快照(物理备份)
适用于 WiredTiger 存储引擎(MongoDB 3.2 + 默认):
 
bash
# 1. 冻结数据库(暂停写入)
mongo --eval "db.fsyncLock()"
 
# 2. 创建文件系统快照(如LVM、ZFS)
lvcreate --snapshot -n mongo_snap -L 10G /dev/mapper/volgroup-mongodata
 
# 3. 解锁数据库
mongo --eval "db.fsyncUnlock()"
 
# 4. 挂载快照并复制数据
mount /dev/mapper/volgroup-mongo_snap /mnt/snap/
cp -R /mnt/snap/ /backup/mongo/
3. 使用 MongoDB Cloud Manager
自动化备份解决方案(需订阅):
 
bash
# 配置备份策略(界面操作)
1. 登录Cloud Manager
2. 配置备份计划(频率、保留期)
3. 设置存储位置(AWS S3、Azure等)
二、恢复方法
1. 使用 mongorestore(逻辑恢复)
bash
# 从备份恢复到当前数据库
mongorestore /backup/mongo/20230101
 
# 指定目标数据库(可重命名)
mongorestore --db newdb /backup/mongo/20230101/mydb
 
# 恢复时不删除现有数据(追加模式)
mongorestore --drop /backup/mongo/20230101  # 先删除同名集合(默认否)
 
# 使用URI和认证恢复
mongorestore --uri="mongodb://admin:password@localhost:27017/admin" \
  --gzip /backup/mongo/20230101/
2. 恢复文件系统快照(物理恢复)
bash
# 1. 停止MongoDB服务
sudo systemctl stop mongod
 
# 2. 恢复数据文件
cp -R /backup/mongo_snap/ /var/lib/mongodb/
chown -R mongodb:mongodb /var/lib/mongodb/
 
# 3. 启动MongoDB
sudo systemctl start mongod
三、高级备份策略
1. 增量备份(结合 oplog)
bash
# 备份自上次备份以来的操作日志
mongodump --oplog --out /backup/mongo/oplog_backup
 
# 恢复时应用oplog
mongorestore --oplogReplay /backup/mongo/
2. 压缩备份
bash
# 备份时压缩(减小存储空间)
mongodump --gzip --out /backup/mongo/
 
# 恢复压缩备份
mongorestore --gzip /backup/mongo/
3. 定时备份脚本
bash
#!/bin/bash
BACKUP_DIR="/backup/mongo/$(date +%Y%m%d_%H%M)"
LOG_FILE="/var/log/mongodb/backup.log"
USER="admin"
PASSWORD="password"
URI="mongodb://$USER:$PASSWORD@localhost:27017/admin"
 
# 创建备份目录
mkdir -p $BACKUP_DIR
 
# 执行备份
mongodump --uri="$URI" --gzip --out $BACKUP_DIR >> $LOG_FILE 2>&1
 
# 删除7天前的备份
find /backup/mongo/ -type d -mtime +7 -exec rm -rf {} \; >> $LOG_FILE 2>&1
 
# 记录备份完成时间
echo "Backup completed at $(date)" >> $LOG_FILE
四、验证备份有效性
bash
# 1. 启动测试MongoDB实例
mongod --dbpath /tmp/test_mongo --port 27018
 
# 2. 恢复到测试实例
mongorestore --port 27018 /backup/mongo/20230101
 
# 3. 验证数据完整性
mongo --port 27018 --eval "db.users.countDocuments()"
五、最佳实践
定期备份:
关键业务数据:每日全量备份 + 每小时增量备份
非关键数据:每周全量备份
异地存储:
将备份文件存储到异地服务器或云存储(如 AWS S3、Azure Blob)
bash
# 使用AWS CLI同步备份
aws s3 sync /backup/mongo/ s3://my-mongo-backup/
 
监控与告警:
检查备份日志,确保备份成功
设置告警机制(如备份失败时发送邮件)
权限管理:
备份用户需具备backup和restore角色
javascript
use admin
db.createUser({
  user: "backupuser",
  pwd: "password",
  roles: [ { role: "backup", db: "admin" }, { role: "restore", db: "admin" } ]
})
 
六、常见问题
备份失败:连接被拒绝
bash
# 检查MongoDB服务是否运行
sudo systemctl status mongod
 
# 检查网络连接和防火墙
sudo ufw allow 27017/tcp
 
恢复时数据冲突
bash
# 使用--drop参数先删除现有集合
mongorestore --drop /backup/mongo/
 
大型数据库备份性能问题
bash
# 使用并行备份(MongoDB 4.4+)
mongodump --numParallelCollections=4 --out /backup/mongo/

三二互联专业提供香港VPS,美国VPS主机,香港云服务器租用等业务香港美国到大陆CN2 GIA速度最快

上一篇:如何在备份过程中加密MongoDB数据库? 下一篇:如何在Ubuntu24系统中安装和配置常用的数据库?

美国GIA服务器三二互联版权所有 WWW.250.cc 2008-2015 All Rights Reserved
三二互联 - 专业的美国C3服务器、香港vps、抗DOOS流量清洗、云备份系统、网站加速系统、美国GIA服务器和香港云服务器产品提供商
三二互联24小时在线工单系统为您提供全面、专业、周到的技术支持与服务
咨询热线:400-679-9994(免长话费)