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
- MongoDB學習4:MongoDB複製集機制和原理,搭建複製集MongoDB
- MySQL 8 複製(一)——非同步複製MySql非同步
- MySQL 8 複製(二)——半同步複製MySql
- 【Mongodb】 可複製集搭建MongoDB
- MySQL主從複製之半同步複製MySql
- MySQL主從複製之非同步複製MySql非同步
- MongoDB學習之複製集MongoDB
- MongoDB搭建Replica Set複製集MongoDB
- mysql 5.7半同步複製MySql
- MySQL5.7主從複製-半同步複製搭建MySql
- mongodb6.0.13 搭建複製集PSAMongoDB
- 主從複製--非同步篇非同步
- Mysql5.7半同步複製MySql
- GreatSQL 非同步複製及搭建SQL非同步
- MongoDB mongoshake 遷移分片到複製集合MongoDB
- mongodb複製集(replica set)搭建及管理MongoDB
- mysql半同步複製的設定MySql
- PostgreSQL 13 同步流複製(#2.4)-202104SQL
- MongoDB日常運維-03主從複製搭建MongoDB運維
- 複製物件重新賦值不改變原物件物件賦值
- Mariadb之半同步複製叢集配置
- 半同步複製報錯mysql8.0.25MySql
- PostgreSQL 13 非同步流複製(#2.1)-202103SQL非同步
- PostgreSQL 13 同步流複製+failover(#2.6)-202104SQLAI
- 【Mongodb】分片複製集環境新增新的分片MongoDB
- 和麵試官這樣吹MongoDB 複製集!MongoDB
- mongodb複製集(replica sets)+分片(sharding)環境搭建MongoDB
- Mongodb 配置複製集,並啟用安全校驗MongoDB
- Flume與Kafka整合--扇入、扇出功能整合,其中扇出包括:複製流、複用流Kafka
- 2020重新出發,NOSQL,Redis主從複製SQLRedis
- MySQL增強(Loss-less)半同步複製MySql
- MySQL 同步複製及高可用方案總結MySql