您的位置:首页 > 运维架构 > 网站架构

mongo 分片Replica Sets+Sharding架构

2016-04-29 03:44 387 查看
工具/原料

我的环境:CentOS 7+ mongo 2.0.9


方法/步骤

1

安装mongo:

将mongo安装文件上传到 /home下并解压(注:mongo解压后即可使用)

# tar -zxvf mongodb-linux-x86_64-2.0.9.tar                    //解压mongo

# mv mongodb-linux-x86_64-2.0.9 mongodb         //修改文件夹名为mongodb
2

创建目录:

# mkdir -p /home/config

# mkdir -p /home/data/shard1

# mkdir -p /home/data/shard2

# mkdir -p /home/mongologs
3

创建分片配置文件1

# cd /home/config

# touch shard1.conf

# vi shard1.conf

文件内容如下:

粘贴下述内容后按ESC键,然后输入:wq保存退出

# /home/config/shard1.conf

dbpath=/home/data/shard1

directoryperdb = true

shardsvr = true

replSet = shard1

port = 20001

oplogSize = 100

pidfilepath = /home/data/shard1/mongodb.pid

logpath = /home/mongologs/shard1.log

logappend = true

profile = 1

slowms = 5

fork = true
4

创建分片配置文件2

# cd /home/config

# touch shard2.conf

# vi shard2.conf

文件内容如下:

粘贴下述内容后按ESC键,然后输入:wq保存退出

# /home/config/shard2.conf

dbpath=/home/data/shard2

directoryperdb = true

shardsvr = true

replSet = shard2

port = 20002

oplogSize = 100

pidfilepath = /home/data/shard2/mongodb.pid

logpath = /home/mongologs/shard2.log

logappend = true

profile = 1

slowms = 5

fork = true
5

启动分片储存节点:

# /home/mongodb/bin/mongod -f /home/config/shard1.conf

# /home/mongodb/bin/mongod -f /home/config/shard2.conf

查看mongod是否启动成功

# ps -ef|grep mongo

出现如图内容表示启动成功
mongo 分片Replica Sets+Sharding架构
6

另外两台服务器重复如上步骤
7

选择其中一台做mongos服务器,在该服务器上执行:(该服务器已创建并启动上面步骤的2个分片)

创建目录:# mkdir -p /home/data/config

创建配置文件:

# cd /home/config

# touch config.conf

# vi config.conf

文件内容如下:

# cat /home/config/config.conf

pidfilepath = /home/data/config/mongodb.pid

dbpath =/home/data/config

directoryperdb = true

configsvr = true

port = 20000

logpath =/home/mongologs/config.log

logappend = true

fork = true

粘贴下述内容后按ESC键,然后输入:wq保存退出
8

继续如上步骤

# cd /home/config

# touch mongos.conf

# vi mongos.conf

文件内容如下:

# cat /home/config/mongos.conf

configdb = 192.168.1.151:20000 //需要根据你的的实际IP地址所改变

port = 30000

chunkSize = 1  //单位mb生成环境请使用 100 或删除,删除后默认是64

logpath =/home/mongologs/mongos.log

logappend = true

fork = true

粘贴下述内容后按ESC键,然后输入:wq保存退出

启动配置节点和路由节点

# /home/mongodb/bin/mongod -f /home/config/config.conf

# /home/mongodb/bin/mongos -f /home/config/mongos.conf

查看mongod、mongos、config是否启动成功

# ps -ef|grep mongo
mongo 分片Replica Sets+Sharding架构

配置mongodb replica set节点

shard1 port 20001配置

连接server1操作

# /home/mongodb/bin/mongo --port 20001

> use admin

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

{_id: 0, host:"192.168.1.131:20001",priority:1},

{_id: 1, host:"192.168.1.141:20001",priority:2},

{_id: 2, host:"192.168.1.151:20001",arbiterOnly:true },

]

};

执行完成如图
mongo 分片Replica Sets+Sharding架构

> rs.initiate(config);

执行完上述命令需要等待30秒-1分钟的时间

> rs.status();

查看当前副本集的情况,和下图一样证明配置成功
mongo 分片Replica Sets+Sharding架构

shard2  port 20002配置

连接server2操作

# /home/mongodb/bin/mongo --port 20002

> use admin

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

{_id: 0, host:"192.168.1.131:20002", priority:2},

{_id: 1, host:"192.168.1.141:20002", priority:1 },

{_id: 2, host:"192.168.1.151:20002", arbiterOnly:true },

]

};

执行完成如下图
mongo 分片Replica Sets+Sharding架构

> rs.initiate(config);

执行完上述命令需要等待30秒-1分钟的时间

> rs.status();

查看当前副本集的情况,和下图一样证明配置成功
mongo 分片Replica Sets+Sharding架构

mongo路由结点配置

连接mongos服务器上的mongos服务进行配置

# /home/mongodb/bin/mongo --port 30000

mongos> use admin       //切换到admin库

mongos>db.runCommand({addshard:"shard1/192.168.1.131:20001,192.168.1.141:20001",name:"shard1",maxsize:20480});        //添加分片shard1

mongos>db.runCommand({addshard:"shard2/192.168.1.131:20002,192.168.1.141:20002",name:"shard2",maxsize:20480});        //添加分片shard2

db.runCommand({listshards : 1});    //查看分片信息

mongos> printShardingStatus()   //打印分片信息

到这儿,replica set + shard功能就配置好了,注意:虽然配置好了,但是还要声明库和表要进行分片。

声明库和表要分片:

连接mongos服务器上的mongos服务进行配置

# /home/mongodb/bin/mongo --port 30000

mongos> use admin       //切换到admin库

mongos > db.runCommand({enablesharding:"test"});        //声明test库允许分片

mongos>db.runCommand({shardcollection:"test.users",key:{id:1}});//声明users表要分片

测试脚本

mongos> use test     //切换到test

mongos> for (var i = 1; i <= 20000; i++) db.users.save({id:i,name:"12345678",sex:"male",age:27,value:"test"});    //插入2W条数据

测试结果

mongos> db.users.stats();       //查看users表的存储信息

如下图可以看到我插入的2W条数据已经分别存储在了shard1 和shard2两个分片上
mongo 分片Replica Sets+Sharding架构

如果帮到了你请给个赞
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: