Mongodb分片配置

一、     部署环境、

1.     结构图

 


2.     节点分配

一共使用了三个节点

Sg206(172.16.48.206  root/201314) shard11shard32configmongos

Sg207(172.16.48.207  root/201314) shard21shard12configmongos

Sg208(172.16.48.208  root/201314) shard31shard22configmongos

3.     配置目录

安装文件:/home/mongodb-linux-x86_64-2.4.1

安装目录:

sg206:  /home/mongodb-data/shard11  #数据目录

/home/mongodb-data/shard32  #数据目录

/home/mongodb-data/conf    #config数据目录

Sg207:  /home/mongodb-data/shard21   #数据目录

/home/mongodb-data/shard12   #数据目录

       /home/mongodb-data/conf    #config数据目录

Sg208:  /home/mongodb-data/shard31   #数据目录

/home/mongodb-data/shard22   #数据目录

/home/mongodb-data/conf    #config数据目录

 

二、     部署流程

1.     创建数据目录

Sg206:

mkdir -p /home/mongodb-data/shard11

mkdir -p /home/mongodb-data/shard32

mkdir -p /home/mongodb-data/conf

mkdir -p /home/mongodb-data/shard23

sg207:

mkdir -p /home/mongodb-data/shard21

mkdir -p /home/mongodb-data/shard12

mkdir -p /home/mongodb-data/conf

mkdir -p /home/mongodb-data/shard33

sg208:

mkdir -p /home/mongodb-data/shard31

mkdir -p /home/mongodb-data/shard22

mkdir -p /home/mongodb-data/conf

mkdir -p /home/mongodb-data/shard13

 

2.     配置shard1所用到的replica sets

Sg206:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard1 -port 27017 -dbpath /home/mongodb-data/shard11 -oplogSize 50000 -maxConns 600 -logpath=/home/mongodb-data/shar11.log  -logappend -fork

sg207:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard1 -port 27017 -dbpath /home/mongodb-data/shard12 -oplogSize 50000 -maxConns 600 -logpath=/home/mongodb-data/shar12.log  -logappend     -fork

sg208:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard1 -port 27017 -dbpath /home/mongodb-data/shard13 -maxConns 600 -logpath=/home/mongodb-data/shar13.log  -logappend -fork

 

初始化replica set:

mongo连接其中一个mongod执行:

>config={_id:'shard1',members:[

          {_id:0,host:'172.16.48.206:27017',priority:2},

          {_id:1,host:'172.16.48.207:27017',priority:1},

{_id:2,host:'172.16.48.208:27017',arbiterOnly:true }]

            }

>rs.initiate(config);

3.     配置shard2所用到的replica sets

Sg207:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard2 -port 27018 -dbpath /home/mongodb-data/shard21 -oplogSize 50000 -maxConns 600 -logpath=/home/mongodb-data/shar21.log -logappend  -fork

sg208:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard2 -port 27018 -dbpath /home/mongodb-data/shard22 -oplogSize 50000 -maxConns 600 -logpath=/home/mongodb-data/shar22.log  -logappend  -fork

sg206:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard2 -port 27018 -dbpath /home/mongodb-data/shard23 -maxConns 600 -logpath=/home/mongodb-data/shar23.log  -logappend -fork

初始化replica set:

mongo连接其中一个mongod执行:

>config={_id:'shard2',members:[

          {_id:0,host:'172.16.48.207:27018' ,priority:2},

          {_id:1,host:'172.16.48.208:27018',priority:1},

{_id:2,host:'172.16.48.206:27018',arbiterOnly:true }]

            }

>rs.initiate(config);

4.     配置shard3所用到的replica sets

Sg208:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard3 -port 27019 -dbpath /home/mongodb-data/shard31 -oplogSize 50000 -maxConns 600 -logpath=/home/mongodb-data/shar31.log  -logappend -fork

sg206:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard3 -port 27019 -dbpath /home/mongodb-data/shard32 -oplogSize 50000 -maxConns 600  -logpath=/home/mongodb-data/shar32.log  -logappend  -fork

sg207:

cd /home/mongodb-linux-x86_64-2.4.1

bin/mongod -shardsvr -replSet shard3 -port 27019 -dbpath /home/mongodb-data/shard33 -maxConns 600 -logpath=/home/mongodb-data/shar33.log  -logappend -fork

初始化replica set:

mongo连接其中一个mongod执行:

>config={_id:'shard3',members:[

          {_id:0,host:'172.16.48.208:27019' ,priority:2},

          {_id:1,host:'172.16.48.206:27019',priority:1},

{_id:2,host:'172.16.48.207:27019',arbiterOnly:true }]

            }

>rs.initiate(config);

5.     配置三台config server

sg206sg207sg208上分别执行:

bin/mongod -configsvr -dbpath=/home/mongodb-data/conf -port 20000 -logpath=/home/mongodb-data/config.log -logappend -fork

6.     配置mongos

sg206sg207sg208上分别执行:

bin/mongos -configdb 172.16.48.206:20000,172.16.48.207:20000,172.16.48.208:20000 -port 30000 -chunkSize 256 -logpath=/home/mongodb-data/mongos.log -logappend -fork  

7.     Configuring the shard cluster

连接到其中一个mongos进程,并切换到admin数据库做以下配置:

1)          连接到mongos,并切换到admin

bin/mongo 172.16.48.206:30000/admin

>db

admin

2)          加入shards

Shard是单台服务器用>db.runCommand({addshard:”<serverhostname>[:<port>]”})这样的命令加入,如果shardreplica setsreplicaSetName/<serverhostname>[:port][,serverhostname2[:port],]这样的格式表示。

这里我们执行如下命令:

>db.runCommand({addshard:"shard1/172.16.48.206:27017,172.16.48.207:27017",name:"shard1",maxsize:204800});

>db.runCommand({addshard:"shard2/172.16.48.207:27018,172.16.48.208:27018",name:"shard2",maxsize:204800});

>db.runCommand({addshard:"shard3/172.16.48.208:27019,172.16.48.206:27019",name:"shard3",maxsize:204800});

注:name:用于指定每个shard的名字,不指定的话系统将自动分配

maxsize:指定各个shard可使用的最大磁盘空间,单位megabytes

3)          Listing shards

>db.runCommand({listshards:1})

如果列出了以上三个你加的shards,表示shard已经配置成功

8.     激活数据库分片

命令:

>db.runCommand({enablesharding:”<dbname>”});

Eg: >db.runCommand({enablesharding:"ycsb"});

通过执行以上命令,可以让数据库跨shard,如果不执行这步,数据库只会存放在一个shard,一旦激活数据库分片,数据库中不同的Collection将被存放在不同的shard上,但一个collection仍旧存放在同一个shard上,要使单个collection也分片,还需单独对collection作些操作。

9.     激活Collection分片

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

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

 

注:a. 分片的collection系统会自动创建一个索引(最好提前创建好)

b. 分片的collection只能有一个在分片key上的唯一索引,其他唯一索引不被允许。

例子:

>db.runCommand({shardcollection:"ycsb.usertable",key:{_id:1}});

>for (var i=1;i<=200003;i++) db.c1.save({id:i,value1:”1234567890”,value2:”1234567890”,value3:”1234567890”,value4:”1234567890”});

>db.c1.stats()

for (var i = 1; i <= 20000000; i++)  db.usertable.save({age:i})

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值