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架构 如果帮到了你请给个赞