KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结

文章来源声明: 原文作者:KaiwuDB; 来源站点:掘金; 原文链接:https://juejin.cn/post/7701269882872070163; 本文基于上述来源整理/加工,觅优补充点评,仅供技术学习交流。版权归原作者所有。
觅优短评

文章把扩缩容原理、命令与踩坑清单串成完整流程,适合DBA和运维在KaiwuDB集群交付、扩容与缩容前做操作核对。

很多新手 DBA 会觉得扩缩容就是加机器删机器,实际远没有这么简单。分片迁移、副本、租约每一步出错,都可能造成业务抖动。

1、为什么我们需要集群弹性

业务流量不是恒定的,业务上涨,数据库压力打满;业务回落,资源白白浪费。

垂直扩展 Scale‑Up:升级单机硬件,简单但是有硬件上限,大多场景要停机。

水平扩展 Scale‑Out:新增节点分担压力,需要数据库支持分片。

KaiwuDB 最小分片单元叫 Range,分片多副本分散存储。新增节点触发 Rebalance 数据重分布,分片迁移完成扩容才真正生效。缩容不能直接关机,要走 decommission 退役流程,先迁移副本租约再移除节点。

踩坑提醒:迁移会吃带宽和磁盘 IO,务必业务低峰操作,磁盘占用会临时升高,预留磁盘空间。

2、扩缩容架构演进

单机架构:停机迁移,业务中断。

主备架构:新增备库需要全量拷贝预热,预热完成才能承接读流量。

分布式 Raft 多副本:在线迁移副本,业务读写不中断,KaiwuDB 多副本集群就是这套方案。

3、KaiwuDB 三种集群扩缩容能力

配图3.PNG

坑:扩缩容过程中,时序索引 DDL 容易超时,等操作结束重试即可;节点数不能超过 license 限制。

3.1 扩容实操

有两种方式:安装程序(cli/gui/interact)适合标准化交付;命令行适合自动化运维平台,自定义参数。 前置条件:集群正常运行,待扩容节点无 KaiwuDB 部署,节点数未达许可证上限。

命令行示例(非安全模式多副本)

<kwbase_path>/kwbase start \
  --insecure \
  --store=/var/lib/kaiwudb \
  --brpc-addr=:27257 \
  --listen-addr=新节点IP:26257 \
  --http-addr=新节点IP:8080 \
  --join=集群已有节点地址 \
  --background

执行完用kwbase node status确认节点入群,多副本集群自动触发重分布。

3.2 缩容实操(仅多副本、双副本集群)

健康检查,确认无不可用、副本不足分片

SELECT sum((metrics->>'ranges.unavailable')::DECIMAL)::INT AS ranges_unavailable,
       sum((metrics->>'ranges.underreplicated')::DECIMAL)::INT AS ranges_underreplicated
FROM kwdb_internal.kv_store_status;

执行节点退役

<kwbase_path>/kwbase node decommission <node_id> --insecure --host=集群存活节点

观察退役进度,副本数降到 0 代表完成

<kwbase_path>/kwbase node status --insecure --decommission

校验集群节点列表确认结果。

缩容踩坑清单

  • 三副本集群最小节点数 3,不能缩容到 3 以下;
  • zone 副本约束包含待退役节点,退役会卡住,先修改约束;

退役节点想要重新加入集群,必须清空数据目录,当作全新节点。

扩缩容本质是分片副本迁移再均衡,不是简单加减机器。KaiwuDB 已经把副本迁移、租约切换自动化,但运维前置校验必不可少。详情参考官方文档:www.kaiwudb.com/docs/#/db-o…