您好,登錄后才能下訂單哦!
部署規劃
操作系統:redhat6.4 64位
Config | Route | 分片1 | 分片2 | 分片3 | |
使用端口 | 28000 | 27017 | 27018 | 27019 | 27020 |
IP地址 | |||||
192.168.1.30 | /etc/config.conf | /etc/route.conf | /etc/sd1.conf(主) | /etc/sd2.conf(仲裁) | /etc/sd3.conf(備) |
192.168.1.52 | /etc/config.conf | /etc/route.conf | /etc/sd1.conf(備) | /etc/sd2.conf(主) | /etc/sd3.conf(仲裁) |
192.168.1.108 | /etc/config.conf | /etc/route.conf | /etc/sd1.conf(仲裁) | /etc/sd2.conf(備) | /etc/sd3.conf(主) |
一、在三個節點上創建如下目錄,做測試的話建議確保在/目錄有15G左右的剩余空間
[root@orcl ~]# mkdir -p /var/config
[root@orcl ~]# mkdir -p /var/sd1
[root@orcl ~]# mkdir -p /var/sd2
[root@orcl ~]# mkdir -p /var/sd3
二、查看配置文件
[root@orcl ~]# cat /etc/config.conf
port=28000
dbpath=/var/config
logpath=/var/config/config.log
logappend=true
fork=true
configsvr=true
[root@orcl ~]# cat /etc/route.conf
port=27017
configdb=192.168.1.30:28000,192.168.1.52:28000,192.168.1.108:28000
logpath=/var/log/mongos.log
logappend=true
fork=true
[root@orcl ~]# cat /etc/sd1.conf
port = 27018
dbpath=/var/sd1
logpath =/var/sd1/shard1.log
logappend =true
shardsvr =true
replSet =set1
fork =true
[root@orcl ~]# cat /etc/sd2.conf
port = 27019
dbpath=/var/sd2
logpath =/var/sd2/shard2.log
logappend =true
shardsvr =true
replSet =set2
fork =true
[root@orcl ~]# cat /etc/sd3.conf
port = 27020
dbpath=/var/sd3
logpath =/var/sd3/shard1.log
logappend =true
shardsvr =true
replSet =set3
fork =true
三、在三個節點上同步時間
略
四、在三個節點上啟動用config服務器
節點1
[root@orcl ~]# mongod -f /etc/config.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3472
child process started successfully, parent exiting
[root@orcl ~]# ps -ef |grep mongo
root 3472 1 1 19:15 ? 00:00:01 mongod -f /etc/config.conf
root 3499 2858 0 19:17 pts/0 00:00:00 grep mongo
[root@orcl ~]# netstat -anltp|grep 28000
tcp 0 0 0.0.0.0:28000 0.0.0.0:* LISTEN 3472/mongod
節點2
[root@localhost ~]# mongod -f /etc/config.conf
about to fork child process, waiting until server is ready for connections.
forked process: 2998
child process started successfully, parent exiting
[root@localhost ~]# ps -ef |grep mongo
root 2998 1 8 19:15 ? 00:00:08 mongod -f /etc/config.conf
root 3014 2546 0 19:17 pts/0 00:00:00 grep mongo
[root@localhost ~]# netstat -anltp|grep 28000
tcp 0 0 0.0.0.0:28000 0.0.0.0:* LISTEN 2998/mongod
節點3
[root@db10g ~]# mongod -f /etc/config.conf
about to fork child process, waiting until server is ready for connections.
forked process: 4086
child process started successfully, parent exiting
[root@db10g ~]# ps -ef |grep mongo
root 4086 1 2 19:25 ? 00:00:00 mongod -f /etc/config.conf
root 4100 3786 0 19:25 pts/0 00:00:00 grep mongo
[root@db10g ~]# netstat -anltp|grep 28000
tcp 0 0 0.0.0.0:28000 0.0.0.0:* LISTEN 4086/mongod
五、在三個節點上啟動用路由服務器
節點1
[root@orcl ~]# mongos -f /etc/route.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3575
child process started successfully, parent exiting
[root@orcl ~]# netstat -anltp|grep 2701
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 3575/mongos
節點2
[root@localhost ~]# mongos -f /etc/route.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3057
child process started successfully, parent exiting
[root@localhost ~]# netstat -anltp|grep 2701
tcp 0 0 0.0.0.0:27017
節點3
[root@db10g ~]# mongos -f /etc/route.conf
about to fork child process, waiting until server is ready for connections.
forked process: 4108
child process started successfully, parent exiting
[root@db10g ~]# netstat -anltp|grep 27017
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN 4108/mongos
六、在三個節點啟用shard
mongod -f /etc/sd1.conf
mongod -f /etc/sd2.conf
mongod -f /etc/sd3.conf
節點1
[root@orcl ~]# ps -ef |grep mongo
root 3472 1 2 19:15 ? 00:02:18 mongod -f /etc/config.conf
root 3575 1 0 19:28 ? 00:00:48 mongos -f /etc/route.conf
root 4135 1 0 20:52 ? 00:00:07 mongod -f /etc/sd1.conf
root 4205 1 0 20:55 ? 00:00:05 mongod -f /etc/sd2.conf
root 4265 1 0 20:58 ? 00:00:04 mongod -f /etc/sd3.conf
節點2
[root@localhost ~]# ps -ef |grep mongo
root 2998 1 1 19:15 ? 00:02:02 mongod -f /etc/config.conf
root 3057 1 1 19:28 ? 00:01:02 mongos -f /etc/route.conf
root 3277 1 1 20:52 ? 00:00:20 mongod -f /etc/sd1.conf
root 3334 1 6 20:56 ? 00:00:52 mongod -f /etc/sd2.conf
root 3470 1 1 21:01 ? 00:00:07 mongod -f /etc/sd3.conf
節點3
[root@db10g data]# ps -ef |grep mongo
root 4086 1 1 19:25 ? 00:01:58 mongod -f /etc/config.conf
root 4108 1 0 19:27 ? 00:00:55 mongos -f /etc/route.conf
root 4592 1 0 20:54 ? 00:00:07 mongod -f /etc/sd1.conf
root 4646 1 3 20:56 ? 00:00:30 mongod -f /etc/sd2.conf
root 4763 1 4 21:04 ? 00:00:12 mongod -f /etc/sd3.conf
七、配置副本集
192.168.1.30
[root@orcl ~]# mongo --port 27018
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27018/test
> use admin
switched to db admin
> rs1={_id:"set1",members:[{_id:0,host:"192.168.1.30:27018",priority:2},{_id:1,host:"192.168.1.52:27018"},{_id:2,host:"192.168.1.108:27018",arbiterOnly:true}]}
{
"_id" : "set1",
"members" : [
{
"_id" : 0,
"host" : "192.168.1.30:27018",
"priority" : 2
},
{
"_id" : 1,
"host" : "192.168.1.52:27018"
},
{
"_id" : 2,
"host" : "192.168.1.108:27018",
"arbiterOnly" : true
}
]
}
> rs.initiate(rs1)
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
192.168.1.52
[root@orcl ~]# mongo --port 27019
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27019/test
> use admin
switched to db admin
> rs2={_id:"set2",members:[{_id:0,host:"192.168.1.52:27019",priority:2},{_id:1,host:"192.168.1.108:27019"},{_id:2,host:"192.168.1.30:27019",arbiterOnly:true}]}
{
"_id" : "set2",
"members" : [
{
"_id" : 0,
"host" : "192.168.1.52:27019",
"priority" : 2
},
{
"_id" : 1,
"host" : "192.168.1.108:27019"
},
{
"_id" : 2,
"host" : "192.168.1.30:27019",
"arbiterOnly" : true
}
]
}
> rs.initiate(rs2);
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
192.168.1.108
[root@localhost sd3]# mongo --port 27020
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27020/test
> use admin
switched to db admin
> rs3={_id:"set3",members:[{_id:0,host:"192.168.1.108:27020",priority:2},{_id:1,host:"192.168.1.30:27020"},{_id:2,host:"192.168.1.52:27020",arbiterOnly:true}]}
{
"_id" : "set3",
"members" : [
{
"_id" : 0,
"host" : "192.168.1.108:27020",
"priority" : 2
},
{
"_id" : 1,
"host" : "192.168.1.30:27020"
},
{
"_id" : 2,
"host" : "192.168.1.52:27020",
"arbiterOnly" : true
}
]
}
> rs.initiate(rs3);
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
八、添加分片
在三個節點上任一個節點都可以操作
192.168.1.30
[root@orcl sd3]# mongo --port 27017
MongoDB shell version: 2.6.4
connecting to: 127.0.0.1:27017/test
mongos> use admin
switched to db admin
mongos> db.runCommand({addshard:"set1/192.168.1.30:27018,192.168.1.52:27018,192.168.1.108:27018"})
{ "shardAdded" : "set1", "ok" : 1 }
mongos> db.runCommand({addshard:"set2/192.168.1.30:27019,192.168.1.52:27019,192.168.1.108:27019"})
{ "shardAdded" : "set2", "ok" : 1 }
mongos> db.runCommand({addshard:"set3/192.168.1.30:27020,192.168.1.52:27020,192.168.1.108:27020"})
{ "shardAdded" : "set3", "ok" : 1 }
九、查看分片信息
mongos> db.runCommand({listshards : 1})
{
"shards" : [
{
"_id" : "set1",
"host" : "set1/192.168.1.30:27018,192.168.1.52:27018"
},
{
"_id" : "set2",
"host" : "set2/192.168.1.108:27019,192.168.1.52:27019"
},
{
"_id" : "set3",
"host" : "set3/192.168.1.108:27020,192.168.1.30:27020"
}
],
"ok" : 1
}
十、刪除分片
mongos> db.runCommand({removeshard:"set3"})
{
"msg" : "draining started successfully",
"state" : "started",
"shard" : "set3",
"ok" : 1
}
十一、管理分片
mongos> use config
switched to db config
mongos> db.shards.find();
{ "_id" : "set1", "host" : "set1/192.168.1.30:27018,192.168.1.52:27018" }
{ "_id" : "set2", "host" : "set2/192.168.1.108:27019,192.168.1.52:27019" }
{ "_id" : "set3", "host" : "set3/192.168.1.108:27020,192.168.1.30:27020" }
十二、對要分片的庫和表聲明
切換到admin庫
mongos> use admin
聲明test庫允許分片
mongos> db.runCommand({enablesharding:"test"})
{ "ok" : 1 }
聲明users表要分片
mongos> db.runCommand({shardcollection:"test.lineqi",key:{id:"hashed"}})
{ "collectionsharded" : "test.lineqi", "ok" : 1 }
十三、測試腳本
切換到test
mongos>use test
mongos> for (var i = 1; i <= 100000; i++) db.lineqi.save({id:i,name:"12345678",sex:"male",age:27,value:"test"});
WriteResult({ "nInserted" : 1 })
十四、測試結果
查看分片信息
mongos> use config
switched to db config
mongos> db.chunks.find();
{ "_id" : "test.users-id_MinKey", "lastmod" : Timestamp(2, 0), "lastmodEpoch" : ObjectId("55ddb3a70f613da70e8ce303"), "ns" : "test.users", "min" : { "id" : { "$minKey" : 1 } }, "max" : { "id" : 1 }, "shard" : "set1" }
{ "_id" : "test.users-id_1.0", "lastmod" : Timestamp(3, 1), "lastmodEpoch" : ObjectId("55ddb3a70f613da70e8ce303"), "ns" : "test.users", "min" : { "id" : 1 }, "max" : { "id" : 4752 }, "shard" : "set2" }
{ "_id" : "test.users-id_4752.0", "lastmod" : Timestamp(3, 0), "lastmodEpoch" : ObjectId("55ddb3a70f613da70e8ce303"), "ns" : "test.users", "min" : { "id" : 4752 }, "max" : { "id" : { "$maxKey" : 1 } }, "shard" : "set3" }
{ "_id" : "test.lineqi-id_MinKey", "lastmod" : Timestamp(3, 2), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : { "$minKey" : 1 } }, "max" : { "id" : NumberLong("-6148914691236517204") }, "shard" : "set2" }
{ "_id" : "test.lineqi-id_-3074457345618258602", "lastmod" : Timestamp(3, 4), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("-3074457345618258602") }, "max" : { "id" : NumberLong(0) }, "shard" : "set3" }
{ "_id" : "test.lineqi-id_3074457345618258602", "lastmod" : Timestamp(3, 6), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("3074457345618258602") }, "max" : { "id" : NumberLong("6148914691236517204") }, "shard" : "set1" }
{ "_id" : "test.lineqi-id_-6148914691236517204", "lastmod" : Timestamp(3, 3), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("-6148914691236517204") }, "max" : { "id" : NumberLong("-3074457345618258602") }, "shard" : "set2" }
{ "_id" : "test.lineqi-id_0", "lastmod" : Timestamp(3, 5), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong(0) }, "max" : { "id" : NumberLong("3074457345618258602") }, "shard" : "set3" }
{ "_id" : "test.lineqi-id_6148914691236517204", "lastmod" : Timestamp(3, 7), "lastmodEpoch" : ObjectId("55ddb7460f613da70e8ce380"), "ns" : "test.lineqi", "min" : { "id" : NumberLong("6148914691236517204") }, "max" : { "id" : { "$maxKey" : 1 } }, "shard" : "set1" }
查看users表的存儲信息
mongos>use test
mongos> db.lineqi.stats();
{
"sharded" : true,
"systemFlags" : 1,
"userFlags" : 1,
"ns" : "test.lineqi",
"count" : 100000,
"numExtents" : 18,
"size" : 11200000,
"storageSize" : 33546240,
"totalIndexSize" : 8086064,
"indexSizes" : {
"_id_" : 3262224,
"id_hashed" : 4823840
},
"avgObjSize" : 112,
"nindexes" : 2,
"nchunks" : 6,
"shards" : {
"set1" : {
"ns" : "test.lineqi",
"count" : 33102,
"size" : 3707424,
"avgObjSize" : 112,
"storageSize" : 11182080,
"numExtents" : 6,
"nindexes" : 2,
"lastExtentSize" : 8388608,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 2649024,
"indexSizes" : {
"_id_" : 1079232,
"id_hashed" : 1569792
},
"ok" : 1
},
"set2" : {
"ns" : "test.lineqi",
"count" : 33755,
"size" : 3780560,
"avgObjSize" : 112,
"storageSize" : 11182080,
"numExtents" : 6,
"nindexes" : 2,
"lastExtentSize" : 8388608,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 2755312,
"indexSizes" : {
"_id_" : 1103760,
"id_hashed" : 1651552
},
"ok" : 1
},
"set3" : {
"ns" : "test.lineqi",
"count" : 33143,
"size" : 3712016,
"avgObjSize" : 112,
"storageSize" : 11182080,
"numExtents" : 6,
"nindexes" : 2,
"lastExtentSize" : 8388608,
"paddingFactor" : 1,
"systemFlags" : 1,
"userFlags" : 1,
"totalIndexSize" : 2681728,
"indexSizes" : {
"_id_" : 1079232,
"id_hashed" : 1602496
},
"ok" : 1
}
},
"ok" : 1
}
十五、參考文檔
http://blog.sina.com.cn/s/blog_8d3bcbdb01015vne.html
http://jingyan.baidu.com/article/495ba841f1ee2b38b30ede01.html
http://server.ctocio.com.cn/150/13087650.shtml
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。