您的位置:首页 > 数据库 > Mongodb

Mongodb分片配置

2013-06-18 09:28 113 查看
一、 部署环境、

1. 结构图



2. 节点分配

一共使用了三个节点

Sg206(172.16.48.206 root/201314) : shard11、shard32、config、mongos

Sg207(172.16.48.207 root/201314) : shard21、shard12、config、mongos

Sg208(172.16.48.208 root/201314) : shard31、shard22、config、mongos

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

在sg206,sg207,sg208上分别执行:

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

6. 配置mongos

在sg206,sg207,sg208上分别执行:

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>]”})这样的命令加入,如果shard是replica sets用replicaSetName/<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})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: