成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從爐石傳說(shuō)數(shù)據(jù)庫(kù)故障談?wù)凪ongoDB的數(shù)據(jù)庫(kù)備份和恢復(fù)手段

大數(shù)據(jù) MongoDB
我們的MongoDB服務(wù)擁有完善的自動(dòng)備份/恢復(fù)功能,靈活的備份策略,好用的恢復(fù)到任意時(shí)間點(diǎn)功能。我們的備份存放了多份副本,可靠性達(dá)10個(gè)9,請(qǐng)大家放心使用!

看到這個(gè)消息,我的***反應(yīng)是重新翻出塵封已久的ipad,裝上爐石準(zhǔn)備上線(xiàn)領(lǐng)補(bǔ)償。等等,作為一個(gè)數(shù)據(jù)庫(kù)行業(yè)從業(yè)人員,是不是還應(yīng)該干點(diǎn)什么?恩,很有必要再重新審視一下我們的數(shù)據(jù)庫(kù)有沒(méi)有做好容災(zāi),否則,今天你看別人熱鬧,明天可能就別人看你熱鬧了。借此機(jī)會(huì)我想給大家普及一下MongoDB數(shù)據(jù)庫(kù)的備份和恢復(fù)手段(當(dāng)然爐石傳說(shuō)應(yīng)該不一定是使用MongoDB作為數(shù)據(jù)庫(kù)),以幫助大家做好容災(zāi),過(guò)個(gè)好年。同時(shí),我也為我們阿里云MongoDB服務(wù)做下廣告,我們的MongoDB服務(wù)擁有完善的自動(dòng)備份/恢復(fù)功能,靈活的備份策略,好用的恢復(fù)到任意時(shí)間點(diǎn)功能。我們的備份存放了多份副本,可靠性達(dá)10個(gè)9,請(qǐng)大家放心使用!

MongoDB數(shù)據(jù)庫(kù)備份手段

全量邏輯備份/恢復(fù)

Mongodump/Mongorestore

對(duì)于數(shù)據(jù)量比較小的場(chǎng)景,使用官方的mongodump/mongorestore工具進(jìn)行全量的備份和恢復(fù)就足夠了。mongodump可以連上一個(gè)正在服務(wù)的mongod節(jié)點(diǎn)進(jìn)行邏輯熱備份。其主要原理是遍歷所有集合,然后將文檔一條條讀出來(lái),支持并發(fā)dump多個(gè)集合,并且支持歸檔和壓縮,可以輸出到一個(gè)文件(或標(biāo)準(zhǔn)輸出)(對(duì)原理感興趣可以參見(jiàn)我之前寫(xiě)的兩篇文章Mongodump的archive(歸檔)模式原理解析以及Mongorestore的archive(歸檔)模式恢復(fù)原理解析)。同樣,mongorestore則是連上一個(gè)正在服務(wù)的mongod節(jié)點(diǎn)進(jìn)行邏輯恢復(fù)。其主要原理是將備份出來(lái)的數(shù)據(jù)再一條條寫(xiě)回到數(shù)據(jù)庫(kù)中。

對(duì)性能的影響

mongodump執(zhí)行過(guò)程由于會(huì)遍歷所有數(shù)據(jù),因此會(huì)對(duì)MongoDB性能有影響,***在備節(jié)點(diǎn)執(zhí)行(***是hidden,需檢查備節(jié)點(diǎn)數(shù)據(jù)同步是否正常)。

獲取一致的數(shù)據(jù)快照

在mongodump執(zhí)行過(guò)程中由于數(shù)據(jù)庫(kù)還有新的修改,直接運(yùn)行dump出來(lái)的結(jié)果不是一個(gè)一致的快照,需要使用一個(gè)『–oplog』的選項(xiàng)來(lái)將這個(gè)過(guò)程中的oplog也一塊dump下來(lái)(使用mongorestore進(jìn)行恢復(fù)時(shí)對(duì)應(yīng)要使用–oplogReplay選項(xiàng)對(duì)oplog進(jìn)行重放)。而由于MongoDB的oplog是一個(gè)固定大小的特殊集合,當(dāng)oplog集合達(dá)到配置的大小時(shí)舊的oplog會(huì)被滾掉以為新的oplog騰出空間。在使用『–oplog』選項(xiàng)進(jìn)行dump時(shí),mongodump會(huì)在dump集合數(shù)據(jù)前獲取當(dāng)時(shí)***的oplog時(shí)間點(diǎn),并在集合數(shù)據(jù)dump完畢之后再次檢查這個(gè)時(shí)間點(diǎn)的oplog是否還在,如果dump過(guò)程很長(zhǎng),oplog空間又不夠,oplog被滾掉就會(huì)dump失敗。因此在dump前***檢查一下oplog的配置大小以及目前oplog的增長(zhǎng)情況(可結(jié)合業(yè)務(wù)寫(xiě)入量及oplog平均大小進(jìn)行粗略估計(jì)),確保dump不會(huì)失敗。目前我們阿里云MongoDB服務(wù)針對(duì)oplog做了彈性擴(kuò)縮容的優(yōu)化,能夠確保在邏輯備份過(guò)程中oplog不被滾掉,一定能夠備份成功。

