mongodb分片配置

配置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

 

你可能感兴趣的:(mongodb分片配置)