掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
文檔數(shù)據(jù)庫(kù)服務(wù)是云服務(wù)商重要的數(shù)據(jù)庫(kù)服務(wù)產(chǎn)品之一,而數(shù)據(jù)庫(kù)的備份與恢復(fù)功能是數(shù)據(jù)庫(kù)容災(zāi)重要且必不可少的手段。文檔數(shù)據(jù)庫(kù)云服務(wù)提供了數(shù)據(jù)庫(kù)的備份與恢復(fù)功能,但我們要了解其背后的機(jī)制,文檔數(shù)據(jù)庫(kù)服務(wù)采用的是開(kāi)源的mongoDB,自然就要先從mongoDB數(shù)據(jù)庫(kù)的備份和恢復(fù)機(jī)制入手。
mongoDB的數(shù)據(jù)庫(kù)備份恢復(fù)機(jī)制主要有兩種,

創(chuàng)新互聯(lián)是專業(yè)的衡山網(wǎng)站建設(shè)公司,衡山接單;提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì),網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行衡山網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
一是使用自帶的mongodump&mongorestore工具;
二是基于數(shù)據(jù)文件的備份和恢復(fù)。
現(xiàn)簡(jiǎn)要闡述如下:
注意當(dāng)恢復(fù)數(shù)據(jù)時(shí),mongorestore不會(huì)刪除數(shù)據(jù), 所以如果恢復(fù)的是當(dāng)前的數(shù)據(jù)庫(kù)實(shí)例, 就確保使用-drop 標(biāo)記執(zhí)行。
對(duì)于ES,我并沒(méi)有在實(shí)際項(xiàng)目中應(yīng)用(自己研究過(guò),沒(méi)有實(shí)戰(zhàn)過(guò));我們項(xiàng)目使用的是MongoDB;由于項(xiàng)目的特殊性,我們研究了很多關(guān)于A->B的數(shù)據(jù)同步方案,包括DB2/Mysql到MongoDB,MongoDB到MongoDB等等。
把MySQL的數(shù)據(jù)實(shí)時(shí)同步到ES,這樣可以實(shí)現(xiàn)在ES中低延遲的檢索,有些公司的項(xiàng)目做了分庫(kù),可以單獨(dú)搭建一套ES來(lái)放全量的數(shù)據(jù)(或全量數(shù)據(jù)的部分字段,達(dá)到全量檢索的效果),常用的數(shù)據(jù)同步實(shí)現(xiàn)方案有這些:
MySQL Binlog:MySQL的Binlog日志可以用于數(shù)據(jù)庫(kù)的主從復(fù)制、數(shù)據(jù)恢復(fù),也可以將MySQL的數(shù)據(jù)同步給ES;這里需要注意,Binlog的日志模式只能使用ROW模式(另外兩種模式是STATEMENT和MIXED);解析Binlog日志中的內(nèi)容,執(zhí)行ES Document API,這樣就可以將數(shù)據(jù)同步到ES中;
MySQL dump:如果是新建的項(xiàng)目,使用Binlog做數(shù)據(jù)同步是沒(méi)有問(wèn)題的,但如果MySQL已經(jīng)運(yùn)行了一段時(shí)間,項(xiàng)目架構(gòu)中后增加的ES,那么歷史數(shù)據(jù)的遷移就要額外處理了,因?yàn)锽inlog可能已經(jīng)被覆蓋了。這時(shí)候歷史數(shù)據(jù)的同步,可以使用mysqldump對(duì)現(xiàn)有數(shù)據(jù)導(dǎo)出,之后再使用Binlog的方式;
開(kāi)源工具:前兩種方式都是在數(shù)據(jù)庫(kù)日志這個(gè)級(jí)別做文章,我們還可以使用一些開(kāi)源工具,比如go-mysql-elasticsearch;它可以幫助我們完成第一次全量數(shù)據(jù)同步,后續(xù)增量數(shù)據(jù)同步的工作(底層也是解析Binlog日志);又或者mypipe,它支持將Binlog日志內(nèi)容解析后推送到Kafka,如果要寫入到ES中,還需要寫額外的代碼從Kafka中消費(fèi)數(shù)據(jù)寫入ES。
上面提過(guò),我們項(xiàng)目中是將關(guān)系型數(shù)據(jù)庫(kù)DB2/Mysql中的數(shù)據(jù)同步到MongoDB中,Mysql尚且還能使用Binlog日志,DB2想要把變化的數(shù)據(jù)實(shí)時(shí)通知出來(lái),實(shí)現(xiàn)起來(lái)比較困難(寫程序部署到DB2服務(wù)器上,要和數(shù)據(jù)庫(kù)做關(guān)聯(lián)配置,當(dāng)數(shù)據(jù)發(fā)生變化,程序發(fā)送MQ通知給外圍系統(tǒng)),先不說(shuō)性能是否能保證,就是“自己寫一個(gè)通知程序部署到數(shù)據(jù)庫(kù)所在服務(wù)器上(有侵入)”,這一點(diǎn)至少在我們公司是無(wú)法做到的。
到此,以上就是小編對(duì)于mongodb導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)的問(wèn)題就介紹到這了,希望這2點(diǎn)解答對(duì)大家有用。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流