在新节点添加时如何自动重新平衡分片?
最后更新于 2024 年 4 月 18 日
问题
在向集群添加节点时,是否有任何 rladmin
命令或程序可以重新平衡数据库?虽然可以迁移特定的分片,但是否存在类似于部署集群数据库时使用的稀疏策略(sparse policy)的例程?
回答
分片在节点间的优化分布可以通过 REST API 实现。遵循的步骤如下:
- 在数据库上启用稀疏放置策略(sparse placement policy)
- 使用以下命令生成蓝图
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
命令的输出
参考
请参阅“优化分片放置数据库操作请求”