Mongodb

即使埠關閉,Mongodb 也會在主節點和輔助節點之間同步數據

  • December 1, 2017

我已經使用 3 個 ec2 和一個主節點和 2 個輔助節點在 aws 中配置了 mongodb 副本集。當我在主節點上插入數據時,它會同步到它應該同步的輔助節點。但是,當我通過安全組關閉埠時,即使主節點中 rs.status() 中的狀態為 stateStr" : “(not reachable/healthy)” ->,數據仍在同步到埠已關閉的輔助節點用於輔助節點(其埠已關閉)。

我在不同的公共子網和私有子網中使用我的輔助節點嘗試了這個,但它仍然在同步。我是 mongodb 的新手,可能做錯了什麼。有人可以建議一些東西。

你有沒有雙向關閉這條路…

如果主節點無法“ping”輔助節點,則它無法訪問/健康,但如果輔助節點可以連接主節點,則它可以複製 opLog …

根據 MongoDB BOL這裡

為了維護共享數據集的最新副本,副本集的次要成員sync或從其他成員複製數據。MongoDB 使用兩種形式的數據同步:

  1. 初始同步
  2. 複製

初始同步

初始同步將所有數據從副本集的一個成員複製到另一個成員。甚至是使用完整數據集填充新成員的初始同步,以及將持續更改應用於整個數據集的複制。

同步過程是如何發生的

When you perform an initial sync, MongoDB:

複製除數據庫之外的所有local數據庫。為了複製,mongod掃描每個源數據庫中的每個集合,並將所有數據插入到它自己的這些集合的副本中。在 3.4 版更改:初始同步會在為每個集合複製文件時建構所有集合索引。在早期版本的 MongoDB 中,此階段僅建構 _id 索引。

在 3.4 版更改: 初始同步在數據複製期間拉取新添加的 oplog 記錄。確保目標成員在本地數據庫中有足夠的磁碟空間,以便在此數據複製階段期間臨時儲存這些 oplog 記錄。

將所有更改應用於數據集。使用來自源的 oplog,mongod更新其數據集以反映副本集的目前狀態。初始同步完成後,成員從 轉換STARTUP2SECONDARY

複製

輔助成員在初始同步後連續複製數據。次要成員oplog從他們的同步源中複製並在非同步過程中應用這些操作。

輔助節點可以根據 ping 時間和其他成員複製狀態的變化,根據需要自動從源更改同步。

在 3.2 版更改: MongoDB 3.2 副本集成員1 vote無法與0 votes.

輔助節點避免從delayed members和同步hidden members

如果次要成員members[n].buildIndexes設置為 true,則它只能從buildIndexes為 true 的其他成員同步。為 false 的成員buildIndexes可以從任何其他成員同步,除非有其他同步限制。buildIndexes預設情況下為真。

供您進一步參考副本集 Oplog副本集部署架構

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