加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

dba+器材:MongoDB热备份器材,办理官方版备份缺陷

发布时间:2018-12-13 22:03:35 所属栏目:编程 来源:贺春旸
导读:媒介 今朝官方MongoDB社区版是不支持Hot Backup热备份的,我们只能通过mongodump等逻辑备份器材导出bson文件,再mongorestore导入,相同MySQL的mysqldump器材。 在备份副本集时,我们需指定--oplog选项记录备份间发生的增量数据,相同mysqldump --single-t

dba+器材:MongoDB热备份器材,办理官方版备份缺陷

媒介

今朝官方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 MongoDB 3.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器材

备份:

  • 起首会启动一个靠山检测的历程,及时检测MongoDB Oplog的变革,一旦发明oplog有新的日记写入,立即将日记写入到日记文件WiredTiger.backup中(你可以strings WiredTiger.backup查察oplog操纵日记的变革);
  • 复制MongoDB dbpath的数据文件和索引文件到指定的备份目次里;
  • ......

规复:

  • 将WiredTiger.backup日记举办回放,将操纵日记改观应用到WiredTiger引擎里,,最终获得同等性快照规复;
  • 把备份目次里的数据文件直接拷贝到你的dbpath下,然后启动MongoDB即可,会自动接入副本集集群。

运行

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

1、情形筹备:

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

2、php-mongo驱动安装:

  1. shell> pecl install mongo 

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

3、建设mongodb超等用户权限(备份时行使)

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

4、修改pmongo_bak.php设置信息

  1. //*************修改下面的设置信息***************//  
  2. $user = "admin"; //行使root用户权限  
  3. $pwd = '123456';   
  4. $host = '192.168.180.26'; //在从库上热备  
  5. $port = '27017';  
  6. $authdb = 'admin'; //权限认证数据库  
  7. $BAKDIR = "/data/bak/";  
  8. $BAKDIR .= date('Y_m_d_H_i_s');  
  9.  
  10. //*************下面的代码不消修改***************//  
  11. $m = new MongoBak($user,$pwd,$host,$port,$authdb,$BAKDIR);  
  12. ...... 

5、前台运行:

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

6、写入体系crontab里

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

7、不支持长途备份,需将备份剧本陈设在从库里。假如你想把数据备份到长途,可以回收NFS等文件体系mount挂载上。

【编辑保举】

  1. 黑客进攻数据库的六大本领
  2. 2018年12月环球数据库排行榜:Oracle惨不忍睹!
  3. 免费电子书|MongoDB入门到实践
  4. 记一次出产数据库"不测"重启的经验
  5. ERP技能全打仗:数据库、编程和前端技能
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读