文档首页/ 数据复制服务 DRS/ 常见问题/ 实时迁移/ 如何关闭集合均衡器Balancer
更新时间:2024-11-28 GMT+08:00

如何关闭集合均衡器Balancer

使用DRS服务进行MongoDB数据库分片集群到分片集群的迁移,必须关闭要迁移集合的均衡器Balancer。

  • DDS集群关闭集合均衡器Balancer需调用API接口,参考设置集群均衡开关,具体方法可咨询DDS技术支持。自建MongoDB设置可参考如下步骤
  • 迁移结束后请开启Balancer,因为在迁移期间关闭了Balancer,源数据库的不同shard可能产生了不等量的块(chunk),在Balancer开启之后集群shard之间的块(chunk)移动会暂时影响源数据库的性能。

关闭Balancer的步骤

  1. 通过Mongo Shell 登录数据库。
  2. 在mongos节点命令窗口中,使用如下命令,切换至config数据库。

    use config

  3. 执行如下命令,判断是否可以关闭Balancer。

    while( sh.isBalancerRunning() ) {      
              print("waiting...");           
              sleep(1000);
    }
    • 如果返回结果是waiting,则表示当前Balancer正在执行块(chunk)迁移,此时不能执行关闭Balancer的命令,否则可能引起数据不一致。
      图1 查看输出结果
    • 如果返回结果是空,则表示当前Balancer没有在进行块(chunk)迁移,此时可以执行下一步的关闭Balancer的命令。

  4. 关闭Balancer。

    • 如果是整个实例的迁移,则执行如下命令,可以关闭整个实例的Balancer。
      sh.stopBalancer()
    • 如果要关闭待迁移且已经开启了分片的集合的Balancer,则执行如下命令:
      sh.disableBalancing("database.collection")

      其中database.collection表示要关闭的集合的namespace。