首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

MongoDB分片集群部署

分片集群规划

服务器准备

部署MongoDB 3.4.7

下载地址: MongoDB Download Center

目录准备

mongos不会存数据, 它只依赖配置数据,在初始化时从config server中获取配置数据到内存中。

/etc/hosts配置

启动config server和shard

登录任意一台配置服务器,初始化配置副本集

还可以这样初始化, 看起来更直观一些

config副本集的名字是config, 必须和配置文件config/mongos.conf保持一致

在三台服务器上的config server, shard启动后,再依次启动mongos

创建三个shard的副本集shard1,shard2,shard3

其中lovefly-pms01是分片副本集的名字,在三个副本集上必须一致; 后面两个是副本集。

shard的配置文件

配置mongos

在任意一台服务器上登录mongos配置shard

这样就把三台mongodb分片添加到config server中了。注意:这里的shard没有副本集,在生产环境强烈建议需要创建副本集。这样添加副本集分片:

让指定的数据库、指定的集合分片生效

我们设置testdb的 table1 表需要分片,根据 id 自动分片到 shard1 ,shard2,shard3 上面去。要这样设置是因为不是所有mongodb 的数据库和表 都需要分片!

关闭mongod和mongos进程

如果进程启动不了,去查看日志文件

从日志中可以看到进程启动不了是因为“addr already in use”, 原来是端口23000已被占用了。从这个问题也反应出我们平台在部署时要规划好各服务器,各端口的分配,力争保持统一,这样便于管理。同时,也应做好文档记录。

在遇到端口占用问题是,可以通过下面两个命令查找相关进程信息:

摘录

分片操作

删除分片

均衡器

均衡器负责数据迁移,周期性的检查分片是否存在不均衡,如果不存在则会开始块的迁移,config.locks集合里的state表示均衡器是否正在运行,0表示非活动状态,2表示正在均衡。均衡迁移数据的过程会增加系统的负载:目标分片必须查询源分片的所有文档,将文档插入目标分片中,再清除源分片的数据。可以关闭均衡器(不建议):关闭会导致各分片数据分布不均衡,磁盘空间得不到有效的利用。

均衡器是以块的数量作为迁移指标,而非数据大小,块的大小默认是64M, 如果数据量较大,可以考虑调整为200M.因为块过多会增加管理和维护成本,但是如果块太大,又会导致数据迁移成本过高。

设置均衡器的时间窗口。导致分片写入比单点写入慢就是因为分片路由服务(mongos)需要维护元数据、数据迁移、路由开销等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180727G1X93F00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券