索引的備份和恢復(fù)

對(duì)于集合數(shù)據(jù),mongodump出來(lái)的結(jié)果是一個(gè)個(gè)bson文件。而對(duì)于集合的索引,則是描述在一個(gè)metadata的json文件里,里面還包含創(chuàng)建集合時(shí)所使用的選項(xiàng)。在使用mongorestore進(jìn)行恢復(fù)時(shí),會(huì)在集合數(shù)據(jù)恢復(fù)完畢之后進(jìn)行對(duì)應(yīng)的索引創(chuàng)建。

全量物理備份/恢復(fù)

對(duì)于數(shù)據(jù)量很大的場(chǎng)景,如果使用mongodump/mongorestore進(jìn)行備份和恢復(fù),需要的時(shí)間可能會(huì)很長(zhǎng)。對(duì)于備份來(lái)說(shuō),最主要的問(wèn)題就是備份所需時(shí)間越長(zhǎng),oplog被滾掉的幾率就越大,備份失敗的幾率也就越大。而對(duì)于恢復(fù)來(lái)說(shuō),由于恢復(fù)過(guò)程還涉及到索引的創(chuàng)建,如果除了數(shù)據(jù)量大,還有很多索引,所需花費(fèi)的時(shí)間就更長(zhǎng)了。遇到像爐石這種數(shù)據(jù)災(zāi)難,恢復(fù)時(shí)間當(dāng)然是越短越好,畢竟在游戲行業(yè)分分鐘的流水都很可觀。這時(shí)候就需要物理備份出場(chǎng)了,物理備份,顧名思義就是通過(guò)物理拷貝數(shù)據(jù)文件實(shí)現(xiàn)備份。在恢復(fù)時(shí)可以直接使用物理備份拷貝出來(lái)的數(shù)據(jù)文件,直接啟動(dòng)mongod。物理備份***的好處是速度快,恢復(fù)時(shí)也不需要再建索引。

實(shí)施方法

物理備份通過(guò)拷貝數(shù)據(jù)文件來(lái)實(shí)現(xiàn),這要求所有被拷貝的數(shù)據(jù)文件必須是一個(gè)一致的數(shù)據(jù)快照。因此物理備份的實(shí)施方法和MongoDB采用的存儲(chǔ)引擎有關(guān),并且,根據(jù)是否配置MongoDB打開(kāi)了Journal,在實(shí)施的細(xì)節(jié)上會(huì)有一些不同,具體可參考官方文檔。不管使用何種存儲(chǔ)引擎,在3.2版本之后,都可以用以下方法實(shí)現(xiàn)物理備份:

通過(guò)mongoshell執(zhí)行以下命令以確保所有的寫(xiě)操作都flush到磁盤(pán)并禁止新的寫(xiě)入:

  1. db.fsyncLock(); 

利用底層文件系統(tǒng)層或邏輯卷的快照功能對(duì)MongoDB的數(shù)據(jù)目錄做快照,或直接通過(guò)cp、scp、tar等命令拷貝數(shù)據(jù)目錄。

還是在剛才的mongoshell上(這里需要保證和剛剛是同一個(gè)連接),執(zhí)行以下命令以重新允許新的寫(xiě)入:

  1. db.fsyncUnLock(); 

由于執(zhí)行db.fsyncLock()會(huì)加數(shù)據(jù)庫(kù)的全局寫(xiě)鎖,這時(shí)數(shù)據(jù)庫(kù)會(huì)處于一個(gè)不可訪(fǎng)問(wèn)的狀態(tài),因此物理備份***也在備節(jié)點(diǎn)上執(zhí)行(***是hidden,注意同樣需要確保物理備份完成之后節(jié)點(diǎn)的oplog能追上主節(jié)點(diǎn))。目前我們阿里云MongoDB團(tuán)隊(duì)已經(jīng)研發(fā)出了無(wú)需停寫(xiě)服務(wù)的物理熱備份手段,相信很快就可以讓大家用上,盡請(qǐng)期待!

