mongodb集群搭建

mongodb集群搭建

前置準(zhǔn)備(安裝包)

1.下載社區(qū)版 MongoDB 4.1.3 
        去官網(wǎng)下載對(duì)應(yīng)的MongoDB 然后上傳到Linux虛擬機(jī) 
2.將壓縮包解壓即可 
        tar -zxvf MongoDB-linux-x86_64-4.1.3.tgz 
第三步和第四步可不操作
3.啟動(dòng)
        ./bin/mongod 
4.指定配置文件方式的啟動(dòng)
        ./bin/mongod -f mongo.conf 
        配置文件樣例: 
        dbpath=/data/mongo/ 
        port=27017 
        bind_ip=0.0.0.0 
        fork=true 
        logpath = /data/mongo/MongoDB.log 
        logappend = true 
        auth=false

以下是百度云盤的jar地址

image-20210129101045451.png
https://pan.baidu.com/s/1t4mGWxq4L9sDtjwnnGsnuQ
z9ek

一、架構(gòu)

image-20210129110615733.png

二、配置

2.1 配置 并啟動(dòng)config 節(jié)點(diǎn)集群

節(jié)點(diǎn)1 mongo_37017.conf

# 進(jìn)入mondb 解壓后目錄 
cd /root/mongodb-linux-x86_64-4.1.3
vim  mongo_37017.conf
# 主節(jié)點(diǎn)配置 
dbpath=/data/mongo/data/server1 
bind_ip=0.0.0.0 
port=37017 
fork=true 
logpath=/data/mongo/logs/server1.log 
replSet=lagouCluster 

節(jié)點(diǎn)2 mongo_37018.conf

 cp mongo_37017.conf mongo_37018.conf
 vim mongo_37018.conf
 修改
dbpath=/data/mongo/data/server2
 logpath=/data/mongo/logs/server2.log 
 port = 37018 

節(jié)點(diǎn)3 confifig-17019.conf

  cp mongo_37017.conf mongo_37019.conf
 vim mongo_37019.conf
 修改
dbpath=/data/mongo/data/server3
 logpath=/data/mongo/logs/server3.log 
 port = 37019 

創(chuàng)建日志目錄

#-p 是多級(jí)創(chuàng)建
mkdir /data/mongo/data/server1 -p
mkdir /data/mongo/data/server2 -p
mkdir /data/mongo/data/server3 -p
mkdir /data/mongo/logs -p

2.2 啟動(dòng)配置節(jié)點(diǎn)

./bin/mongod -f mongo_37017.conf
./bin/mongod -f mongo_37018.conf
./bin/mongod -f mongo_37019.conf

2.3 初始化節(jié)點(diǎn)配置

# 進(jìn)入mongo 節(jié)點(diǎn)
./bin/mongo --port 37017
# 配置節(jié)點(diǎn)集群,注意host 和端口號(hào)改成自己的服務(wù)器
var cfg ={"_id":"lagouCluster", "protocolVersion" : 1, "members":[ {"_id":1,"host":"192.168.31.100:37017"}, {"_id":2,"host":"192.168.31.100:37018"}, {"_id":3,"host":"192.168.31.100:37019"}] };
rs.initiate(cfg)
rs.status()
image-20210129112331393.png

2.4 查看集群狀態(tài):rs.status()

