【Mongodb】 Sharding Replica Sets 分區叢集生產環境安裝與介紹!

來源:互聯網
上載者:User

標籤:mongodb   replica sets   分區叢集   sharding   

系統內容:Centos 6.5

官網手冊:http://docs.mongodb.org/manual/

參閱資料:《Mongodb權威指南》《Mongodb實戰》《深入學習Mongodb》

650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/47/BD/wKioL1P_H0fj-HlSAAEqqyVR3Fo773.jpg" title="1.png" alt="wKioL1P_H0fj-HlSAAEqqyVR3Fo773.jpg" />

由上方的官方拓撲可以看出,Sharding叢集成員由Shard、ConfigServer、Router組成

Shard:可以是一個執行個體,官方推薦生產環境使用複本集Replica Set

Config Server:為三台主機,當有1台或者2台Server當機,對於使用者而言,叢集還是可讀寫的,不過叢集不會再進行Chunk分裂和遷移,直到正常恢複為止。

Router:Mongos進程,數量不進行限制,建議針對一個應用伺服器只針對一個mongos進程。

 

下面我會進行一個類比環境的組建,注意,實際生產環境中,每個執行個體都是單獨的主機,每個config Server也會是單獨的主機,不要陷入邏輯的思維中。


主機規劃:

主機A(Shard1,由三個執行個體組成的Replica Sets):10.1.2.11:2710110.1.2.11:2710210.1.2.11:27103 主機B(Shard2,由三個執行個體組成的Replica Sets):10.1.2.12:2720110.1.2.12:2720210.1.2.12:27203 主機C:(三個config Server執行個體,一個mongos執行個體)10.1.2.10:2730110.1.2.10:2730210.1.2.10:2730310.1.2.10:27400(mongos)


A、B主機的操作基本一致,這裡我寫一遍在A上的操作。

1. 

下載並解壓Mongodb二進位源碼包!

最新Mongodb穩定安裝包下載:http://www.mongodb.org/downloads

tar xzf mongodb-linux-x86_64-2.6.4.tgzmv mongodb-linux-x86_64-2.6.4/usr/local/mongodb

2.為每個執行個體建立資料目錄:

mkdir -p /data/shard1_1mkdir -p /data/shard1_1mkdir -p /data/shard1_1

3.建立Mongodb日誌及PID檔案目錄

mkdir /var/log/mongodbmkdir /var/run/mongodb

4.建立Mongodb設定檔目錄,及配置合理的設定檔內容。(生產環境我建議通過設定檔來控制啟動參數!這步,由於我實驗每個主機開了多個執行個體,就不用設定檔了,大家如果是生產環境,可以參考下!)

cd /usr/local/mongodb/mkdir etcvim etc/mongod.conf#Filename:mongodb.conf#Now use options:fork = trueport = 27101quiet = truereplSet = sharding1dbpath = /data/mongodb   pidfilepath = /var/run/mongodb/mongod.pidlogpath = /var/log/mongodb/mongod.loglogappend = truejournal = true

5.配置全域環境變數:

echo"PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile

執行.  /etc/profile 可立即使目前使用者生效。這樣的目的是為了方便執行Mongodb相關命令!

6.啟動執行個體:

mongod --shardsvr --replSet sharding1--port 27101 --dbpath /data/shard1_1/ --pidfilepath /var/run/mongodb/sharding1_1.pid--logpath /var/log/mongodb/sharding1_1.log --logappend –fork mongod --shardsvr --replSet sharding1--port 27102 --dbpath /data/shard1_2/ --pidfilepath /var/run/mongodb/sharding1_2.pid--logpath /var/log/mongodb/sharding1_2.log --logappend –forkmongod --shardsvr --replSet sharding1--port 27103 --dbpath /data/shard1_3/ --pidfilepath /var/run/mongodb/sharding1_3.pid--logpath /var/log/mongodb/sharding1_3.log --logappend –fork

7.初始化Shard1的 Replica Set(複本集):

# mongo --port 27101MongoDB shell version: 2.6.4connecting to: 127.0.0.1:27101/test> use adminswitched to db admin>db.runCommand({"replSetInitiate" :{... "_id":"sharding1",... "members":[...{"_id":1,"host":"10.1.2.11:27101"},...{"_id":2,"host":"10.1.2.11:27102"},...{"_id":3,"host":"10.1.2.11:27103"},... ]}})#執行後返回:{         "info": "Config now saved locally.  Shouldcome online in about a minute.",         "ok": 1}

8.驗證Replica Sets狀態:

