MongoDB数据备份
MongoDB 数据备份核心要点
1. 备份方式
逻辑备份:使用
mongodump导出 BSON 文件,适合小数据量,但可能影响性能。物理备份:利用 LVM 或云盘快照直接复制底层文件,速度快,适合大型集群。
云数据库:推荐使用云厂商的自动备份、按时间点恢复(PITR)及跨地域容灾功能。
2. 备份策略
结合“全量备份”与“增量/差异备份”,并通过
cron等工具实现定时自动化。务必配置异地容灾备份,防止物理灾难。
3. 关键注意事项
副本集一致性:备份时必须加
--oplog参数,防止数据不一致。分片集群一致性:物理快照需在同一时刻对所有分片和配置服务器进行。
定期验证:必须定期将备份恢复到测试环境,验证其完整性与可恢复性。
备份的区别
备份前准备
下载安装mongodump
# 下载
wget https://fastdl.mongodb.org/tools/db/mongodb-database-tools-rhel70-x86_64-100.9.0.tgz
# 解压下载的包
tar -zxvf mongodb-database-tools-rhel70-x86_64-100.9.0.tgz
# 进入解压后的目录
cd mongodb-database-tools-rhel70-x86_64-100.9.0
# 将工具复制到你的 MongoDB 安装目录的 bin 下
cp bin/* /usr/local/mongodb/bin/查看当前集群状态
mongosh 192.168.7.101:27017
rs.status()确认从节点(建议在从节点备份,不影响主节点)
# 连接从节点(推荐在 192.168.7.102 上执行备份)
mongosh 192.168.7.102:27017
# 确保数据完整性一致性
rs.setReadPref("primaryPreferred")三种备份方式
方式一:全量备份(备份所有数据库)
mongodump --host 192.168.7.102:27017 \
--out /data/backup/mongodb_backup_$(date +%Y%m%d_%H%M%S)参数说明:
示例: 备份完成后会在 /data/backup/ 下生成目录 mongodb_backup_20260721_111458
方式二:备份指定数据库
mongodump --host 192.168.7.102:27017 \
--db zhuzi \
--out /data/backup/mongodb_backup_$(date +%Y%m%d_%H%M%S)参数说明:
方式三:备份指定集合(表)
mongodump --host 192.168.7.102:27017 \
--db zhuzi \
--collection test \
--out /data/backup/mongodb_backup_$(date +%Y%m%d_%H%M%S)参数说明:
备份时带上日志(推荐)
适用于副本集: 添加 --oplog 参数保证数据一致性
mongodump --host 192.168.7.102:27017 \
--oplog \
--out /data/backup/mongodb_with_oplog_$(date +%Y%m%d_%H%M%S)备份压缩(节省空间)
# 备份并压缩
mongodump --host 192.168.7.102:27017 \
--out /data/backup/backup_$(date +%Y%m%d) \
--gzip
# 或备份后打包
mongodump --host 192.168.7.102:27017 \
--out /data/backup/temp_backup
tar -czf /data/backup/backup_$(date +%Y%m%d).tar.gz /data/backup/temp_backup
rm -rf /data/backup/temp_backup恢复数据
完整恢复(恢复所有数据)
mongorestore --host 192.168.7.101:27017 /data/backup/mongodb_backup_20260721_111458恢复指定数据库
mongorestore --host 192.168.7.101:27017 \
--db zhuzi \
/data/backup/mongodb_backup_20260721_111458/zhuzi恢复指定集合
mongorestore --host 192.168.7.101:27017 \
--db zhuzi \
--collection test \
/data/backup/mongodb_backup_20260721_111458/zhuzi/test.bson恢复带 oplog 的备份(保持数据一致性)
mongorestore --host 192.168.7.101:27017 \
--oplogReplay \
/data/backup/mongodb_backup_20260721_111458恢复数据验证
# 连接数据库查看
mongosh 192.168.7.101:27017
# 查看恢复的数据库
show dbs
# 切换到恢复的库
use zhuzi
# 查询数据
db.test.find()在本地机器操作远程数据库
备份和恢复都可以在单台机器上操作,而且非常灵活。
注意事项
原创
MongoDB数据备份
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法