标签:active 单节点 注意 attribute 迁移 分片 keyword 图片 dash
如果不了解 MongoDB Sharded Cluster 原理,请先阅读
关于 sharding 迁移,会分3个部分来介绍,本文为第三部分
在前面2个部分里,介绍了 MongoDB sharding 的迁移策略以及 chunk 迁移的步骤,本文将主要介绍如何管理 Balancer,以更好的为业务服务。
可能需要关闭 Balancer 场景包括
查看 Balancer 当前状态
sh.getBalancerState()
关闭 Balancer
sh.stopBalancer()
开启 Balancer
sh.startBalancer()
说明:本文中提到的命令,都是连接到 sharding cluster 的 mongos 上执行
默认情况下,Balancer 会针对所有分片的集合做负载均衡,如果针对某些特殊集合,不想 Balancer 自动去迁移数据,可以仅针对该集合关闭。
针对 students.grades 集合关闭 Balancer
sh.disableBalancing("students.grades")
针对 students.grades 集合开启 Balancer
sh.enableBalancing("students.grades")
为了尽量避免 chunk 迁移影响业务,可以将 Balancer 设置为只在某个时间窗口内工作,避开业务高峰期,如下命令设置 Balancer 只在凌晨2:00 – 6:00 工作。
moveChunk 允许用户自定义迁移数据时,数据写到目标上的安全级别 (自由的在可靠性和迁移效率间做选择),通过writeConcern 的方式来指定。
用户可以修改_secondaryThrottle
以及 writeConcern
参数,这2个参数需要组合起来使用,意思是如果_secondaryThrottle
为 true,则使用 writeConcern
选项来指定迁移时写数据的策略;如果_secondaryThrottle
为 false,则使用{w: 1}, 如下命令将 writeConcern 设置为 {w: majority}。
如果没有设置,则默认使用 {w: 2} ,要求至少写到目标2个节点(若目标 shard 是单节点,则退化为{w: 1})。
数据迁移完后,源 shard 需要将迁移完的 chunk 移除,默认情况下,源 shard 会将删除 chunk 的任务加到一个后台队列,在后台异步删除,然后 Balancer 就可以启动下一次的 chunk 迁移。用户可以设置 _waitForDelete 为 true(默认为 false),让源 shard 在 chunk 迁移完后同步删除 chunk 数据。
MognoDB sharding 默认 chunkSize 为64MB,默认设置在绝大多数场景都是合适的,在某些场景下,用户可能需要修改 chunkSize 配置,具体参考关于MongoDB Sharding,你应该知道的 文章里『关于jumbo chunk及 chunk size』部分,这里不再赘述。
如下命令将 chunkSize 修改为 100MB
注意事项
转载自:https://blog.csdn.net/wangkai_123456/article/details/53353193
标签:active 单节点 注意 attribute 迁移 分片 keyword 图片 dash
原文地址:https://www.cnblogs.com/xibuhaohao/p/13156722.html