千家信息网

Percona MongoDB HotBackup热备份工具

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,Percona MongoDB HotBackup热备份工具前言:目前官方MongoDB社区版是不支持Hot Backup热备份的,我们只能通过mongodump等逻辑备份工具导出bson文件,再mo
千家信息网最后更新 2026年11月01日Percona MongoDB HotBackup热备份工具

Percona MongoDB HotBackup热备份工具


前言:

目前官方MongoDB社区版是不支持Hot Backup热备份的,我们只能通过mongodump等逻辑备份工具导出bson文件,再mongorestore导入,类似MySQL的mysqldump工具。


在备份副本集时,我们需指定--oplog选项记录备份间产生的增量数据,类似mysqldump --single-transaction --master-data=2(做一致性快照并记录当前的binlog点)。


对副本集的成员恢复,需先切成单机版,mongorestore必须指定--oplogReplay选项,以恢复到某一时刻的快照,最后还需填充oplog(增量数据以哪个位置点开始断点续传),mongorestore -d local -c oplog.rs dump/oplog.bson,最后一步再切为副本集成员重新启动。


中小型数据库备份起来简单快捷,如果过TB级的数据量,那将是痛苦的。


如果你的oplog设置过小,很有可能在备份恢复这段时间,oplog被覆盖重写,那么你将永远无法加入副本集集群里。


概述:

Percona MongoDB3.2版本默认开始支持WiredTiger引擎的在线热备份,解决了官方版只能通过mongodump逻辑备份这一缺陷。


参考文献:

https://www.percona.com/doc/percona-server-for-mongodb/LATEST/hot-backup.html#hot-backup


注意事项:

1、要在当前dbpath中对数据库进行热备份,请在admin数据库上以管理员身份运行createBackup命令,并指定备份目录。

2、可以替换一台从库为Percona MongoDB,做备份使用。(我这里实测是Percona MongoDB 3.4版本)


Percona MongoDB HotBackup热备份原理:

你可以想象成xtrabackup工具


备份:

1、首先会启动一个后台检测的进程,实时检测MongoDB Oplog的变化,一旦发现oplog有新的日志写入,立刻将日志写入到日志文件WiredTiger.backup中(你可以strings WiredTiger.backup查看oplog操作日志的变化);

2、复制MongoDB dbpath的数据文件和索引文件到指定的备份目录里。

......


恢复:

1、将WiredTiger.backup日志进行回放,将操作日志变更应用到WiredTiger引擎里,最终得到一致性快照恢复。

2、把备份目录里的数据文件直接拷贝到你的dbpath下,然后启动MongoDB即可,会自动接入副本集集群。



这里我封装了一个PHP脚本,直接在SHELL里运行即可。

1、环境准备:

shell> yum install -y php-pear php-devel php gcc openssl openssl-devel cyrus-sasl cyrus-sasl-devel


2、php-mongo驱动安装:

shell> pecl install mongo

把extension=mongo.so加入到/etc/php.ini最后一行。


3、创建mongodb超级用户权限(备份时使用)

db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})


4、修改pmongo_bak.php配置信息

//修改下面的配置信息**//

$user = "admin"; //使用root用户权限

$pwd = '123456';

$host = '192.168.180.26'; //在从库上热备

$port = '27017';

$authdb = 'admin'; //权限认证数据库

$BAKDIR = "/data/bak/";

$BAKDIR .= date('Y_m_d_H_i_s');

//下面的代码不用修改**//

$m = new MongoBak($user,$pwd,$host,$port,$authdb,$BAKDIR);

......


5、前台运行:

shell> php pmongo_bak.php(以root权限运行)


6、写入系统crontab里

00 01 * * * /usr/bin/php /root/php_mongodb/pmongo_bak.php > /root/php_mongodb/bak_status.log 2 >&1


7、不支持远程备份,需将备份脚本部署在从库里。如果你想把数据备份到远程,可以采用NFS等文件系统mount挂载上。


下载地址:

https://github.com/hcymysql/PMongo-HotBackup





备份 数据 文件 日志 工具 副本 数据库 权限 运行 快照 目录 支持 备份工具 一致 一致性 信息 增量 官方 引擎 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 天津市摩尔互联网科技 上海睿民互联网科技有限公司 新华互联网科技学院 万易互联网科技有限公司 狮子座互联网科技有限公司 融贸通互联网科技 互联网金融科技委员会 玖二柒互联网科技公司待遇 深圳前海聚择互联网科技有限公司 互联网教育科技公司vipkid 互联网科技中介 福建科技产业互联网发展 2021互联网科技公司排名 元气玛特互联网科技公司是外包吗 富国互联网科技002692 有人说阿里系是互联网科技企业 互联网科技手抄报图片 杭州融税互联网科技有限公司 数字科技和互联网金融哪个好 如何强化互联网金融科技 互联网 科技创新 互联网科技公司官网 互联网科技革命 互联网科技论坛 互联网科技大会 中国科技互联网公司收入 本届互联网博览会上的黑科技 伍佰万互联网科技怎么赚钱 互联网风格科技公司名称 北京军民互联网科技公司
0