搭建副本集遇到的問題
問題一: bind_ip配置的不通 要為0.0.0.0 問題二: 沒關閉防火牆 總結搭建副本集的核心步驟 1: 配置mongo.conf文件 2: 初始化副本集 3: 驗證(查看副本集)
虛擬機三個服務器如下

第一步 首先關閉服務器防火牆
否則會報No route to host
查看防火牆狀態 [root@localhost /]# firewall-cmd --state running 關閉防火牆 [root@localhost /]# systemctl stop firewalld.service 查看防火牆狀態 [root@localhost /]# firewall-cmd --state not running
第二步 服務器安裝mongo省略
第三步 在三台服務器的bin目錄下分別新建配置文件mongo.conf

服務器130(主節點)的配置文件mongo.conf 如下
port = 27017 #數據目錄 dbpath = /usr/local/mongodb/data/db #日志所在目錄 logpath = /usr/local/mongodb/data/logs/mongodb.log #日志輸出方式 logappend = true # 在后台啟動 fork=true # 0.0.0.0表示任意IP均可連接 bind_ip=0.0.0.0 #副本集名稱 replSet=rs
服務器129(輔助節點)的配置文件mongo.conf 如下
port = 27017 #數據目錄 dbpath = /usr/local/mongodb/data/db #日志所在目錄 logpath = /usr/local/mongodb/data/logs/mongodb.log #日志輸出方式 logappend = true # 在后台啟動 fork=true # 0.0.0.0表示任意IP均可連接 bind_ip=0.0.0.0 #副本集名稱 replSet=rs
服務器128(仲裁節點)的配置文件mongo.conf 如下
port = 27017 #數據目錄 dbpath = /usr/local/mongodb/data/db #日志所在目錄 logpath = /usr/local/mongodb/data/logs/mongodb.log #日志輸出方式 logappend = true # 在后台啟動 fork=true # 0.0.0.0表示任意IP均可連接 bind_ip=0.0.0.0 #副本集名稱 replSet=rs
三個配置文件里最重要的是指定相同的副本集的名稱
#副本集名稱 replSet=rs rs(名字任意)為此次搭建的副本集的名稱
第四步 分別啟動三台服務器的mongo服務
任選一台服務器連接 進入admin庫 執行副本集初始化操作 如下
副本集的名稱為rs priority 的數值越大越活躍 數值最大的為主節點
> use admin switched to db admin > > rsconf = { ... ... _id: "rs", ... ... members: [ ... ... { ... ... _id: 0, ... ... host: "192.168.23.130", ... "priority":2 ... ... }, ... ... { ... ... _id: 1, ... ... host: "192.168.23.129", ... "priority":1 ... ... } ... ... ] ... ... } { "_id" : "rs", "members" : [ { "_id" : 0, "host" : "192.168.23.130", "priority" : 2 }, { "_id" : 1, "host" : "192.168.23.129", "priority" : 1 } ] } > rs.initiate(rsconf) { "ok" : 1, "operationTime" : Timestamp(1563524874, 1), "$clusterTime" : { "clusterTime" : Timestamp(1563524874, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } }


第五步 驗證副本集
查看主節點如下

查看副本集狀態


添加一個服務器為仲裁節點

查看各個服務器狀態信息

驗證副本集的數據一致性 主節點向admin數據庫插入一個集合名為test的數據

登錄其他兩台服務器的admin 的test集合 查看是否有此數據 如下
輔助節點查看如下

仲裁節點如下 仲裁節點不能同步數據 只支持投票選舉

輔助節點初次同步數據會提示錯誤如下 解決方法如下 rs.slaveOk() 或者 db.getMongo().setSlaveOk()

第六步: mongo啟動服務 與 mongo關閉服務
進入bin目錄 啟動mongodb服務 root@river-NUC8i7HNK:/usr/local/mongodb/bin# ./mongod -f mongo.conf 停止mongodb服務 root@river-NUC8i7HNK:/# mongod -f /usr/local/mongodb/bin/mongo.conf --shutdown killing process with pid: 14185