增量備份

MongoDB的增量備份可以通過(guò)持續(xù)抓取oplog來(lái)實(shí)現(xiàn),這個(gè)目前沒(méi)有現(xiàn)成的工具可以利用,需要自己代碼實(shí)現(xiàn)。抓取oplog主要的難題也和使用mongodump進(jìn)行全量備份一樣,需確保要抓取的oplog不被滾掉。目前我們阿里云MongoDB服務(wù)實(shí)現(xiàn)了自動(dòng)增量備份的功能,結(jié)合全量備份可以實(shí)現(xiàn)任意時(shí)間點(diǎn)恢復(fù)功能。

Sharding的備份/恢復(fù)

爐石是不分服的,因此它后面也有可能是使用分布式數(shù)據(jù)庫(kù)。對(duì)于分布式數(shù)據(jù)庫(kù)來(lái)說(shuō),備份和恢復(fù)比單機(jī)數(shù)據(jù)庫(kù)更加復(fù)雜。分布式數(shù)據(jù)庫(kù)包含多個(gè)節(jié)點(diǎn),并且通常包含不同角色的節(jié)點(diǎn)。以MongoDB的Sharding集群為例,它包含一個(gè)保存元數(shù)據(jù)的config server以及若干個(gè)保存數(shù)據(jù)的shard。其中最主要的元數(shù)據(jù)就是數(shù)據(jù)在shard之間的分布情況。對(duì)于多個(gè)節(jié)點(diǎn)的備份,其中一個(gè)難題是保證所有節(jié)點(diǎn)備份的數(shù)據(jù)是同一個(gè)時(shí)間點(diǎn)的,常規(guī)采用的手段是停止外部寫(xiě)入后進(jìn)行備份,這在互聯(lián)網(wǎng)服務(wù)中顯然不可接受。退而求其次,可以在停止接受同步的備節(jié)點(diǎn)上進(jìn)行備份,這樣可以得到一個(gè)時(shí)間大致接近的備份。另外一個(gè)難題是各數(shù)據(jù)節(jié)點(diǎn)之間通常存在數(shù)據(jù)遷移,而數(shù)據(jù)遷移就涉及到起碼2個(gè)以上數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)修改以及元數(shù)據(jù)節(jié)點(diǎn)的數(shù)據(jù)修改,如果在備份過(guò)程中發(fā)生數(shù)據(jù)遷移,很難保證備份出來(lái)的數(shù)據(jù)和元數(shù)據(jù)是一個(gè)一致的狀態(tài)。因此通常在備份過(guò)程中需要關(guān)閉數(shù)據(jù)遷移。MongoDB官方的文檔指導(dǎo)步驟就是采用這個(gè)思路,先關(guān)閉負(fù)責(zé)數(shù)據(jù)遷移的balancer,然后依次在config server和各個(gè)shard的備節(jié)點(diǎn)上進(jìn)行備份。關(guān)閉數(shù)據(jù)遷移***的問(wèn)題是關(guān)閉期間集群無(wú)法實(shí)現(xiàn)數(shù)據(jù)均衡,除了會(huì)影響集群的訪(fǎng)問(wèn)性能外,還造成資源的浪費(fèi),這在數(shù)據(jù)量較大,所需備份時(shí)間較長(zhǎng)時(shí)可能造成比較大的影響。

針對(duì)這兩大難題,我們阿里云MongoDB團(tuán)隊(duì)研發(fā)了不需要停外部寫(xiě),并且無(wú)需關(guān)數(shù)據(jù)遷移的Sharding備份手段,能夠?qū)崿F(xiàn)『任意』時(shí)間點(diǎn)恢復(fù),這個(gè)功能將伴隨著即將推出的Sharding形態(tài)一起推出,盡情期待!

阿里云MongoDB備份服務(wù)

阿里云MongoDB服務(wù)提供自動(dòng)備份/恢復(fù)功能,默認(rèn)每天為數(shù)據(jù)進(jìn)行全量備份,并且自動(dòng)抓取oplog進(jìn)行增量備份。用戶(hù)可以在控制臺(tái)自定義備份策略以及進(jìn)行恢復(fù)。

