千家信息网

MongoDB Hot Backup 测试及痛点

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,Percona MongoDB Hot Backup 测试及痛点前言Part1:写在最前Percona MongoDB 支持Hot Backup,解决了MongoDB官方版本只能使用mongodump
千家信息网最后更新 2026年10月31日MongoDB Hot Backup 测试及痛点


Percona MongoDB Hot Backup 测试及痛点

前言

Part1:写在最前

Percona MongoDB 支持Hot Backup,解决了MongoDB官方版本只能使用mongodump的情况。mongodump在小库中还好,量上来后,备份恢复都是痛苦的。本文就MongoDB hot backup 备份中的一个bug进行复现和解决。


实战

Part1:限制

在Percona MongoDB3.2.12版本之前,在进行物理热备份时,如果配置文件中配置了

directoryPerDB: true

directoryForIndexes: true

这两个参数的话,那么在执行备份的时候会爆出错误:

[root@HE1 bin]#./mongo 127.0.0.1:27020/adminMongoDB shellversion: 3.2.11-3.1 connecting to:127.0.0.1:27020/admin heleitest:PRIMARY>use adminswitched to db adminheleitest:PRIMARY>db.runCommand({createBackup: 1, backupDir: "/home/work/backup"}){ "ok" : 0, "errmsg" : "boost::filesystem::copy_file: No such file or directory:\"/home/mongodb/data/admin/collection/11-6714811575794894766.wt\",\"/home/work/backup/admin/collection/11-6714811575794894766.wt\""}



Part2:痛点

这个问题会很头痛,比如生产库中,MongoDB库越来越大,促使我们计划采用hot backup方案,由于起先的库开启了这个方式,那么临时的解决方案是什么样的呢?

It may be useful to simply let a secondary initial sync with those options off, then you could take a hot backup again to populate all the other nodes. This is not a solution but a path to get the production system back into a state you can use the backups. please note this assume production is built to best practices and is in a replica-set and not a stand alone mongod process.

意思是在我们MongoDB常规的复制集中,如果想要备份这个库,那么首先要下掉一个Secondary,清空数据目录进行重新复制,这个过程会非常缓慢和复杂。如果仅仅是重启数据库的话,会起不来报错,原因是已经开启了多路径存储数据和索引独立存储这两个选项,而现有版本的hotbackup是不支持这样的备份方式的。



Part3:方案

好在Percona版本响应给力,在贺春旸老师提出该Bug后,官方在3.2.12-3.2版本便修正了这一问题,使得hot backup的痛点得以解决,例如,原先我需要重新对集群进行关闭参数,导出导入数据,这无疑是一个巨大的工作量,同时会让数据库可靠性在不短的时间内都处于较低状态。而现在,我们仅仅要做的就是升级数据库,这一问题就能够得到解决。



Part4:复现

[root@HE1 bin]# ./mongo 127.0.0.1:27020/adminPercona Server for MongoDB shell version: 3.2.12-3.2connecting to: 127.0.0.1:27020/admin heleitest:PRIMARY> db.runCommand({createBackup: 1, backupDir: "/home/work/backup"}){ "ok" : 1 }


我这里先对之前的3.2.11-3.1版本进行一个升级,如何升级MongoDB数据库可参考:

http://suifu.blog.51cto.com/9167728/1947035

同时,配置文件中配置了

directoryPerDB: true

directoryForIndexes: true

可以看到,在3.2.12-3.2版本中,备份是没有任何异常的。



Part5:校验

我们来看下3.4最新版是否也是正常的

[root@HE1 bin]# ./mongo 127.0.0.1:27020/adminPercona Server for MongoDB shell version v3.4.4-1.4connecting to: mongodb://127.0.0.1:27020/adminPercona Server for MongoDB server version: v3.4.4-1.4heleitest:PRIMARY> db.runCommand({createBackup: 1, backupDir: "/home/work/backup"}){ "ok" : 1 }


可以看到,最新版也没有问题。



Part6:官方日志

#PSMDB-123: Fixed the creation of proper subdirectories inside the backup destination directory


贺春旸老师提交的jira

https://jira.percona.com/browse/PSMDB-123


--总结--

感谢贺春旸老师的bug提交,感谢Percona团队高效的修复速率,开源,让世界更美好~由于笔者的水平有限,编写时间也很仓促,文中难免会出现一些错误或者不准确的地方,不妥之处恳请读者批评指正。


备份 数据 版本 数据库 问题 配置 痛点 官方 方案 老师 升级 两个 参数 同时 文件 方式 时间 最新版 错误 存储 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖南永感互联网科技有限公司 互联网科技工作委员会副主任毛军 互联网科技巨头监管 A股互联网金融科技公司 互联网科技社 广州互联网科技公司 互联网金融 金融科技 万易互联网科技有限公司 狮子座互联网科技有限公司 互联网科技美容 农村开互联网科技讲堂 团飞科技与伯堂互联网服务平台 米聚互联网科技南京有限公司排面 玉溪新华互联网科技好不好 南博望互联网科技有限公司 互联网科技公司营业执照怎么办理 工业互联网展湾科技股份有限公司 高科技互联网套路 互联网科技平台产品运营 绵阳真晨互联网科技有限公司 上海喔噻互联网科技有限公司 伟宏互联网科技 深圳恒合互联网络科技有限公司 广州互联网科技公司 奇酷互联网科技公司 互联网科技宣传片 居家互联网科技有限公司 互联网金融中的现代科技 易租星互联网科技有限公司 互联网科技自媒体灵感
0