Percona MongoDB HotBackup熱備份工具
成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比六安網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式六安網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋六安地區(qū)。費(fèi)用合理售后完善,10多年實(shí)體公司更值得信賴。前言:
目前官方MongoDB社區(qū)版是不支持Hot Backup熱備份的,我們只能通過mongodump等邏輯備份工具導(dǎo)出bson文件,再mongorestore導(dǎo)入,類似MySQL的mysqldump工具。
在備份副本集時(shí),我們需指定--oplog選項(xiàng)記錄備份間產(chǎn)生的增量數(shù)據(jù),類似mysqldump --single-transaction --master-data=2(做一致性快照并記錄當(dāng)前的binlog點(diǎn))。
對(duì)副本集的成員恢復(fù),需先切成單機(jī)版,mongorestore必須指定--oplogReplay選項(xiàng),以恢復(fù)到某一時(shí)刻的快照,最后還需填充oplog(增量數(shù)據(jù)以哪個(gè)位置點(diǎn)開始斷點(diǎn)續(xù)傳),mongorestore -d local -c oplog.rs dump/oplog.bson,最后一步再切為副本集成員重新啟動(dòng)。
中小型數(shù)據(jù)庫備份起來簡(jiǎn)單快捷,如果過TB級(jí)的數(shù)據(jù)量,那將是痛苦的。
如果你的oplog設(shè)置過小,很有可能在備份恢復(fù)這段時(shí)間,oplog被覆蓋重寫,那么你將永遠(yuǎn)無法加入副本集集群里。
概述:
Percona MongoDB3.2版本默認(rèn)開始支持WiredTiger引擎的在線熱備份,解決了官方版只能通過mongodump邏輯備份這一缺陷。
參考文獻(xiàn):
https://www.percona.com/doc/percona-server-for-mongodb/LATEST/hot-backup.html#hot-backup
注意事項(xiàng):
1、要在當(dāng)前dbpath中對(duì)數(shù)據(jù)庫進(jìn)行熱備份,請(qǐng)?jiān)赼dmin數(shù)據(jù)庫上以管理員身份運(yùn)行createBackup命令,并指定備份目錄。
2、可以替換一臺(tái)從庫為Percona MongoDB,做備份使用。(我這里實(shí)測(cè)是Percona MongoDB 3.4版本)
Percona MongoDB HotBackup熱備份原理:
你可以想象成xtrabackup工具
備份:
1、首先會(huì)啟動(dòng)一個(gè)后臺(tái)檢測(cè)的進(jìn)程,實(shí)時(shí)檢測(cè)MongoDB Oplog的變化,一旦發(fā)現(xiàn)oplog有新的日志寫入,立刻將日志寫入到日志文件WiredTiger.backup中(你可以strings WiredTiger.backup查看oplog操作日志的變化);
2、復(fù)制MongoDB dbpath的數(shù)據(jù)文件和索引文件到指定的備份目錄里。
......
恢復(fù):
1、將WiredTiger.backup日志進(jìn)行回放,將操作日志變更應(yīng)用到WiredTiger引擎里,最終得到一致性快照恢復(fù)。
2、把備份目錄里的數(shù)據(jù)文件直接拷貝到你的dbpath下,然后啟動(dòng)MongoDB即可,會(huì)自動(dòng)接入副本集集群。
這里我封裝了一個(gè)PHP腳本,直接在SHELL里運(yùn)行即可。
1、環(huán)境準(zhǔn)備:
shell> yum install -y php-pear php-devel php gcc openssl openssl-devel cyrus-sasl cyrus-sasl-devel
2、php-mongo驅(qū)動(dòng)安裝:
shell> pecl install mongo
把extension=mongo.so加入到/etc/php.ini最后一行。
3、創(chuàng)建mongodb超級(jí)用戶權(quán)限(備份時(shí)使用)
db.createUser({user:"admin",pwd:"123456",roles:[{role:"root",db:"admin"}]})
4、修改pmongo_bak.php配置信息
//修改下面的配置信息**//
$user = "admin"; //使用root用戶權(quán)限
$pwd = '123456';
$host = '192.168.180.26'; //在從庫上熱備
$port = '27017';
$authdb = 'admin'; //權(quán)限認(rèn)證數(shù)據(jù)庫
$BAKDIR = "/data/bak/";
$BAKDIR .= date('Y_m_d_H_i_s');
//下面的代碼不用修改**//
$m = new MongoBak($user,$pwd,$host,$port,$authdb,$BAKDIR);
......
5、前臺(tái)運(yùn)行:
shell> php pmongo_bak.php(以root權(quán)限運(yùn)行)
6、寫入系統(tǒng)crontab里
00 01 * * * /usr/bin/php /root/php_mongodb/pmongo_bak.php > /root/php_mongodb/bak_status.log 2 >&1
7、不支持遠(yuǎn)程備份,需將備份腳本部署在從庫里。如果你想把數(shù)據(jù)備份到遠(yuǎn)程,可以采用NFS等文件系統(tǒng)mount掛載上。
下載地址:
https://github.com/hcymysql/PMongo-HotBackup
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。