恢復(fù)時(shí)可以選擇某一個(gè)備份集或某一個(gè)時(shí)間點(diǎn)克隆出一個(gè)新的實(shí)例,可以在新實(shí)例上進(jìn)行數(shù)據(jù)校驗(yàn),等校驗(yàn)沒(méi)問(wèn)題后切換到新實(shí)例。此外,全量備份的數(shù)據(jù)還提供下載功能,用戶(hù)也可以選擇下載備份集到本地后恢復(fù)到一個(gè)臨時(shí)實(shí)例進(jìn)行數(shù)據(jù)校驗(yàn)。

總結(jié)

說(shuō)了這么多,大家應(yīng)該對(duì)MongoDB的備份/恢復(fù)手段有了一個(gè)大概的認(rèn)識(shí)。如果要圖省心,還是建議直接使用阿里云MongoDB服務(wù),我們有自動(dòng)化的備份/恢復(fù)服務(wù),靈活的備份策略,只需點(diǎn)點(diǎn)鼠標(biāo)就能用上任意時(shí)間點(diǎn)恢復(fù)、物理熱備份、Sharding備份/恢復(fù)這些黑科技,從此不再為數(shù)據(jù)庫(kù)容災(zāi)發(fā)愁,業(yè)務(wù)你們做,鍋有我們來(lái)背,還等什么呢,快來(lái)試用吧!

作者:鄭涔,花名明儼,阿里云數(shù)據(jù)庫(kù)組技術(shù)專(zhuān)家,主要關(guān)注分布式存儲(chǔ)、Nosql數(shù)據(jù)庫(kù)等技術(shù)領(lǐng)域,目前主要參與MongoDB云數(shù)據(jù)庫(kù)的研發(fā),致力于讓開(kāi)發(fā)者用上***的MongoDB云服務(wù)。

責(zé)任編輯:武曉燕 來(lái)源: 36大數(shù)據(jù)
相關(guān)推薦

2011-07-26 13:55:01

MongoDB備份與恢復(fù)

2010-04-12 10:40:49

Oracle數(shù)據(jù)庫(kù)

2010-07-08 11:05:14

SQL Server數(shù)

2011-05-26 09:36:07

Oracle數(shù)據(jù)庫(kù)Redo故障

2011-03-24 17:21:42

Oracle數(shù)據(jù)庫(kù)Redo故障

2010-04-12 14:19:00

Oracle數(shù)據(jù)庫(kù)備份

2019-08-20 14:02:07

MongoDB數(shù)據(jù)庫(kù)恢復(fù)數(shù)據(jù)

2017-03-14 14:09:08

數(shù)據(jù)庫(kù)Oracle備份

2023-12-27 22:08:39

vivo數(shù)據(jù)庫(kù)

2009-04-03 10:54:49

Oracle備份恢復(fù)

2023-12-07 15:09:23

2010-03-30 10:05:02

Oracle數(shù)據(jù)庫(kù)

2021-05-17 06:57:34

SQLServer數(shù)據(jù)庫(kù)

2011-05-11 13:25:57

Oracle數(shù)據(jù)庫(kù)后備恢復(fù)

2010-08-25 14:12:47

DB2備份恢復(fù)

2011-04-01 10:40:07

SQL Server數(shù)備份恢復(fù)

2009-04-17 11:28:16

Oracle備份恢復(fù)

2010-04-13 11:09:21

Oracle數(shù)據(jù)庫(kù)

2011-04-11 13:46:17

Oracle數(shù)據(jù)庫(kù)備份

2009-10-13 09:43:43

Oracle數(shù)據(jù)庫(kù)備份
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产亚洲精品美女久久久久久久久久 | 亚洲成人国产 | 国产亚洲人成a在线v网站 | 免费在线观看一区二区 | 中文字幕在线三区 | 国外成人免费视频 | 成人在线观 | www日日日| 色婷婷精品久久二区二区蜜臂av | 中文字幕韩在线第一页 | 在线免费看黄 | 精品日韩 | 日本在线播放一区二区 | 国产精品一区二区三区四区 | 爱草在线 | 夫妻午夜影院 | 国产a区 | 91资源在线 | 免费一级网站 | 免费的网站www | 精品一区国产 | 久在线| 天天操天天干天天曰 | 日本精品久久久一区二区三区 | 日韩在线成人 | 国产亚洲精品91 | 美女黄视频网站 | 成人精品鲁一区一区二区 | 欧美视频三区 | 久99久视频 | 欧美国产精品一区二区 | 日韩国产在线观看 | 三级黄色片在线 | 在线国产欧美 | 中文字幕国产视频 | 美女天天操 | 午夜一级大片 | 亚洲高清视频一区二区 | 亚洲国产高清高潮精品美女 | 欧美1区| 国产精品日韩欧美一区二区三区 |