Replication

如何在不重新啟動程序的情況下更改 MongoDB 集群中的 master?

  • July 26, 2013

閱讀 MongoDB 的文件關於如何配置集群的主從配置(我們的集群將有超過 12 個節點,所以不幸的是我們不能有副本集配置),我如何在沒有副本集的情況下將從屬提升為主必須停止任何程序?

有沒有我們可以使用的命令,比如 Redis 的 slaveof 命令,它允許我們將一個從屬提升為主控,而無需重新啟動程序?

這是我們在 MongoDB 文件(http://docs.mongodb.org/manual/core/master-slave/)上找到的:

從不可用或損壞的主節點(以下範例中的 A)永久故障轉移到從節點 (B):

關閉 A。停止 B 上的 mongod。備份並從 dbpath 中移動所有以 B 上的 local 開頭的數據文件。警告 刪除 local.* 是不可撤銷的,並且無法撤消。極其謹慎地執行此步驟。使用 –master 選項在 B 上重新啟動 mongod。注意 這是一次性操作,不可逆。在完成完全重新同步之前,A 不能成為 B 的奴隸。

這真的是唯一的方法嗎?

系統管理員回答的附錄以在評論中澄清您的問題:

不,目前(從 2.4 開始)沒有辦法超過副本集中的 12 個節點。作為一種可能的解決方案,您可以考慮使用Mongo 連接器來擁有多個集合。連接器允許您從一組重放另一組中的操作,主要是通過拖尾操作日誌(這就是複制通常的工作方式)。但是,這意味著解決集群之間的任何同步問題都不是自動的,基本上取決於您。

作為參考,投票/觀看以增加 12 個節點限制的相關問題是SERVER-3110 - 它目前計劃用於 2.5.x(目前不穩定的開發分支),但與所有此類事情一樣,直到它被送出並在穩定版本,您無法確定何時完成。

引用自:https://serverfault.com/questions/525994