標籤: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 分區叢集生產環境安裝與介紹!