{
        "set" : "lagouCluster",
        "date" : ISODate("2021-01-29T03:21:53.946Z"),
        "myState" : 1,
        "term" : NumberLong(1),
        "syncingTo" : "",
        "syncSourceHost" : "",
        "syncSourceId" : -1,
        "heartbeatIntervalMillis" : NumberLong(2000),
        "optimes" : {
                "lastCommittedOpTime" : {
                        "ts" : Timestamp(1611890503, 1),
                        "t" : NumberLong(1)
                },
                "readConcernMajorityOpTime" : {
                        "ts" : Timestamp(1611890503, 1),
                        "t" : NumberLong(1)
                },
                "appliedOpTime" : {
                        "ts" : Timestamp(1611890503, 1),
                        "t" : NumberLong(1)
                },
                "durableOpTime" : {
                        "ts" : Timestamp(1611890503, 1),
                        "t" : NumberLong(1)
                }
        },
        "lastStableRecoveryTimestamp" : Timestamp(1611890502, 1),
        "lastStableCheckpointTimestamp" : Timestamp(1611890502, 1),
        "members" : [
                {
                        "_id" : 1,
                        "name" : "192.168.31.100:37017",
                        "health" : 1,
                        "state" : 1,
                        "stateStr" : "PRIMARY",
                        "uptime" : 548,
                        "optime" : {
                                "ts" : Timestamp(1611890503, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2021-01-29T03:21:43Z"),
                        "syncingTo" : "",
                        "syncSourceHost" : "",
                        "syncSourceId" : -1,
                        "infoMessage" : "could not find member to sync from",
                        "electionTime" : Timestamp(1611890500, 1),
                        "electionDate" : ISODate("2021-01-29T03:21:40Z"),
                        "configVersion" : 1,
                        "self" : true,
                        "lastHeartbeatMessage" : ""
                },
                {
                        "_id" : 2,
                        "name" : "192.168.31.100:37018",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 23,
                        "optime" : {
                                "ts" : Timestamp(1611890503, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1611890503, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2021-01-29T03:21:43Z"),
                        "optimeDurableDate" : ISODate("2021-01-29T03:21:43Z"),
                        "lastHeartbeat" : ISODate("2021-01-29T03:21:52.746Z"),
                        "lastHeartbeatRecv" : ISODate("2021-01-29T03:21:53.243Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "192.168.31.100:37017",
                        "syncSourceHost" : "192.168.31.100:37017",
                        "syncSourceId" : 1,
                        "infoMessage" : "",
                        "configVersion" : 1
                },
                {
                        "_id" : 3,
                        "name" : "192.168.31.100:37019",
                        "health" : 1,
                        "state" : 2,
                        "stateStr" : "SECONDARY",
                        "uptime" : 23,
                        "optime" : {
                                "ts" : Timestamp(1611890503, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDurable" : {
                                "ts" : Timestamp(1611890503, 1),
                                "t" : NumberLong(1)
                        },
                        "optimeDate" : ISODate("2021-01-29T03:21:43Z"),
                        "optimeDurableDate" : ISODate("2021-01-29T03:21:43Z"),
                        "lastHeartbeat" : ISODate("2021-01-29T03:21:52.746Z"),
                        "lastHeartbeatRecv" : ISODate("2021-01-29T03:21:53.243Z"),
                        "pingMs" : NumberLong(0),
                        "lastHeartbeatMessage" : "",
                        "syncingTo" : "192.168.31.100:37017",
                        "syncSourceHost" : "192.168.31.100:37017",
                        "syncSourceId" : 1,
                        "infoMessage" : "",
                        "configVersion" : 1
                }
        ],
        "ok" : 1,
        "$clusterTime" : {
                "clusterTime" : Timestamp(1611890503, 1),
                "signature" : {
                        "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
                        "keyId" : NumberLong(0)
                }
        },
        "operationTime" : Timestamp(1611890503, 1)
}

2.4 節(jié)點(diǎn)的動(dòng)態(tài)增刪

#刪除slave 節(jié)點(diǎn) 
rs.remove("192.168.31.100:37019")
#增加節(jié)點(diǎn) 
rs.add("192.168.31.100:37019") 

2.5 測(cè)試

主庫測(cè)試(可以添加,查詢)

use lg_resume
db.lg_resume.insert({name:'test',salary:1234});
db.lg_resume.find();

進(jìn)入從庫測(cè)試(無法查詢,可以添加

#新開啟一個(gè)虛擬機(jī)窗口
./bin/mongo --port 37019
use lg_resume
db.lg_resume.find()
image-20210129112810934.png

使用rs.slaveOk解決

rs.slaveOk()
db.lg_resume.find()
image-20210129113107082.png

主節(jié)點(diǎn)宕機(jī)測(cè)試

rs.status() 查看主節(jié)點(diǎn)
rs.status()
image-20210129113728232.png
開啟一個(gè)新虛擬機(jī)窗口
ps -ef |grep java
image-20210129113833563.png
停用主機(jī)
kill -9 10201
./bin/mongo --port 37019
image-20210129114018923.png
此時(shí)發(fā)現(xiàn)主節(jié)點(diǎn)自動(dòng)變成了37018了
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容