MongoDB实战系列之五:mongodb的分片配置

md01    10.0.0.11
md02    10.0.0.12
md03    10.0.0.14

2、启动三台机器的mongod实例

根据Replica Set、Sharding策略部署mongod。将两个sharding组部署到三台服务器上,每个sharding组有三个replica set成员。

#Server1:

    mkdir -p /elain/data/mongodb/shard11 
    mkdir -p /elain/data/mongodb/shard21 
    /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard11 --oplogSize 100 --logpath /elain/data/mongodb/shard11.log --logappend --fork --rest 
    /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard21 --oplogSize 100 --logpath /elain/data/mongodb/shard21.log --logappend --fork --rest 


#Server2:

    mkdir -p /elain/data/mongodb/shard12/ 
    mkdir -p /elain/data/mongodb/shard22/ 
    /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard12 --oplogSize 100 --logpath /elain/data/mongodb/shard12.log --logappend --fork --rest 
    /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard22 --oplogSize 100 --logpath /elain/data/mongodb/shard22.log --logappend --fork --rest 

#Server3:

    mkdir -p /elain/data/mongodb/shard13/ 
    mkdir -p /elain/data/mongodb/shard23/ 
    /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard1 --port 27017 --dbpath /elain/data/mongodb/shard13 --oplogSize 100 --logpath /elain/data/mongodb/shard13.log --logappend --fork --rest 
    /elain/apps/mongodb/bin/mongod --shardsvr --replSet shard2 --port 27018 --dbpath /elain/data/mongodb/shard23 --oplogSize 100 --logpath /elain/data/mongodb/shard23.log --logappend --fork --rest 

3、初始化Replica Set

通过命令行初始化两组Replica Set,通过mongo连接到一个mongod

    /elain/apps/mongodb/bin/mongo 10.0.0.11:27017 
     
    config = {_id: 'shard1', members: [ 
        {_id: 0, host: '10.0.0.11:27017'}, 
        {_id: 1, host: '10.0.0.12:27017'}, 
        {_id: 2, host: '10.0.0.14:27017'}]}; 

    rs.initiate(config); 


    /elain/apps/mongodb/bin/mongo 10.0.0.11:27018 
     
    config = {_id: 'shard2', members: [ 
        {_id: 0, host: '10.0.0.11:27018'}, 
        {_id: 1, host: '10.0.0.12:27018'}, 
        {_id: 2, host: '10.0.0.14:27018'}]}; 
     
    rs.initiate(config); 


4、启动并配置三台Config Server

#Server1、2、3:

    mkdir -p /elain/data/mongodb/config/ 
    /elain/apps/mongodb/bin/mongod --configsvr --dbpath /elain/data/mongodb/config/ --port 20000 --logpath /elain/data/mongodb/config1.log --logappend --fork 

5、部署并配置三台Routing Server

指定所有的config sever地址参数,chunkSize是分割数据时每块(Chunk)的单位大小

#Server1、2、3:

    /elain/apps/mongodb/bin/mongos --configdb 10.0.0.11:20000,10.0.0.12:20000,10.0.0.14:20000 --port 30000 --chunkSize 100 --logpath /elain/data/mongodb/mongos.log --logappend --fork 


6、命令行添加分片

连接到mongs服务器,并切换到admin

如果列出(sharding)了以上二个你加的shards,表示shards已经配置成功#激活数据库分片

    /elain/apps/mongodb/bin/mongo 10.0.0.11:30000/admin 

    db.runCommand( { 
        addshard : "shard1/10.0.0.11:27017,10.0.0.12:27017,10.0.0.14:27017", 
        name:"shard1", 
        maxsize:2048, 
        allowLocal:true } ); 
     
    db.runCommand( { 
        addshard : "shard2/10.0.0.11:27018,10.0.0.12:27018,10.0.0.14:27018", 
        name:"shard2", 
        maxsize:2048, 
        allowLocal:true } ); 
     
    db.runCommand( { listshards : 1 } ); 

如果列出(sharding)了以上二个你加的shards,表示shards已经配置成功


#激活数据库分片

db.runCommand( { enablesharding : "elain" } ); 

要使单个collection也分片存储,需要给collection指定一个分片key,通过以下命令操作:

    db.runCommand( { shardcollection : “<namespace>”,key : <shardkeypatternobject}); 

注:
 a. 分片的collection系统会自动创建一个索引(也可用户提前创建好)
 b. 分片的collection只能有一个在分片key上的唯一索引,其它唯一索引不被允许
One note: a sharded collection can have only one unique index, which must exist on the shard key. No other unique indexes can exist on the collection.

mongoimport -d elain -c test --type csv --headerline --file test.csv --host 10.0.0.11:30000 

分片collection例子

    db.runCommand( { shardcollection : "elain.test",key : {id: 1} } ) 
    mongos> db.chujq.t1.stats(); 
    { 
            "sharded" : true, 
            "flags" : 1, 
            "ns" : "elain.test", 
            "count" : 4058977, 
            "numExtents" : 34, 
            "size" : 675039816, 
            "storageSize" : 818757632, 
            "totalIndexSize" : 131854352, 
            "indexSizes" : { 
                    "_id_" : 131854352 
            }, 
            "avgObjSize" : 166.30786919955446, 
            "nindexes" : 1, 
            "nchunks" : 14, 
            "shards" : { 
                    "shard1" : { 
                            "ns" : "elain.test", 
                            "count" : 1860365, 
                            "size" : 309376352, 
                            "avgObjSize" : 166.29873815084673, 
                            "storageSize" : 408920064, 
                            "numExtents" : 16, 
                            "nindexes" : 1, 
                            "lastExtentSize" : 77955072, 
                            "paddingFactor" : 1, 
                            "flags" : 1, 
                            "totalIndexSize" : 60371584, 
                            "indexSizes" : { 
                                    "_id_" : 60371584 
                            }, 
                            "ok" : 1 
                    }, 
                    "shard2" : { 
                            "ns" : "elain.test", 
                            "count" : 2198612, 
                            "size" : 365663464, 
                            "avgObjSize" : 166.31559547569103, 
                            "storageSize" : 409837568, 
                            "numExtents" : 18, 
                            "nindexes" : 1, 
                            "lastExtentSize" : 74846208, 
                            "paddingFactor" : 1, 
                            "flags" : 1, 
                            "totalIndexSize" : 71482768, 
                            "indexSizes" : { 
                                    "_id_" : 71482768 
                            }, 
                            "ok" : 1 
                    } 
            }, 
            "ok" : 1 
    } 

删除片操作

    mongos> db.runCommand({"removeshard" : "10.0.0.11:27018"}); 
    { 
            "msg" : "draining started successfully", 
            "state" : "started", 
            "shard" : "shard2", 
            "ok" : 1 
    } 


再执行,可看到removeshard的挪动进度

    mongos> db.runCommand({"removeshard" : "10.0.0.11:27018"}); 
    { 
            "msg" : "draining ongoing", 
            "state" : "ongoing", 
            "remaining" : { 
                    "chunks" : NumberLong(3), 
                    "dbs" : NumberLong(0) 
            }, 
            "ok" : 1 
    } 

例:

    /elain/apps/mongodb/bin/mongod --config /elain/data/mongodb/shard1/shard1.properties --rest 


原文地址:http://elain.blog.51cto.com/3339379/765956

51CTO-MongoDB专题地址:http://blog.51cto.com/zt/99

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值