天天看點

mongodb的複制集配置

什麼是mongodb副本集:

    mongodb副本集是一組mongodb伺服器組成的一個副本叢集。叢集中包含一個Primary主伺服器以及若幹個Secondary備份伺服器或者Artiber選舉伺服器。Secondary會向Primary伺服器同步資料,實作叢集内伺服器的資料備份。當Primary當機或無法提供服務時,叢集會再次選舉一個新的Primary伺服器,以保證服務的正常,以及資料的安全。

配置副本集:

配置環境:

         Server1 : 192.168.189.129:5555

         Server2 : 192.168.189.131:5555

         Server3 : 192.168.189.132:5555

一:下載下傳,安裝mongodb。

1

2

3

4

<code> </code><code>#cd /usr/local/src</code>

<code> </code><code>#wget http:</code><code>//downloads.mongodb.org/linux/mongodb-linux-x86_64-2.2.2.tgz</code>

<code> </code><code>#tar -zxvf mongodb-linux-x86_64-2.2.2.tgz</code>

<code> </code><code>#mv mongodb-linux-x86_64-2.2.2  /usr/local/mongodb</code>

  建立資料庫目錄與日志目錄

5

6

<code>server1:</code>

<code>     </code><code>#mkdir -p /data/mongodb/db1/</code>

<code>     </code><code>#mkdir -p /usr/local/mongodb/logs/</code>

<code>Server2:</code>

<code>     </code><code>#mkdir -p /data/mongodb/db2/</code>

二:建立,配置mongodb.conf。

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

<code>#cd /usr/local/mongodb/</code>

<code>Server1:</code>

<code>#vi mongodb.conf</code>

<code>port = 5555</code>

<code>dbpath = </code><code>/data/mongodb/db1/</code>

<code>logpath = </code><code>/usr/local/mongodb/logs/m1</code><code>.log</code>

<code>rest = </code><code>true</code>

<code>fork = </code><code>true</code>

<code>replSet = cmhdbset</code><code>/192</code><code>.168.189.129:5555,192.168.189.131:5555    </code><code>//</code><code>配置副本集叢集</code>

<code>logappend = </code><code>true</code>

<code>quiet = </code><code>true</code>

<code>journal = </code><code>true</code>

<code> </code> 

<code>dbpath =  </code><code>/data/mongodb/db2/</code>

<code>logpath = </code><code>/usr/local/mongodb/logs/m2</code><code>.log</code>

<code>replSet = cmhdbset</code><code>/192</code><code>.168.189.129:5555,192.168.189.131:5555</code>

三:啟動mongodb,觀察mongodb副本集狀态。

  依次啟動server1,server2的mongodb:

<code>#/usr/local/mongodb/bin/mongod –f /usr/local/mongodb/mongodb.conf</code>

  檢視日志,發現無法連接配接副本集:

<code>#tail –f /usr/local/mongodb/logs/m1.log</code>

<code>Mon Jul 29 16:48:53 [rsStart] replSet can't get </code><code>local</code><code>.system.replset config from self or any seed (EMPTYCONFIG)</code>

 原因是還未初始化副本集,是以無法連接配接,是以需要初始化副本集。

       在server1上使用用戶端腳本連接配接mongodb,并初始化副本集,初始化指令如下:

<code>#db.runCommand({"replSetInitiate" : { "_id" : "cmhdbset" ,"members" : [ { "_id" : 1, "host" : "192.168.189.129:5555"},{ "_id" : 2, "host" : "192.168.189.131:5555"}]}})</code>

  操作如下圖:

<a href="http://s3.51cto.com/wyfs02/M00/70/19/wKiom1Wxk5GDwGR-AAH5trle_Q4442.jpg" target="_blank"></a>

  檢視副本集節點狀态

<a href="http://s3.51cto.com/wyfs02/M01/70/16/wKioL1WxlbSjp8ChAALH54K9o2w723.jpg" target="_blank"></a>

  可以看到Server1已經被選舉為“Primary”活躍節點,Server2成為“Secondary”備份節點。

四:增加mongodb副本集節點。

  這時可以把Server3增加到cmhdbset副本集中。

  首先安裝mongodb,參考第一步。

  建立并配置mongodb.conf:

<code>#vi /usr/local/mongodb/mongodb.conf</code>

<code>dbpath = </code><code>/home/data/mongodb/db3/</code>

<code>logpath = </code><code>/home/usr/local/mongodb/logs/m3</code><code>.log</code>

<code>replSet = cmhdbset</code><code>/192</code><code>.168.189.129:5555,192.168.189.131:5555 </code><code>//</code><code>添加已有的叢集成員即可</code>

 開啟server3的mongodb:

 檢視日志發現server3無法連接配接副本集:

<a href="http://s3.51cto.com/wyfs02/M00/70/16/wKioL1WxlrvyICeJAAEVYxEQ8_A050.jpg" target="_blank"></a>

  這是因為副本集中還沒有server3的資訊,需要在Primary節點上添加Server3節點資訊:

<a href="http://s3.51cto.com/wyfs02/M01/70/19/wKiom1WxlQ7TKpY0AABgvwQw1oY579.jpg" target="_blank"></a>

  檢視server3日志,現在server3已經加入副本集,狀态為Secondary:

<a href="http://s3.51cto.com/wyfs02/M00/70/19/wKiom1WxlTyyojZnAAu7Oc5_6dg473.jpg" target="_blank"></a>

  檢視副本集狀态,看到已經有了server3的資訊,并且狀态為Secondary:

<a href="http://s3.51cto.com/wyfs02/M02/70/16/wKioL1Wxl-TQ0Kj8AAQXDzGkemc936.jpg" target="_blank"></a>

五:删除已有節點

  登陸Primary節點,删除Server3節點:

<a href="http://s3.51cto.com/wyfs02/M02/70/19/wKiom1WxljrxDJDNAAOpvLE4Py0829.jpg" target="_blank"></a>

  檢視副本集資訊,Server3節點已經移除掉了:

<a href="http://s3.51cto.com/wyfs02/M00/70/16/wKioL1WxmDeAlWGjAAQmeHMbX-8092.jpg" target="_blank"></a>

  登陸Server3的mongodb,發現提示符變為”removed”:

==============================================================================

注:預設情況下,Secendary結點不能讀寫,需要設定了rs.slaveOk()後,才能進行讀操作。

注:删除和添加副本集節點操作隻能在Primary活躍節點進行。并且目前的活躍節點無法被删除。

注:添加一個仲裁節點:primary&gt;rs.addArb("host:port")

  仲裁節點隻參與投票,不參與選舉。

副本集節點優先級配置:

在副本集中配置節點的優先級,可以使之按照我們的想法,來決定由哪台伺服器擔任Primay節點。

  設定Server1的優先級參數priority=20(預設為1,範圍1-100):

<a href="http://s3.51cto.com/wyfs02/M02/70/16/wKioL1WxmbbADtDDAAWthTNaJAw910.jpg" target="_blank"></a>

  檢視結點配置,Server1的priority參數已經被設定為20:

<a href="http://s3.51cto.com/wyfs02/M00/70/16/wKioL1Wxme3SOycSAAG-ci2qdsw149.jpg" target="_blank"></a>

  配置完以後,Server1會被選舉為primary節點。

      若想配置Secondary-Only模式,隻要把伺服器的priority設定為0即可。

本文轉自 icenycmh 51CTO部落格,原文連結:http://blog.51cto.com/icenycmh/1677825,如需轉載請自行聯系原作者