MongoDB 主從複製集搭建

1、Mongodb複製集簡介mongodb

什麼是複製集?

複製集(Replica Sets)是額外的數據副本,是跨多個服務器同步數據的過程,複製集提供了冗餘並增長了數據可用性,經過複製集能夠對硬件故障和中斷的服務進行恢復。數據庫

MongoDB複製集原理:

mongodb的複製集至少須要兩個節點。其中一個是主節點,負責處理客戶端請求,其他的都是從節點,負責複製主節點上的數據。
vim

mongodb各個節點常見的搭配方式爲:一主一從、一主多從。安全

主節點記錄在其上的全部操做oplog,從節點按期輪詢主節點獲取這些操做,而後對本身的數據副本執行這些操做,從而保證從節點的數據與主節點一致。服務器

MongoDB複製結構圖以下所示:ide

原理結構圖

以上結構圖中,客戶端從主節點讀取數據,在客戶端寫入數據到主節點時, 主節點與從節點進行數據交互保障數據的一致性。spa

複製集的優點:3d

讓數據更安全
搞數據可用性
災難恢復
無停機維護(如備份,重建索引,故障轉移)
讀縮放(額外的副本讀取)
副本集對應用程序是透明的日誌

複製集的特色:orm

N個幾點的羣集
任何節點可做爲主節點
全部寫入操做都在主節點上
自動故障轉移
自動恢復

主從切換:

1.手動切換:主動放棄primary,其他從服務器會選舉出主服務器
2.自動切換:關閉MongoDB服務,其他從服務器會選舉出主服務器


2、實驗環境:

1.安裝MongoDB連接:Centos 7 超簡單yum源安裝MongoDB

2.由於是實驗,因此在一臺Centos 7虛擬機的MongoDB服務器進行配置複製集,IP:192.168.233.6

3.添加配置開啓4個實例,端口號分別爲:

1)27017
2)27018
3)27019
4)27020

4.實驗操做:4個實例   開啓三個  1主2個從   額外添加複製集追加實例27020 節點      撤銷實例27020節點


3、操做步驟

1.安裝MongoDB完成後,默認端口號是27017

額外添加3個實例

首先須要建立三個數據存儲目錄,三個日誌文件

mkdir -p /data/mongodb/mongodb{2,3,4}                   #建立3個數據文件目錄
mkdir -p /data/mongodb/logs                                                 #建立日誌文件目錄
touch /data/mongodb/logs/mongodb{2,3,4}.log             #建立3個日誌文件
chmod 777 /data/mongodb/logs/*.log                         #修改日誌文件的權限,能寫能讀,最大權限

1

1.1

2.修改 27017端口默認MongoDB的配置文件,開啓複製集

vim /etc/mongod.conf

2.1開啓複製集,而且命名yang

3.由於修改過配置文件因此須要關閉並從新開啓MongoDB

mongod -f /etc/mongod.conf  --shutdown                  #關閉MongoDB

4

mongod -f /etc/mongod.conf                                   #開啓MongoDB

5

4.複製並生成3個節點配置文件,進行修改

[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod2.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod3.conf
[root@localhost logs]# cp -p /etc/mongod.conf /etc/mongod4.conf


5.須要修改每個節點的配置文件

[root@localhost logs]# vim /etc/mongod2.conf

# vim /etc/mongod2.conf   

      .......

path: /data/mongodb/logs/mongodb2.log               //每一個實例指定本身日誌目錄

     .......

dbPath: /data/mongodb/mongodb2                        //每一個實例指定本身的數據目錄

     port: 27018                                                          //指定端口分別爲2701八、 27019 、 27020

        .......

     replication:                                           //開啓全部實例的複製參數:定義一個 replSetName: yang

                replSetName: yang


[root@localhost logs]# vim /etc/mongod3.conf

# vim /etc/mongod3.conf   

      .......

path: /data/mongodb/logs/mongodb3.log               //每一個實例指定本身日誌目錄

     .......

dbPath: /data/mongodb/mongodb3                        //每一個實例指定本身的數據目錄

     port: 27019                                       //指定端口分別爲2701八、 27019 、 27020

        .......

     replication:                          //開啓全部實例的複製參數:定義一個 replSetName: yang

                replSetName: yang


[root@localhost logs]# vim /etc/mongod4.conf

# vim /etc/mongod4.conf   

      .......

path: /data/mongodb/logs/mongodb4.log               //每一個實例指定本身日誌目錄

     .......

dbPath: /data/mongodb/mongodb4                        //每一個實例指定本身的數據目錄

     port: 27020                                          //指定端口分別爲2701八、 27019 、 27020

        .......

     replication:                           //開啓全部實例的複製參數:定義一個 replSetName: yang

                replSetName: yang


6.設置配置以上步驟修改完成mongo2  mongo3  mongo4後,開啓服務

[root@localhost logs]# mongod -f /etc/mongod2.conf


[root@localhost logs]# mongod -f /etc/mongod3.conf


[root@localhost logs]# mongod -f /etc/mongod4.conf

#查看下四個端口的MongoDB開啓

[root@localhost logs]# netstat -natp | grep mongo

四個端口的mongodb所有開啓

7.配置三個節點的複製集

#首先進入默認MongoDB數據庫中

mongo

#建立三個節點複製集

cfg={"_id":"yang","members":[{"_id":0,"host":"192.168.233.6:27017"},{"_id":1,"host":"192.168.233.6:27018"},{"_id":2,"host":"192.168.233.6:27019"}]}

成功添加3個節點到複製集中

#初始化配置時保證從節點沒有數據

rs.initiate(cfg)

6

rs.status()      #查看複製集的狀態

7

主節點:27017端口

主服務器27017

從節點:27018端口

從服務器 27018

從節點:27019端口

從服務器 27019

#由於以前只是建立了三個節點的複製集,如今演示添加27020端口的節點

#首先須要進入主節點PRIMARY  27017


#添加節點 ,在主節點上才能進行操做 primary

rs.add("192.168.233.6:27020")

8

rs.status()      #查看複製集的狀態

9

#既然能添加節點,就能刪除節點:
#刪除節點 ,在主節點上才能進行操做  primary

rs.remove("192.168.233.6:27020")

10

相關文章
相關標籤/搜索