Linux下MongoDB副本集搭建


搭建副本集遇到的問題

問題一:    bind_ip配置的不通   要為0.0.0.0
問題二:    沒關閉防火牆 

總結搭建副本集的核心步驟
    1:    配置mongo.conf文件 
    2:    初始化副本集
    3:    驗證(查看副本集)
View Code

虛擬機三個服務器如下

第一步  首先關閉服務器防火牆

  否則會報No route to host

                             查看防火牆狀態
[root@localhost /]# firewall-cmd --state   
                              running
                             關閉防火牆
[root@localhost /]# systemctl stop firewalld.service  
                              查看防火牆狀態
[root@localhost /]# firewall-cmd --state
                             not running
View Code

第二步  服務器安裝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
View Code

  服務器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
View Code

  服務器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
View Code

  三個配置文件里最重要的是指定相同的副本集的名稱

  #副本集名稱   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)
        }
    }
}
View Code

第五步 驗證副本集

  查看主節點如下 

  查看副本集狀態

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

  查看各個服務器狀態信息

  驗證副本集的數據一致性  主節點向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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM