實驗環境
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這幾年也好多公司再用了,於...