mongodb複製集的實現

來源:互聯網
上載者:User

標籤:mongodb

    複製集(Replica Sets),是一個基於主/從複製機制的複製功能,進行同一資料的非同步同步,從而使多台機器擁有同一資料的都多個副本,由於有自動容錯移轉和恢複特性,當主庫宕機時不需要使用者幹預的情況下自動切換到其他備份伺服器上做主庫,一個叢集最多可以支援7個伺服器,並且任意節點都可以是主節點。所有的寫操作都被分發到主節點,而讀操作可以在任何節點上進行,實現讀寫分離,提高負載。

資源有限測試一個VM開3個執行個體:

環境:centos7.0

192.168.1.21:20011 P

192.168.1.21:20012 S

192.168.1.21:20013  A

mongodb verson:3.2

搭建過程:

1、下載包、並解壓

2、添加相關的目錄檔案

[[email protected] mongodb27017]# ll

總用量 8

drwxr-xr-x. 2 root root 4096 12月 17 00:59 bin

drwxr-xr-x. 2 root root   30 12月 17 10:47 conf

drwxr-xr-x  4 root root 4096 12月 17 11:19 data

drwxr-xr-x. 2 root root   20 12月 17 01:13 key

drwxr-xr-x. 2 root root   23 12月 17 10:20 logs

#3個執行個體配置一樣

3、解壓包下bin目錄下的所有檔案到cp到當前的建立的bin目錄下

4、3個執行個體的設定檔一致


[[email protected] conf]# cat mongodb27017.conf 

port=20011#每個執行個體連接埠,根據實際來配置

dbpath=/export/mongodb27017/data #資料目錄

logpath=/export/mongodb27017/logs/mongod.log #日誌目錄

fork=true

logappend=true

#keyFile=/export/mongodb27017/key/mongodb#後面介紹

nohttpinterface=true

replSet=mongodb ##複製集的名字,

5、啟動3個執行個體:


 /export/mongodb27018/bin/mongod -f /export/mongodb27018/conf/mongodb27018.conf

/export/mongodb27019/bin/mongod -f /export/mongodb27019/conf/mongodb27019.conf

/export/mongodb27017/bin/mongod -f /export/mongodb27017/conf/mongodb27017.conf

#需要把解壓包bin目錄下檔案分別拷貝到這3個啟動目錄下,或者一個作為basedir也可以,其他分開

6、配置複製集

/export/mongodb27017/bin/mongo --port 20011#根據自己實際的定義,進入資料庫

1、配置成員的關係:

     config= {_id:"mongodb",members:[{_id:0,host:"192.168.1.21:20011", priority : 3}]}       (給了優先順序為3,mongodb為複製集的名)

2、初始化:

 >rs.initiate(config);  

3、添加備節點、仲裁節點


rs.add("192.168.1.21:20012")       添加備節點

rs.addArb("192.168.1.21:20013")    添加仲裁節點

rs.status()#查看狀態

rs.conf()#查看複本集成員及其優先順序(看好成員的順序,優先順序從1-100,越大的優先順序越高)


config=rs.conf()           進行優先順序設定

config.members[0].priority = 3                 設定主節點優先順序為3

 config.members[1].priority = 2                 設定備節點優先順序為2

 config.members[2].priority =  1                設定仲裁節點優先順序為1

 rs.remove("ip:port")                            移除已經存在的成員

 rs.reconfig(config)          儲存配置,生效

7、設定備節點為slave

mongodb:SECONDARY> show dbs

2016-12-17T12:26:22.621+0800 E QUERY    [thread1] Error: listDatabases failed:{ "ok" : 0, "errmsg" : "not master and slaveOk=false", "code" : 13435 } :

登陸到20012執行個體上執行:rs.slaveOk()

8、測試主節點宕機是否能夠切換

總結:    

    mongoDB的主從模式其實就是一個單副本的應用,沒有很好的擴充性和容錯性。而複本集具有多個副本保證了容錯性,就算一個副本掛掉了還有很多副本存在,並且解決了上面第一個問題“主節點掛掉了,整個叢集內會自動切換”,如果節點掛了,它會重新選舉新的主節點。對於普通的業務能夠滿足,但高並發的話,複製集是無法滿足,就需要shard的,實現叢集高可用,可以藉助LVS或者其他。





本文出自 “DBSpace” 部落格,請務必保留此出處http://dbspace.blog.51cto.com/6873717/1883560

mongodb複製集的實現

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.