利用mongodb的oplog進行對庫進行增量備份

2021-10-02 00:23:15 字數 2770 閱讀 3750

實驗環境

system:centos linux release 7.7.1908 (core)

mongo:v4.0.0

開啟許可權驗證環境

oplog詳細介紹

oplog官方介紹

oplog的概念

oplog(operations log)是乙個特殊的上限集合,它儲存了修改儲存在資料庫中的資料的所有操作的滾動記錄。 mongodb 在主上應用資料庫操作,然後在主要的 oplog 上記錄操作。然後次要成員在非同步 process 中複製並應用這些操作。所有副本集成員都在local.oplog.rs集合中包含 oplog 的副本,這允許它們維護資料庫的當前 state。

為了便於複製,所有副本集成員都會向所有其他成員傳送心跳(ping)。任何次要成員都可以 import 來自任何其他成員的 oplog 條目。

oplog 中的每個操作都是冪等。也就是說,無論是對目標資料集應用一次還是多次,oplog 操作都會產生相同的結果

配置副本集開啟oplog1.先stop服務

2.再配置mongodb1.conf

vim /usr/local/mongodb/bin/mongodb1.conf

replset=rs0#新增這個引數,rs0為副本集的名字

如果yml形式的配置檔案則

replication:   #注意需要把replication的#注釋掉

oplogsizemb: 1024

replsetname: rs

3.啟動服務

4.切入mongo的shell環境中切入到admin庫,執行如下命令

config=]}

rs.initiate(config)

返回即可表示開啟oplog成功

5.這個時候就可以切換到local資料庫下,用show tables,可以看到oplog.rs表了

6.檢視oplog的資訊

db.printreplicationinfo()
configured oplog size:   990mb

log length start to end: 17494secs (4.86hrs)

oplog first event time: wed jan 08 2020 14:47:12 gmt+0800 (cst)

oplog last event time: wed jan 08 2020 19:38:46 gmt+0800 (cst)

now: wed jan 08 2020 19:38:47 gmt+0800 (cst)

configured oplog size: oplog檔案大小

log length start to end: oplog日誌的啟用時間段

oplog first event time: 第乙個事務日誌的產生時間

oplog last event time: 最後乙個事務日誌的產生時間

now: 現在的時間

oplog.rs集合的結構

}

增量備份(這裡實驗我們只對整個庫進行實驗,當然它也是允許對單個庫進行增量備份和還原的)

1.增量備份是相對應所有庫的,不支援對單庫進行增量備份

2.在增量備份前,必須要檢查是否存在了對所有庫的一次全量備份,如果沒有,則需要先進行一次所有庫的全量備份

mongodump --host 127.0.0.1 --port 27017 -uadmin -p123 --oplog --authenticationdatabase "admin" --out /data/dump/20200107
3.插入幾條資料

4.獲取上次全量備份時oplog的時間戳

bsondump /data/dump/20200107/oplog.bson
5.接下裡既可以開始執行增量備份命令

mongodump -u admin -p 123 --host localhost --port 27017  -d local -c oplog.rs -q '}' -o /data/dump/inc/ --authenticationdatabase admin
增量的恢復

1.我們可以將剛剛新增的集合給刪除,然後來驗證

2.先恢復全量

mongorestore --host 127.0.0.1 --port 27017 --authenticationdatabase admin -uadmin -p123 --drop --oplogreplay /data/dump/20200107/
3.再恢復增量

mongorestore --host 127.0.0.1 --port 27017 --authenticationdatabase admin -uadmin -p123 --drop --oplogreplay /data/dump/inc/local/oplog.rs.bson
4.檢查增量的資料是否正常恢復

需要注意的是由於oplog是乙個迴圈寫入的集合,當超過設定的大小就會覆蓋最初的寫入

MongoDB更新同步的oplog位置

在mongodb中,副本集節點之間為了保持一致性,需要通過oplog的同步與回放來進行。mongodb採用的是節點向源節點主動拉取的方式,從源節點拉取oplog,目的節點需要及時通知其他節點它的最新的同步到的時間點。如上圖所示,2個secondary從primary上面拉取oplog,每當secon...

MongoDB 3 2 oplog刪除策略優化

oplog local.oplog.rs集合 預設情況下配置為可用磁碟空間的5 當oplog寫滿時,就會開始刪除最先寫入的oplog,一次正常的insert操作包含如下步驟 將文件寫入指定的集合 將寫入操作記錄到oplog 如果oplog滿了,刪除最先寫入的oplog mongodb 3.2為了提公...

Mongodb全備 增備 oplog恢復誤刪資料

買了兩瓶進口白蘭地,想著品嚐品嚐,我基本上一年也不喝酒,當然除了過年的時候是避免不了的。在上班期間邊喝邊醉邊工作。太勁大了,一看才四十度。感覺比國內的後勁大得多,基本上喝上六七口就上頭,完全扛不住的節奏。我都沒敢想伏特加,估計更扛不住。不過酒還是要少喝。言歸正傳,mongo這幾年也好多公司再用了,於...