MongoDB:分片的配置

来源:互联网 发布:seo实战密码下载 编辑:程序博客网 时间:2024/06/05 17:48

MongoDB:分片的配置

背景

当MySQL数据库的存储容量变得十分庞大时,自然会想到分库分表。同样的,MongoDB也有这种方法,一台服务器不能够存储海量数据,其读写的性能也会降低,此时可以通过在多台机器上分片存储数据来解决这个问题。

使用分片的原因

  • 本地磁盘不足
  • 数据请求量巨大,内存不足
  • 单个副本集限制
  • 。。。

MongoDB分片介绍

分片结构
MongoDB分片有三个组成部分:
1 Shard:分片服务器,用于存储实际数据,可以是一个MongoDB服务器,MongoDB主从,MongoDB集群
2 Config:配置服务器,存储各种的配置信息,包括分片信息,分片的状态等
3 Router:前端路由,应用程序可以使用这个路由来访问这个分片集群

具体的配置方法

我使用六个MongoDB服务器搭建这个分片集群,使用本地的不同端口来模拟不同的服务器,本地的环境是windows10(64位),需要注意的是,配置分片集群时,如果我们使用的是localhost是可以配置成功一部分,但是在之后的添加分片服务器和访问时会出现错误,所以使用ip地址来启动服务器。

分片服务器集群的设计

MongoDB服务器群
MongoDB1,MongoDB2:单独的服务器
MongoDB3,MongoDB4:组成一个副本集
MongoDB5:作为配置服务器
MongoDB6:路由服务器

启动分片服务器

注意在启动时,以ip地址启动,需要添加–shardsvr:
mongod --dbpath=D:\MongoDB1\data\db --bind_ip=192.168.1.118 --port=1111 —shardsvr
mongod --dbpath=D:\MongoDB1\data\db --bind_ip=192.168.1.118 --port=2222 —shardsvr
mongod --dbpath=D:\MongoDB3\data\db --bind_ip=192.168.1.118 --port=3333 --replSet=rs1 --shardsvr
mongod --dbpath=D:\MongoDB4\data\db --bind_ip=192.168.1.118 --port=4444 --replSet=rs1 --shardsvr
在集群分片服务器启动后,需要对该集群服务器进行初始化rs.initiate(),和确定主服务器rs.conf()

启动配置服务器

mongod --port=5555 --bind_ip=192.168.1.118 --dbpath=D:\MongoDB5\data\db --replSet=rs0 –configsvr
在最新版的分片配置中,该配置服务器一定要配置为MongoDB集群,在服务启动后,同样要对集群服务器进行初始化,和确定主服务器

启动路由服务器

mongos --bind_ip=192.168.1.118 --port=6666 --configdb=rs0/192.168.1.118:5555
是由mongos方式进行启动,而不是mongo

添加分片服务器到集群中

在启动mongos后,需要选择admin数据库use admin
添加分片服务器:
sh.addShard('192.168.1.118:1111')
或者:
db.runCommand({ addshard:"192.168.1.118:2222" })
添加分片集群服务器:
sh.addShard("rs1/192.168.1.118:3333,192.168.1.118:4444")
使用sh.status()查看分片的状态
分片服务器状态

分片配置结束

这样,分片集群配置结束了,如何使用分片集群目前还是不是很明白,之后搞明白的话,我会接下来在写的。
当然,我也希望各位大神如果有什么建议的话也可以告诉我

原创粉丝点击