Database-Design
無法在沒有初始同步的情況下配置 MongoDB 複製
我的生產伺服器上有一個大型 MongoDB 數據庫,我想將其設置為副本集。我知道如果我在兩台伺服器上啟用副本集選項,它將自動開始從頭開始同步數據。但我不想從一開始就同步;相反,我想像 MySQL 複製一樣配置它。
我想遵循以下過程:
- 從主要轉儲
- 在二級恢復它
- 在兩台伺服器上的配置文件中啟用副本集
- 重啟 MongoDB。
- 轉到主伺服器並添加輔助節點。
這可能嗎; 或者還有其他替代解決方案嗎?
為什麼要提兩套重物???讓 MongoDB 來做。
對於這個例子,假設 IP 的主機名
SECONDARY
是10.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:現在,
SECONDARY
將PRIMARY
轉到 PRIMARY 並執行
rs.add("10.30.50.70:27017")
要麼
rs.add("myslave:27017")
STEP 06 : 檢查副本集的狀態
反復執行
rs.status()
如果此命令凍結,請不要擔心。它重建所有索引。
您可以在 上打開另一個 ssh 會話,在文件上
SECONDARY
執行並查看索引重建進度。tail -f``mongodb.log
為什麼這樣做?
MongoDB 基本上會在一次操作中啟動複製、複製數據和重建索引。如圖所示,在建構初始副本集時,此過程絕不是自動的。這樣做,更不容易出錯。