sharding1:PRIMARY> rs.status(){         "set": "sharding1",         "date": ISODate("2014-08-28T08:29:45Z"),         "myState": 1,         "members": [                   {                            "_id": 1,                            "name": "10.1.2.11:27101",                            "health": 1,                            "state": 1,                            "stateStr": "PRIMARY",                            "uptime": 577,                            "optime": Timestamp(1409214151, 1),                            "optimeDate": ISODate("2014-08-28T08:22:31Z"),                            "electionTime": Timestamp(1409214162, 1),                            "electionDate": ISODate("2014-08-28T08:22:42Z"),                            "self": true                   },                   {                            "_id": 2,                            "name": "10.1.2.11:27102",                            "health": 1,                            "state": 2,                            "stateStr": "SECONDARY",                            "uptime": 431,                            "optime": Timestamp(1409214151, 1),                            "optimeDate": ISODate("2014-08-28T08:22:31Z"),                            "lastHeartbeat": ISODate("2014-08-28T08:29:45Z"),                            "lastHeartbeatRecv": ISODate("2014-08-28T08:29:43Z"),                            "pingMs": 0,                            "syncingTo": "10.1.2.11:27101"                   },                   {                            "_id": 3,                            "name": "10.1.2.11:27103",                            "health": 1,                            "state": 2,                            "stateStr": "SECONDARY",                            "uptime": 431,                            "optime": Timestamp(1409214151, 1),                            "optimeDate": ISODate("2014-08-28T08:22:31Z"),                            "lastHeartbeat": ISODate("2014-08-28T08:29:45Z"),                            "lastHeartbeatRecv": ISODate("2014-08-28T08:29:45Z"),                            "pingMs": 12,                            "syncingTo": "10.1.2.11:27101"                   }         ],         "ok": 1}


B主機操作與A主機基本一致,配置完B主機後,再繼續下面的操作!


主機C上的配置:

1.解壓源碼包

tar xzf mongodb-linux-x86_64-2.6.4.tgzmv mongodb-linux-x86_64-2.6.4/usr/local/mongodb

2.配置config及日誌目錄:

mkdir -p /data/config_1mkdir -p /data/config_2mkdir -p /data/config_3mkdir -p /var/log/mongodb

3.配置全域環境變數:

echo"PATH=$PATH:/usr/local/mongodb/bin" >> /etc/profile

4.啟動config Server執行個體:

mongod --configsvr --dbpath /data/config_1/--port 27301 --logpath /var/log/mongodb/dbconfig_1.log --logappend –fork mongod --configsvr --dbpath /data/config_2/--port 27302 --logpath /var/log/mongodb/dbconfig_2.log --logappend –fork mongod --configsvr --dbpath /data/config_3/--port 27303 --logpath /var/log/mongodb/dbconfig_3.log --logappend –fork

5.啟動mongos執行個體:

mongos --configdb10.1.2.10:27301,10.1.2.10:27302,10.1.2.10:27303 --port 27400 --logpath/var/log/mongodb/mongos.log --logappend –fork

註:生產環境mongos一樣建議用設定檔來控制,例如:

#mongos.conf#Options:port =27400fork =truelogappend= truelogpath= /var/log/mongodb/mongos.logpidfilepath= /var/run/mongos.pidconfigdb= 10.1.2.10:27301,10.1.2.10:27302,10.1.2.10:27303

6.登入mongos進程,配置Shard Cluster:

# mongo --port 27400 adminMongoDB shell version: 2.6.4connecting to: 127.0.0.1:27400/adminmongos>mongos>db.runCommand({addshard:"sharding1/10.1.2.11:27101,10.1.2.11:27102,10.1.2.11:27103"});{ "shardAdded" :"sharding1", "ok" : 1 }mongos>db.runCommand({addshard:"sharding2/10.1.2.12:27201,10.1.2.12:27202,10.1.2.12:27203"});{ "shardAdded" :"sharding2", "ok" : 1 }

7.驗證Sharding叢集狀態:

mongos> sh.status()--- Sharding Status --- sharding version: {         "_id": 1,         "version": 4,         "minCompatibleVersion": 4,         "currentVersion": 5,         "clusterId": ObjectId("53fee749becfed3ca6de7051")} shards:         {  "_id" : "sharding1",  "host" :"sharding1/10.1.2.11:27101,10.1.2.11:27102,10.1.2.11:27103" }         {  "_id" : "sharding2",  "host" :"sharding2/10.1.2.12:27201,10.1.2.12:27202,10.1.2.12:27203" } databases:         {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }         {  "_id" : "test",  "partitioned" : false,  "primary" : "sharding2" } mongos>

至此,全部的環境建制完畢!


附:下面提一點關於分區的操作:

啟用資料庫分區:db.runCommand({enablesharding:"dbname"})  //這裡要在admin資料庫下操作或 sh.enableSharding(“dbname”)   //這個可以全域操作 Collection啟用分區(這裡要選取一個shard key,詳細介紹請參照官網):db.runCommand({shardcollection:"dbname.collectionname",key{_id:1}})  //同上!或 sh.shardCollection( "records.active", { a:"hashed" } )


本文出自 “貴在堅持_IT部落格” 部落格,請務必保留此出處http://fdgui.blog.51cto.com/3484207/1546290

【Mongodb】 Sharding Replica Sets 分區叢集生產環境安裝與介紹!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.