MongoDB分片集群搭建步骤


MongoDB分片集群搭建步骤

MongoDB 3.2及以下版本简单分片配置步骤

MongoDB 3.2以上版本搭建步骤:

使用一个Replica Sets + Sharding的解决方案,对分片做集群。

  • Shard: 使用 Replica Sets,确保每个数据节点都具有备份、自动容错转移、自动恢复能力。

  • Config: 使用 3 个配置服务器,确保元数据完整性。

  • Route: 使用 3 个路由进程,实现负载平衡,提高客户端接入性能。

1、在测试之前,先简单描述一下本机测试环境的地址跟端口号,如下:

服务1 服务2 服务3
shard1 127.0.0.1:27019 127.0.0.1:27119 127.0.0.1:27219 shard1的集群
shard2 127.0.0.1:27020 127.0.0.1:27120 127.0.0.1:27220 shard2的集群
config 127.0.0.1:27018 127.0.0.1:27118 127.0.0.1:27218 配置服务器的集群
route 127.0.0.1:27017 127.0.0.1:27117 127.0.0.1:27217 3个路由进程

根据上面表格,服务2,服务3,是基于服务1的集群扩展。

2、配置shard1

shard1的执行命令如下:

mongod -shardsvr -replSet shard1 -port 27019 -dbpath=D:\MongoDB\data\db1
mongod -shardsvr -replSet shard1 -port 27119 -dbpath=D:\MongoDB\data\db2
mongod -shardsvr -replSet shard1 -port 27219 -dbpath=D:\MongoDB\data\db3

启动完数据节点后,登录27019节点,添加副本集,操作如下:

mongo -port 27019

config={_id:'shard1',members:[{_id:0,host:'127.0.0.1:27019'},{_id:1,host:'127.0.0.1:27119'},{_id:2,host:'127.0.0.1:27219'}]}

rs.initiate(config)

3、配置shard2

shard2的执行命令如下:

mongod -shardsvr -replSet shard2 -port 27020 -dbpath=D:\MongoDB\data\db4
mongod -shardsvr -replSet shard2 -port 27120 -dbpath=D:\MongoDB\data\db5
mongod -shardsvr -replSet shard2 -port 27220 -dbpath=D:\MongoDB\data\db6

启动完数据节点后,登录27020节点,添加副本集,操作如下:

mongo -port 27020

config={_id:'shard2',members:[{_id:0,host:'127.0.0.1:27020'},{_id:1,host:'127.0.0.1:27120'},{_id:2,host:'127.0.0.1:27220'}]}

rs.initiate(config)

4、配置config

config的执行命令如下:

mongod -configsvr -dbpath=D:\MongoDB\data\config1 -port 27018 -replSet config1
mongod -configsvr -dbpath=D:\MongoDB\data\config2 -port 27118 -replSet config1
mongod -configsvr -dbpath=D:\MongoDB\data\config3 -port 27218 -replSet config1

登录其中一个节点,添加副本集,具体操作如shard1。

mongo -port 27018

config={_id:'config1',members:[{_id:0,host:'127.0.0.1:27018'},{_id:1,host:'127.0.0.1:27118'},{_id:2,host:'127.0.0.1:27218'}]}

rs.initiate(config)

5、配置route

route的执行命令如下:

mongos -configdb=config1/127.0.0.1:27018,127.0.0.1:27118,127.0.0.1:27218 -port 27017
mongos -configdb=config1/127.0.0.1:27018,127.0.0.1:27118,127.0.0.1:27218 -port 27117
mongos -configdb=config1/127.0.0.1:27018,127.0.0.1:27118,127.0.0.1:27218 -port 27217

注:-configdb要指定副本集的名字,在这里是config1

登录其中一个节点,将shard添加进来,命令如下:

mongo -port 27117 或 mongo -port 27217

//得切换到admin数据库才能addshard
mongos> use admin;
switched to db admin

db.runCommand({addshard:"shard1/127.0.0.1:27019,127.0.0.1:27119,127.0.0.1:27219"})
db.runCommand({addshard:"shard2/127.0.0.1:27020,127.0.0.1:27120,127.0.0.1:27220"})

之后,对需要进行分片的collection进行分片配置,在这里博主用test数据库的layne表做分片。

具体操作如下:

db.runCommand({ enablesharding:"test" })
db.runCommand({shardcollection:"test.layne",key:{_id:1}})   //制定shard key为:_id

查看状态

//切换到test数据库
mongos> use test
switched to db test

mongos> db.layne.stats()


{
        "sharded" : true,//设置分片成功
        ......
}

6、总结

​ 本文主要讲副本集+分片的集群搭建方式,先对分片,配置服务器做副本集,随后创建多个路由进程,实现负载平衡,提高客户端接入性能。

在测试过程中,需要注意的点就是分片的host的设置,不预先配置以127.0.0.1的IP,系统会默认用localhost。


文章作者: 斓龙
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 斓龙 !
  目录