mongodb 集羣Replica Set搭建

mongo集羣有三種方式

1.Replica Set副本
2.Sharding分片
3.Master-slave主備

通常來說,我們用第1、2種較多,第3種官方並不推薦。這裏我們主要介紹Replica Set副本集。

Replica Set

       中文翻譯叫做副本集,不過我並不喜歡把英文翻譯成中文,總是感覺怪怪的。其實簡單來說就是集羣當中包含了多份數據,保證主節點掛掉了,備節點能繼續提供數據服務,提供的前提就是數據需要和主節點一致。如下圖:

       Mongodb(M)表示主節點,Mongodb(S)表示備節點,Mongodb(A)表示仲裁節點。主備節點存儲數據,仲裁節點不存儲數據。客戶端同時連接主節點與備節點,不連接仲裁節點。

       默認設置下,主節點提供所有增刪查改服務,備節點不提供任何服務。但是可以通過設置使備節點提供查詢服務,這樣就可以減少主節點的壓力,當客戶端進行數據查詢時,請求自動轉到備節點上。這個設置叫做Read Preference Modes,同時Java客戶端提供了簡單的配置方式,可以不必直接對數據庫進行操作。

       仲裁節點是一種特殊的節點,它本身並不存儲數據,主要的作用是決定哪一個備節點在主節點掛掉之後提升爲主節點,所以客戶端不需要連接此節點。這裏雖然只有一個備節點,但是仍然需要一個仲裁節點來提升備節點級別。我開始也不相信必須要有仲裁節點,但是自己也試過沒仲裁節點的話,主節點掛了備節點還是備節點,所以咱們還是需要它的。

由於資源有限,我只使用一臺虛擬機(192.168.1.119)搭建三個節點,每個節點的端口號不一樣:

Mongodb(M)端口號27017,Mongodb(S)端口號27018,Mongodb(A)端口號27019

先官網下載mongodb文件,這裏我解壓到/usr/local/mongodb  文件夾下。

1、設置配置文件:

Mongodb(M): testrs_27017.conf

#數據存放目錄
dbpath=/usr/local/mongodb/datasource/data/db/testrs_27017

#日誌存放目錄
logpath=/usr/local/mongodb/datasource/log/testrs_27017.log

#進程文件方便停止mongodb
pidfilepath=/usr/local/mongodb/datasource/pid/testr_27017.pid

#爲每一個數據庫按照數據庫名建立文件夾存放
directoryperdb=true

#一追加的方式記錄日誌
logappend=true

#mongodb所綁定的主機上的ip地址(client端可以通過該ip進行登錄)
bind_ip=192.168.1.119

#mongodb進程所使用的端口號,默認爲27017
port=27017

#mongodb操作日誌文件的最大大小。單位爲Mb,默認爲硬盤剩餘空間的5%
oplogSize=10000

#以後臺方式運行進程
fork=true

#不預先分配存儲
noprealloc=true

#replica set(副本)的名字
replSet=testrs

 

Mongodb(S)  testrs_27018.conf

#數據存放目錄
dbpath=/usr/local/mongodb/datasource/data/db/testrs_27018

#日誌存放目錄
logpath=/usr/local/mongodb/datasource/log/testrs_27018.log

#進程文件方便停止mongodb
pidfilepath=/usr/local/mongodb/datasource/pid/testr_27018.pid

#爲每一個數據庫按照數據庫名建立文件夾存放
directoryperdb=true

#一追加的方式記錄日誌
logappend=true

#mongodb所綁定的ip地址
bind_ip=192.168.1.119

#mongodb進程所使用的端口號,默認爲27017
port=27018

#mongodb操作日誌文件的最大大小。單位爲Mb,默認爲硬盤剩餘空間的5%
oplogSize=10000

#以後臺方式運行進程
fork=true

#不預先分配存儲
noprealloc=true

#replica set(副本)的名字
replSet=testrs

 

 Mongodb(A) :testrs_27019.conf

 

#數據存放目錄
dbpath=/usr/local/mongodb/datasource/data/db/testrs_27019

#日誌存放目錄
logpath=/usr/local/mongodb/datasource/log/testrs_27019.log

#進程文件方便停止mongodb
pidfilepath=/usr/local/mongodb/datasource/pid/testr_27019.pid

#爲每一個數據庫按照數據庫名建立文件夾存放
directoryperdb=true

#一追加的方式記錄日誌
logappend=true

#mongodb所綁定的ip地址
bind_ip=192.168.1.119

#mongodb進程所使用的端口號,默認爲27017
port=27019

#mongodb操作日誌文件的最大大小。單位爲Mb,默認爲硬盤剩餘空間的5%
oplogSize=10000

#以後臺方式運行進程
fork=true

#不預先分配存儲
noprealloc=true

#replica set(副本)的名字
replSet=testrs

2、創建數據庫文件夾和日誌文件夾:

mkdir -p /usr/local/mongodb/datasource/pid

mkdir -p /usr/local/mongodb/datasource/log

mkdir -p /usr/local/mongodb/datasource/data/db/testrs_27017

mkdir -p /usr/local/mongodb/datasource/data/db/testrs_27018

mkdir -p /usr/local/mongodb/datasource/data/db/testrs_27019

 

3、啓動服務:

/usr/local/mongodb/bin/mongod -f    /文件路徑/testrs_27017.conf

/usr/local/mongodb/bin/mongod -f    /文件路徑/testrs_27018.conf

/usr/local/mongodb/bin/mongod -f    /文件路徑/testrs_27019.conf/4、查看服務情況:

[root@localhost conf]# ps -ef|grep mongo
root     13289     1  1 18:07 ?        00:02:38 ../bin/mongod -f testrs_2017.conf
root     13813     1  1 19:00 ?        00:02:12 ../bin/mongod -f testrs_2018.conf
root     13837     1  1 19:00 ?        00:02:12 ../bin/mongod -f testrs_2019.conf

5、選擇主節點進入:

/usr/local/mongodb/bin/mongo 192.168.1.119:27107

6、初始化副本集

rs.initiate()

7、添加備節點

rs.add("192.168.1.119:27018")

8、添加仲裁節點

rs.add("192.168.1.119:27019",true) 或者rs.addArb("192.168.1.119:27019")

9、查看配置

rs.conf()

 

10、 查看狀態

rs.status()

 

11、刪除節點

rs.remove("192.168.1.119:27019")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章