七叶笔记 » 数据库 » 分布式文档存储数据库之MongoDB分片集群的问题

分布式文档存储数据库之MongoDB分片集群的问题

  准备好基础环境以后,配置mongodb yum源

  将mongodb yum源复制给其他节点

  在每个节点上安装mongodb-org这个包

  在config server 和shard节点上创建数据目录和日志目录,并将其属主和属组更改为mongod

  配置shard1 replication set

  配置shard2 replication set

  启动shard1 replication set和shard2 replication set

  提示:默认不指定shard监听端口,它默认就监听在27018端口,所以启动shard节点后,请确保27018端口正常监听即可;

  连接node05的mongodb 初始化shard1_replset副本集

  连接node08的mongodb 初始化shard2_replset副本集

  配置configserver replication set

  启动config server

  提示:config server 默认在不指定端口的情况监听在27019这个端口,启动后,请确保该端口处于正常监听;

  连接node02的mongodb,初始化cfg_replset 副本集

  配置router

  提示:configDB必须是副本集名称/成员监听地址:port的形式,成员至少要写一个;

  启动router

  连接mongos,添加shard1 replication set 和shard2 replication set

  提示:添加shard 副本集也是需要指明副本集名称/成员的格式添加;

  到此分片集群就配置好了

  查看sharding 集群状态

  提示:可以看到当前分片集群中有两个shard 副本集,分别是shard1_replset和shard2_replset;以及一个config server

  对testdb数据库启用sharding功能

  提示:在对某个数据库启动sharding功能后,它会给我们分片一个主shard所谓主shard是用来存放该数据库下没有做分片的colleciton;对于分片的collection会分散在各个shard上;

  启用对testdb库下的peoples集合启动sharding,并指明在age字段上做基于范围的分片

  提示:如果对应的collection存在,我们还需要先对collection创建shardkey索引,然后在使用sh.shardCollection()来对colleciton启用sharding功能;基于范围做分片,我们可以在多个字段上做;

  基于hash做分片

  提示:基于hash做分片只能在一个字段上做,不能指定多个字段;从上面的状态信息可以看到testdb.peoples被分到了shard2上,peoples1一部分分到了shard1,一部分分到了shard2上;所以在peoples中插入多少条数据,它都会写到shard2上,在peoples1中插入数据会被写入到shard1和shard2上;

  验证:在peoples1 集合上插入数据,看看是否将数据分片到不同的shard上呢?

  在mongos上插入数据

  在shard1上查看数据

 提示:在shard1上可以看到对应collection保存了4966条数据;

  在shard2上查看数据

  提示:在shard2上可以看到有peoples集合和peoples1集合,其中peoples1集合保存了5034条数据;shard1和shard2总共就保存了我们刚才插入的10000条数据;

  ok,到此mongodb的分片集群就搭建,测试完毕了;

到此这篇关于分布式文档存储数据库之MongoDB分片集群的文章就介绍到这了,更多相关MongoDB分片集群内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章