MongoDB高可用部署

來源:互聯網
上載者:User

標籤:mongo 分區 叢集 高可用

規劃部署情況如下:

650) this.width=650;" src="http://www.wangerbao.com/wp-content/uploads/2017/04/20170412184145_91477.png" style="border:0px;" />

1、準備基礎環境

       在網上下載mongodb-linux-x86_64-rhel62-3.4.2.gz放到各個伺服器上,解壓後放在對應的目錄下,然後在根目錄下建立data檔案夾統一用於存放資料和配置資訊。

2、搭建配置叢集243-244-245

    在mongo的根目錄下建立start指令碼,內容如下

bin/./mongod --dbpath data/ --logpath data/mongo.log  --configsvr --fork --port 20243 --replSet config

  其中 configsvr表示佈建服務,fork表示後台啟動,replSet表示叢集,config表示叢集名字

  同樣在其他佈建服務上也建立對應的start開機檔案,記得修改連接埠哦。

  啟動-3台都啟動

./start

 隨便進入一台機器,進入mongo,運行如下命令

>config = { _id:"config", configsvr:true, members:[ {_id:0,host:‘172.16.13.243:20243‘}, {_id:1,host:‘172.16.13.244:20244‘}, {_id:2,host:‘172.16.13.245:20245‘} ] }{"_id" : "config","configsvr" : true,"members" : [{"_id" : 0,"host" : "172.16.13.243:20243"},{"_id" : 1,"host" : "172.16.13.244:20244"},{"_id" : 2,"host" : "172.16.13.245:20245"}]}> rs.initiate(config){ "ok" : 1 }

查看叢集狀態

config:PRIMARY> rs.status();{"set" : "config","date" : ISODate("2017-04-12T09:29:51.889Z"),"myState" : 1,"term" : NumberLong(1),"configsvr" : true,"heartbeatIntervalMillis" : NumberLong(2000),"optimes" : {"lastCommittedOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"readConcernMajorityOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"appliedOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"durableOpTime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)}},"members" : [{"_id" : 0,"name" : "172.16.13.243:20243","health" : 1,"state" : 1,"stateStr" : "PRIMARY","uptime" : 621,"optime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2017-04-12T09:29:42Z"),"infoMessage" : "could not find member to sync from","electionTime" : Timestamp(1491989360, 1),"electionDate" : ISODate("2017-04-12T09:29:20Z"),"configVersion" : 1,"self" : true},{"_id" : 1,"name" : "172.16.13.244:20244","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 42,"optime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2017-04-12T09:29:42Z"),"optimeDurableDate" : ISODate("2017-04-12T09:29:42Z"),"lastHeartbeat" : ISODate("2017-04-12T09:29:50.238Z"),"lastHeartbeatRecv" : ISODate("2017-04-12T09:29:51.467Z"),"pingMs" : NumberLong(0),"syncingTo" : "172.16.13.243:20243","configVersion" : 1},{"_id" : 2,"name" : "172.16.13.245:20245","health" : 1,"state" : 2,"stateStr" : "SECONDARY","uptime" : 42,"optime" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDurable" : {"ts" : Timestamp(1491989382, 1),"t" : NumberLong(1)},"optimeDate" : ISODate("2017-04-12T09:29:42Z"),"optimeDurableDate" : ISODate("2017-04-12T09:29:42Z"),"lastHeartbeat" : ISODate("2017-04-12T09:29:50.237Z"),"lastHeartbeatRecv" : ISODate("2017-04-12T09:29:51.537Z"),"pingMs" : NumberLong(0),"syncingTo" : "172.16.13.243:20243","configVersion" : 1}],"ok" : 1}

3、搭建分區叢集246-247

在246機器的mongo的根目錄下建立start指令碼,內容如下

[[email protected] mongodb-32246]# cat start bin/./mongod --dbpath data/ --logpath data/mongo.log --fork --port 32246 --replSet 246  --shardsvr

replSet代表叢集,shardsvr代表分區,246代表叢集的名字,在246的其他mongo目錄下也建立對應的start指令碼,記得修改連接埠,啟動指令碼。

運行如下命令

config = {... _id:‘246‘,... members:[... {_id:0,host:‘172.16.13.246:30246‘},... {_id:1,host:‘172.16.13.246:31246‘},... {_id:2,host:‘172.16.13.246:32246‘}... ]... }{"_id" : "246","members" : [{"_id" : 0,"host" : "172.16.13.246:30246"},{"_id" : 1,"host" : "172.16.13.246:31246"},{"_id" : 2,"host" : "172.16.13.246:32246"}]}>    rs.initiate(config){ "ok" : 1 }

查看叢集狀態

這裡不在列出,同樣的操作在247上執行一次,記得修改叢集名字


4、搭建mongos

在241的mongos根目錄下建立start指令碼

[[email protected] mongodb-3.4.2]# cat start bin/./mongos --logpath data/mongo.log --fork  --configdb config/172.16.13.243:20243,172.16.13.244:20244,172.16.13.245:20245

進入mongos的命令介面,

添加分區

mongos> sh.addShard("246/172.16.13.246:30246,172.16.13.246:31246,172.16.13.246:32246"){ "shardAdded" : "246", "ok" : 1 }mongos> sh.addShard("247/172.16.13.247:30247,172.16.13.247:31247,172.16.13.247:32247"){ "shardAdded" : "247", "ok" : 1 }

在242上也運行上述命令。

設定test.aj表根據_id欄位按照hash方式分配資料

mongos> sh.enableSharding("test"){ "ok" : 1 }mongos> sh.shardCollection("test.aj", { _id: ‘hashed‘}){ "collectionsharded" : "test.aj", "ok" : 1 }

5、插入資料

for (var id = 1; id <= 10000; id++) db.aj.save({  "_class" : "java.util.HashMap",  "CAh" : "123",  "CCbrXm" : "wangchy",  "valid" : 0,  "fydm" : "2400",  "CAjmc" : "ptest",  "CCbr" : "ptest",  "WCreateTime" : ISODate("2015-10-13T18:29:06.649Z")});

6、驗證結果

246主節點驗證資料量

246:PRIMARY> db.aj.count();5082

246子節點驗證資料量

246:SECONDARY> use testswitched to db test246:SECONDARY> db.getMongo().setSlaveOk();246:SECONDARY> db.aj.count();5082

247重複上述操作

247:PRIMARY> db.aj.count();4918247:SECONDARY> use test;switched to db test247:SECONDARY> db.getMongo().setSlaveOk();247:SECONDARY> db.aj.count();4918



本文出自 “www.wangerbao.com” 部落格,請務必保留此出處http://wangerbao.blog.51cto.com/4363165/1915341

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.