首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> DB2 資料庫 >> DB2 教學

MongoDB 副本集部署實戰:跨平台叢集搭建、成員變更與故障切換驗證

     編輯:DB2 教學

MongoDB 副本集部署實戰:跨平台叢集搭建、成員變更與故障切換驗證

記錄在 SUSE、CentOS、FreeBSD、RedHat 四種 Linux/Unix 平台上部署 4 節點 MongoDB 副本集(名稱 jieshi)的完整過程,含配置、初始化、新增成員、Primary 選舉、故障模擬與驗證。

一、環境與前置條件

  • 四節點 IP:192.168.16.234 (SUSE)、.103 (CentOS)、.216 (FreeBSD)、.211 (RHEL6)。
  • 各節點 /etc/mongod.conf 設定 replSet = jieshi 並重啟。
  • 確保實例**無業務資料庫**(僅保留 admin、local),否則 rs.initiate() 會報錯。

二、初始化副本集(任一節點執行)

hapameconfig = {
  _id: "jieshi",
  members: [
    { _id: 0, host: "192.168.16.234" },
    { _id: 1, host: "192.168.16.103" },
    { _id: 2, host: "192.168.16.216" }
  ]
}
rs.initiate(hapameconfig)

驗證:rs.status() 顯示 1 Primary (State 1)、2 Secondary (State 2)、Health 全 1。

三、新增第四節點 (192.168.16.211)

  1. 新節點配置同 replSet=jieshi,啟動後日誌顯示 EMPTYCONFIG 等待加入。
  2. **在 Primary 上執行**:rs.add("192.168.16.211")。
  3. rs.conf() 版本號遞增,rs.status() 顯示新節點 State 2,同步完成。

四、讀寫權限驗證

  • Primary:可讀寫、show dbs、insert 正常。
  • Secondary:預設**不可讀寫**,執行查詢拋 not master (code 10107)。需 rs.slaveOk() 或連接字串加 readPreference=secondaryPreferred 才能讀取。

五、故障切換測試

  1. 殺掉原 Primary (192.168.16.234) 進程。
  2. 剩餘節點自動發起選舉,新 Primary 為 192.168.16.211(rs.isMaster().ismaster=true)。
  3. 新 Primary 可正常讀寫,資料同步無遺失(插入測試資料驗證)。
  4. 重啟舊 Primary:自動以 **Secondary** 身份加入,**不會自動搶回 Primary**(需手動 rs.stepDown() 或優先級配置)。

六、關鍵運維指令速查

指令用途
rs.status()查看成員狀態、Health、State、Optime
rs.isMaster()確認 Primary/Secondary、Primary IP
rs.conf()查看當前配置版本與成員列表
rs.add("host:port")新增成員(只能在 Primary 執行)
rs.remove("host:port")移除成員
rs.stepDown()主動降級 Primary

七、生產建議

  • 生產環境**至少 3 節點**,建議奇數,跨機房/可用區部署。
  • 啟用 authorization、keyFile 加密節點間通訊。
  • 配置 priority、hidden、arbiterOnly 等標籤控制選舉行為。
  • 監控 replication lag、oplog window、election metrics。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved