Database-Design

無法在沒有初始同步的情況下配置 MongoDB 複製

  • February 24, 2017

我的生產伺服器上有一個大型 MongoDB 數據庫,我想將其設置為副本集。我知道如果我在兩台伺服器上啟用副本集選項,它將自動開始從頭開始同步數據。但我不想從一開始就同步;相反,我想像 MySQL 複製一樣配置它。

我想遵循以下過程:

  • 從主要轉儲
  • 在二級恢復它
  • 在兩台伺服器上的配置文件中啟用副本集
  • 重啟 MongoDB。
  • 轉到主伺服器並添加輔助節點。

這可能嗎; 或者還有其他替代解決方案嗎?

為什麼要提兩套重物???讓 MongoDB 來做。

對於這個例子,假設 IP 的主機名SECONDARY10.30.50.70``myslave

步驟 01:僅在 PRIMARY 上啟用副本集

/etc/mongodb.conf在 PRIMARY 上進行以下更改

  • 啟用授權/etc/mongodb.conf

    • authorization: enabled在安全 YAML 標籤下(MongoDB 2.6+)
    • auth=true(如果您使用的是 MongoDB 2.4)
  • 啟用複制(假設你的名字是副本集myreplica

    • 放在replSetName: myreplica複製 YAML 標籤下(MongoDB 2.6+)
    • 放置replSet = myreplica(MongoDB 2.4)

STEP 02 : 在PRIMARY

service mongod restart

STEP 03 : 在PRIMARY

rs.initiate();

注意:此時您有一個單節點副本集

STEP 04 : 在你的 SECONDARY 上執行步驟 01 和 02

注意:此時,SECONDARY副本集已啟用但未複製

步驟 05:現在,SECONDARYPRIMARY

轉到 PRIMARY 並執行

rs.add("10.30.50.70:27017")

要麼

rs.add("myslave:27017")

STEP 06 : 檢查副本集的狀態

反復執行

rs.status()

如果此命令凍結,請不要擔心。它重建所有索引。

您可以在 上打開另一個 ssh 會話,在文件上SECONDARY執行並查看索引重建進度。tail -f``mongodb.log

為什麼這樣做?

MongoDB 基本上會在一次操作中啟動複製、複製數據和重建索引。如圖所示,在建構初始副本集時,此過程絕不是自動的。這樣做,更不容易出錯。

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