在新节点添加时如何自动重新平衡分片?

最后更新于 2024 年 4 月 18 日

问题

在向集群添加节点时,是否有任何 rladmin 命令或程序可以重新平衡数据库?虽然可以迁移特定的分片,但是否存在类似于部署集群数据库时使用的稀疏策略(sparse policy)的例程?

回答

分片在节点间的优化分布可以通过 REST API 实现。遵循的步骤如下:

  1. 在数据库上启用稀疏放置策略(sparse placement policy)
  2. 使用以下命令生成蓝图
curl -l -k -u "<ADMIN_USERNAME>:<ADMIN_PASSWORD>" -X GET -H 'Content-type: application/json' "https://127.0.0.1:9443/v1/bdbs/10/actions/optimize_shards_placement"

这将指示分片在节点中的最优放置位置。检查 rladmin 并查看这是否与您当前的设置不同。该蓝图可以使用 REST API 的 bdbs 端点应用于数据库。您需要从 GET 请求中获取 cluster-state-id 头部,并在该 PUT 请求的头部中重新提交,将蓝图数组作为 shards_blueprint 的值。

curl -l -k -u "<ADMIN_USERNAME>:<ADMIN_PASSWORD>" -X PUT -H 'Content-type: application/json' -d '{"shards_blueprint": XXX}' https://127.0.0.01:9443/v1/bdbs/10

其中 XXX 是上一个 GET 命令的输出

参考

请参阅“优化分片放置数据库操作请求