Replication

MongoDB 創建歷史集群副本集

  • November 24, 2020

我有一個我正在嘗試實現的案例。有一個副本集(3 個節點)是主生產集群,我想設置一個歷史集群,另一個副本集(3 個節點)從主生產副本集複製數據..但是我們會定期從中清除交易數據,我不希望清除複製,因為歷史副本集應該保存整個數據以進行報告..

有什麼方法可以處理..?我們在 mongo 中是否有選擇性複制,或者我應該手動複製 oplog 並跳過刪除..

感謝您的建議!

MongoDB(在 4.0 中)沒有支持的功能或工具,用於在兩個不同的部署之間進行選擇性複製或同步。

我建議從 3.4 升級到更新版本的 MongoDB(最好是 4.0)並使用Change Streams API建構同步解決方案。您可以根據事件類型、命名空間或其他條件選擇將哪些事件複製到歷史存檔或部署。更改流可用於使用 WiredTiger 儲存引擎和複製協議版本 1的副本集和分片集群。MongoDB 3.6 是第一個添加 Change Streams API 的版本,包括對查看單個集合的支持。在 MongoDB 4.0 中,更改流支持已擴展為能夠在數據庫或部署範圍內監視所有非系統集合更改。

如果近期無法從 MongoDB 3.4 升級,也可以考慮直接拖尾複製 oplog的方式。這將是一個不如 Change Streams API 強大的解決方案,但有一些第三方工具 mongo-connector可能會有所幫助。Change Streams API 也使用 oplog,但添加了一個受支持的 API,僅包括多數送出的操作(不會回滾),並且可以擴展以支持分片集群。oplog 格式是內部的,可能會在 MongoDB 版本之間發生變化。

引用自:https://dba.stackexchange.com/questions/233415