配置mongo分片
第一步:三实例
#Server1:
mkdir -p /data/mongodb/shard11
mkdir -p /data/mongodb/shard21
/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /data/mongodb/shard11 --oplogSize 100 --logpath /data/mongodb/shard11.log --logappend --fork --rest
/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /data/mongodb/shard21 --oplogSize 100 --logpath /data/mongodb/shard21.log --logappend --fork –rest
#Server2:
mkdir -p /data/mongodb/shard12/
mkdir -p /data/mongodb/shard22/
#mongod --shardsvr --replSet shard1 --port 28017 --dbpath /data/mongodb/shard12/ --oplogSize 100 --logpath /data/mongodb/shard12.log --logappend --fork --rest
#mongod --shardsvr --replSet shard2 --port 28018 --dbpath /data/mongodb/shard22/ --oplogSize 100 --logpath /data/mongodb/shard22.log --logappend --fork --rest
#Server3:
mkdir -p /data/mongodb/shard13/
mkdir -p /data/mongodb/shard23/
#mongod --shardsvr --replSet shard1 --port 28017 --dbpath /data/mongodb/shard13/ --oplogSize 100 --logpath /data/mongodb/shard13.log --logappend --fork --rest
#mongod --shardsvr --replSet shard2 --port 28018 --dbpath /data/mongodb/shard23/ --oplogSize 100 --logpath /data/mongodb/shard23.log --logappend --fork --rest
第二步:初始化ReplaSet
1、mongo 101.73.41.252:28017
config = {_id: 'shard1', members:[{_id: 0, host: '101.73.41.252:28017'}, {_id: 1, host: '101.72.178.230:28017'}, {_id: 2, host: '101.71.28.210:28017'}]};
result:
{
"_id" : "shard1",
"members" : [
{
"_id" : 0,
"host" : "101.73.41.252:28017"
},
{
"_id" : 1,
"host" : "101.72.178.230:28017"
},
{
"_id" : 2,
"host" : "101.71.28.210:28017"
}
]
}
rs.initiate(config);
result:
{
"info" : "Config now saved locally. Should come online in about a minute.",
"ok" : 1
}
2、mongo 101.73.41.252:28018
config = {_id: 'shard2', members:[
{_id: 0, host: '101.73.41.252:28018'},
{_id: 1, host: '101.72.178.230:28018'},
{_id: 2, host: '101.71.28.210:28018'}]};
rs.initiate(config);
第三步:启动并配置Config(server1/2/3)
mkdir -p /data/mongodb/config/
mongod --configsvr --dbpath /data/mongodb/config/ --port 28500 --logpath /data/mongodb/config1.log --logappend -fork
第四步:部署并配置三台Routing Server
mongos --configdb 101.73.41.252:28500,101.72.178.230:28500,101.71.28.210:28500 --port 29600 --chunkSize 100 --logpath /data/mongodb/mongos.log --logappend --fork
第五步:命令行添加分片
mongo 101.73.41.252:29600/admin
#maxsize:(Mb) 分片限制大小
db.runCommand( {
addshard : "shard1/101.73.41.252:28017,101.72.178.230:28017,101.71.28.210:28017",
name:"shard1",
maxsize:20480,
allowLocal:true } );
db.runCommand( {
addshard : "shard2/101.73.41.252:28018,101.72.178.230:28018,101.71.28.210:28018",
name:"shard2",
maxsize:20480,
allowLocal:true} );
db.runCommand( { listshards : 1 } );
第六步:使用数据库分片
DB分片, 使DB下所有Collection实现数据的横向切分
db.runCommand( { enablesharding : "test" } );
result:{ "ok" : 1 }
查看Sharding状态
use admin;
db.printShardingStatus();
Collection分片,使单个Collection实现数据的横向切分
要使单个Collection分片存储,需要给Collection指定一个分片key。
a. 分片的collection系统会自动创建一个索引(也可用户提前创建好)
b. 分片的collection只能有一个在分片key上的唯一索引,其它唯一索引不被允许
db.runCommand( { shardcollection : "test.c1″,key : {id: 1} };
可以通过db.c1.stats()来查看分片状态。
参考文章:
http://www.cnblogs.com/zhangmiao-chp/archive/2011/05/05/2038346.html
权限控制可参考:http://my.oschina.net/zhuzhu0129/blog/53290