簡體   English   中英

MongoDB 集群分片,沒有主分片,只有一個輔助活動分片

[英]MongoDB Cluster Shard with no primary and only one secondary active

我的 MongoDB 分片集群有 3 個分片,每個分片在 3 個副本上運行。 總結一下:

Config Server:
  shardcfg1.server.com:27018
  shardcfg2.server.com:27018
  shardcfg3.server.com:27018
Shard1:
  shard11.server.com:27000 (P)
  shard12.server.com:27000 (S)
  shard13.server.com:27000 (S)
Shard2:
  shard21.server.com:27000 (S)
  shard22.server.com:27000 (STARTUP)
  shard23.server.com:27000 (Unhealthy - invalidReplicaSetConfig: Our replica set configuration is invalid or does not include us)
Shard3:
  shard31.server.com:27000 (S)
  shard32.server.com:27000 (P)
  shard33.server.com:27000 (S)

如果您看到上面的狀態,則問題出在SHARD2

  • SHARD2沒有主SHARD2
  • 副本集配置如何將shard23.server.com標記shard23.server.com成員

輔助shard21.server.com可用於獲取轉儲,因此可能不會丟失數據。 但是,我對如何再次穩定集群一無所知?

如何從集群中完全刪除SHARD2 或者我應該如何再次使用相同的服務器重新初始化分片?

我錯過的一個小細節后來成為解決方案的關鍵:集群由 Mongo-MMS 管理!

解決方案:

所以我有一個輔助服務器,另一台處於 STARTUP 模式的服務器,而第三台可笑地宣稱自己不是副本集的一部分! 整個集群由 MMS 管理。 我確實關閉了所有三台服務器。 現在我只是簡單地啟動了獨立模式下可用的輔助數據庫來獲取整個數據庫的備份。

在此期間,我從我的集群中刪除了這個分片,因為分片中沒有主分片,所以排水卡住了。 然而,一件奇怪的事情發生了,這些服務器上的自動化代理被刪除了。 備份完成后,我開始備份服務器的mongod ,該服務器上有數據。 遺憾的是,終端確實顯示了 SECONDARY,但是當我檢查 rs.status() 時,它顯示了三台服務器,我確實記得拼接過其中一台流氓服務器。 那時我突然想到 MMS 正在管理這些副本集的配置。

刪除流氓服務器后,我迅速將 force 標志重新配置為 true。 所以現在我有兩台服務器,一台處於輔助模式,另一台處於啟動模式。 重新配置后幾秒鍾! 瞧! 二級將自己提升為一級。

一場漫長的戰斗,但很高興地說,從來不需要恢復備份或返工整個碎片!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM