MongoDB 重新同步複製整合員
來源:myabc
測試的複製集因為磁碟空間的問題,落後主節點太多,資料不同步:
{"t":{"$date":"2024-02-19T16:13:06.387+08:00"},"s":"I", "c":"REPL", "id":21799, "ctx":"ReplCoordExtern-0","msg":"Sync source candidate chosen","attr":{"syncSource":"x.x.x.82:27017"}}{"t":{"$date":"2024-02-19T16:13:06.388+08:00"},"s":"I", "c":"REPL", "id":5579708, "ctx":"ReplCoordExtern-0","msg":"We are too stale to use candidate as a sync source. Denylisting this sync source because our last fetched timestamp is before their earliest timestamp","attr":{"candidate":"x.x.x.82:27017","lastOpTimeFetchedTimestamp":{"$timestamp":{"t":1702315041,"i":1249}},"remoteEarliestOpTimeTimestamp":{"$timestamp":{"t":1707324692,"i":393}},"denylistDurationMinutes":1,"denylistUntil":{"$date":"2024-02-19T08:14:06.388Z"}}}{"t":{"$date":"2024-02-19T16:13:06.388+08:00"},"s":"I", "c":"REPL", "id":21799, "ctx":"ReplCoordExtern-0","msg":"Sync source candidate chosen","attr":{"syncSource":"x.x.x.81:27017"}}{"t":{"$date":"2024-02-19T16:13:06.389+08:00"},"s":"I", "c":"REPL", "id":5579708, "ctx":"ReplCoordExtern-0","msg":"We are too stale to use candidate as a sync source. Denylisting this sync source because our last fetched timestamp is before their earliest timestamp","attr":{"candidate":"x.x.x.81:27017","lastOpTimeFetchedTimestamp":{"$timestamp":{"t":1702315041,"i":1249}},"remoteEarliestOpTimeTimestamp":{"$timestamp":{"t":1707324526,"i":1115}},"denylistDurationMinutes":1,"denylistUntil":{"$date":"2024-02-19T08:14:06.389Z"}}}{"t":{"$date":"2024-02-19T16:13:06.389+08:00"},"s":"I", "c":"REPL", "id":21798, "ctx":"ReplCoordExtern-0","msg":"Could not find member to sync from"}{"t":{"$date":"2024-02-19T16:13:20.998+08:00"},"s":"I", "c":"STORAGE", "id":22430, "ctx":"Checkpointer","msg":"WiredTiger message","attr":{"message":"[1708330400:998702][596:0x7ff714c47700], WT_SESSION.checkpoint: [WT_VERB_CHECKPOINT_PROGRESS] saving checkpoint snapshot min: 15, snapshot max: 15 snapshot count: 0, oldest timestamp: (1702314741, 1249) , meta checkpoint timestamp: (1702315041, 1249) base write gen: 33406434"}}
當複製整合員的複製程式落後太多,以至於主節點覆蓋了該成員尚未複製的 oplog 條目時,複製整合員就會變得 "stale"。出現這種情況時,必須刪除成員的資料並執行初始同步,從而完全重新同步成員。
MongoDB 提供了兩種執行初始同步的選項:
1.以空資料目錄重啟 mongod,讓 MongoDB 的正常初始同步功能恢復資料。這是更簡單的選擇,但可能需要更長的時間來替換資料。
2.使用複製集中另一個成員的最新資料目錄副本重啟機器。此程式可以更快地替換資料,但需要更多手動步驟。
同步成員時,請選擇系統頻寬足以移動大量資料的時間。將同步安排在使用率較低的時間或維護視窗期間。
方法一:自動同步成員
這個過程依賴momgodb複製集同步的常規過程。還可以在 dbPath 目錄不包含內容的情況下重啟例項,從而強制已是集合成員的 mongod 執行初始同步:
1.關閉 mongodb 成員例項
要確保乾淨的關閉,可以使用db.shutdownServer()、或者使用mongod --shutdown
2.可選項
備份資料
3.刪除dbPath目錄下的所有資料和子目錄
4.重啟mongodb例項
啟動後,mongod就會執行初始化同步。初始化同步消耗的時間取決與資料量的大小、以及成員節點之間的網路延遲。
方法二:從其它成員節點複製資料檔案進行同步
1.從其它成員節點複製資料檔案
2.成員同步
資料檔案複製完成後,使用一個新的 members[n]._id 啟動 mongodb 例項
注意點:複製資料檔案,記得要包含local資料庫的內容。此外,不要使用mongodump的備份,必須是快照一致性備份。
來自 “ ITPUB部落格 ” ,連結:https://blog.itpub.net/70027826/viewspace-3006911/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【Mongodb】往分片複製集新增複製成員MongoDB
- MongoDB複製集資料同步流程MongoDB
- MongoDB原理:複製集狀態同步機制MongoDB
- mongodb複製集MongoDB
- mongodb複製+分片MongoDB
- mongoDB研究筆記:複製集資料同步機制MongoDB筆記
- MySQL的非同步複製和半同步複製MySql非同步
- MongoDB 搭建複製集MongoDB
- MongoDB複製集原理MongoDB
- MongoDB 複製機制MongoDB
- MongoDB主從複製MongoDB
- mongodb複製集搭建MongoDB
- 【mongodb】mongodb 實現主從複製MongoDB
- MySQL 8 複製(一)——非同步複製MySql非同步
- MySQL 8 複製(二)——半同步複製MySql
- MongoDB學習4:MongoDB複製集機制和原理,搭建複製集MongoDB
- 【Mongodb】 可複製集搭建MongoDB
- 深入淺出MongoDB複製MongoDB
- MongoDB 搭建可複製群集MongoDB
- 【Mongodb】分片加複製集MongoDB
- MySQL主從複製、半同步複製和主主複製MySql
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MySQL 半同步複製MySql
- MySQL半同步複製MySql
- MySQL主從複製、半同步複製和主主複製概述MySql
- MongoDB搭建Replica Set複製集MongoDB
- MongoDB學習之複製集MongoDB
- MongoDB 複製集模式Replica SetsMongoDB模式
- Postgresql 9.6 搭建 非同步流複製 和 同步流複製 詳細教程SQL非同步
- MySQL的主從複製、半同步複製、主主複製詳解MySql
- 配置mysql5.5主從複製、半同步複製、主主複製MySql
- 主從複製、雙主複製及半同步複製、以及基於SSL的複製
- mysql 5.7半同步複製MySql
- MySQL的半同步複製MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- Mongodb 複製的紐帶–OplogMongoDB
- mongoDB研究筆記:複製集概述MongoDB筆記