MongoDB AutoSharding+Replication sets穩(wěn)定性測(cè)試
單Replication sets設(shè)計(jì):
如圖所示,10.9.3.228只啟動(dòng)Mongos和config兩個(gè)服務(wù)
- ^_^[root@:/usr/local/mongodb/bin]#cat runServerConfig.sh
- ./mongod --configsvr --dbpath=../data/config --logpath=../data/config.log --fork
- ^_^[root@:/usr/local/mongodb/bin]#cat runServerMongos.sh
- ./mongos --configdb 10.7.3.228:27019 --logpath=../data/mongos.log --logappend --fork
注意:Mongos里面的ip和端口是config服務(wù)的ip和端口
先進(jìn)性配置AutoSharding
163的shardv已經(jīng)啟動(dòng)了,只要啟動(dòng)下165服務(wù)器的autoSharding服務(wù)
- [root@localhost bin]# cat runServerShard.sh
- ./mongod --shardsvr -dbpath=../data/mongodb --logpath=../data/shardsvr_logs.txt --fork
再在228服務(wù)器上進(jìn)行相應(yīng)Sharding配置
use admin
- > db.runCommand({addshard:"10.10.21.163:27018"});
- { "shardAdded" : "shard0000", "ok" : 1 }
- > db.runCommand({addshard:"10.10.21.165:27018"});
- { "shardAdded" : "shard0001", "ok" : 1 }
- > db.runCommand({enableSharding:"test"})
- { "ok" : 1 }
- > db.runCommand({shardcollection:"test.users",key:{_id:1}})
- { "collectionsharded" : "test.users", "ok" : 1 }
然后分別在163和164服務(wù)器上啟動(dòng)rep服務(wù),163要單獨(dú)啟動(dòng)shard服務(wù)
163:
- [root@localhost bin]# cat runServerShard.sh
- ./mongod --shardsvr --dbpath=../data/mongodb --logpath=../data/shardsvr_logs.txt --fork --replSet set163164
164:
- [root@localhost bin]# cat runServerShard.sh
- ./mongod --dbpath=../data --logpath=../data/shardsvr_logs.txt --fork --replSet set163164
繼續(xù)配置163和164的Replication
- [root@localhost bin]# ./mongo 10.10.21.163:27018
- MongoDB shell version: 1.8.2
- connecting to: 10.10.21.163:27018/test
- > cfg={_id:"set163164",members:[
- ... {_id:0,host:"10.10.21.163:27018"},
- ... {_id:1,host:"10.10.21.164:27017"}
- ... ]}
- {
- "_id" : "set163164",
- "members" : [
- {
- "_id" : 0,
- "host" : "10.10.21.163:27018"
- },
- {
- "_id" : 1,
- "host" : "10.10.21.164:27017"
- }
- ]
- }
- > rs.initiate(cfg)
- {
- "info" : "Config now saved locally. Should come online in about a minute.",
- "ok" : 1
- }
- > rs.conf()
- {
- "_id" : "set163164",
- "version" : 1,
- "members" : [
- {
- "_id" : 0,
- "host" : "10.10.21.163:27018"
- },
- {
- "_id" : 1,
- "host" : "10.10.21.164:27017"
- }
- ]
- }
- set163164:PRIMARY>
- set163164:PRIMARY>
- set163164:PRIMARY> show dbs
- admin (empty)
- local 14.1962890625GB
- set163164:PRIMARY> use local
- switched to db local
- set163164:PRIMARY> show collections
- oplog.rs
- system.replset
- set163164:PRIMARY> db.system.replset.find()
- { "_id" : "set163164", "version" : 1, "members" : [
- {
- "_id" : 0,
- "host" : "10.10.21.163:27018"
- },
- {
- "_id" : 1,
- "host" : "10.10.21.164:27017"
- }
- ] }
- set163164:PRIMARY> rs.isMaster()
- {
- "setName" : "set163164",
- "ismaster" : true,
- "secondary" : false,
- "hosts" : [
- "10.10.21.163:27018",
- "10.10.21.164:27017"
- ],
- "maxBsonObjectSize" : 16777216,
- "ok" : 1
- }
至此Replication sets配置成功!
至此AutoSharding+Rep配置成功。然后進(jìn)行測(cè)試穩(wěn)定性階段。(剛才注意 應(yīng)該先配sharding再配Replication)
先看下結(jié)果:
可以看到,總共插入2000W條數(shù)據(jù),163和164相同大小 165屬于分片 數(shù)據(jù)。
我現(xiàn)在進(jìn)行穩(wěn)定性測(cè)試:
斷掉163服務(wù)器。
Mongos那再相應(yīng)進(jìn)行查詢:
- > db.users.find()
- error: { "$err" : "error querying server: 10.10.21.163:27018", "code" : 13633 }
- > db.users.find()
- error: {
- "$err" : "DBClientBase::findOne: transport error: 10.10.21.163:27018 query: { setShardVersion: \"test.users\", configdb: \"10.7.3.228:27019\", version: Timestamp 11000|1, serverID: ObjectId('4e2f64af98dd90fed26585a4'), shard: \"shard0000\", shardHost: \"10.10.21.163:27018\" }",
- "code" : 10276
- }
- > db.users.find()
- error: { "$err" : "socket exception", "code" : 11002 }
直接出現(xiàn)錯(cuò)誤!
再進(jìn)行手動(dòng)添加164服務(wù)器!
- > db.runCommand({addshard:"10.10.21.164:27017"});
- {
- "ok" : 0,
- "errmsg" : "host is part of set: set163164 use replica set url format <setname>/<server1>,<server2>,...."
- }
還是出錯(cuò)!
可見這樣配置是有問題的!
文章未完,繼續(xù)更新中!
原文鏈接:http://blog.csdn.net/crazyjixiang/article/details/6636671
【編輯推薦】