OBCP 每日一问

租户资源 Unit 扩容时,在线扩容与离线扩容的区别;Unit 迁移过程中,租户业务是否中断,读写性能波动原因是什么?

2 个赞

一、在线扩容 vs 离线扩容

OceanBase 的 Unit 扩容本质上是在线操作,但根据操作方式和对业务的影响程度,可分为两种:

表格

在线扩容(平滑扩缩容) 普通扩容(非平滑)
操作方式 修改 unit_config(调大 CPU/内存)或调大 UNIT_NUM,系统自动进行 Transfer + 日志流迁移完成数据重分布 直接修改 UNIT_NUM,系统自动均衡,不额外控制迁移节奏
业务影响 租户持续运行,业务不中断;通过关闭 enable_ls_leader_balance、分步操作等手段避免切主,减小 RT 波动 租户仍在线,但负载均衡过程中可能出现 Leader 切换、副本迁移,导致 RT 波动较大
适用场景 对 RT 高度敏感的核心业务 一般业务、可容忍短暂波动的场景
关键配置 关闭 enable_ls_leader_balance、分步分裂资源池、调整 PRIMARY_ZONE 保持默认均衡策略

官方强调:原则上仅 UNIT_NUM 变化的 Zone 会发生迁移复制,其他 Zone 只做本地 Transfer,不迁移日志流。但如果扩容前租户已处于非均衡状态,则无法保证其他 Zone 不迁移。

二、Unit 迁移过程中业务是否中断

业务不中断,但会有性能波动。

OceanBase 的 Unit 迁移是在线操作,租户全程可读写。但官方明确指出:

“迁移任务会消耗源节点和目标节点的网络与 I/O 资源,迁移流量与业务流量重叠,业务流量会受迁移流量影响。”

三、读写性能波动的原因

  1. 网络与 I/O 争抢:迁移过程需要传输数据副本,占用源/目标节点的网络带宽和磁盘 I/O,与业务读写竞争资源
  2. Leader 切换(切主) :负载均衡过程中日志流 Leader 可能发生切换,切主瞬间读写会有短暂延迟抖动
  3. Transfer 任务开销:分区数据在节点间转移时消耗 CPU 和内存
  4. 日志流副本迁移:新建副本需要同步数据,增加额外写入负载

四、降低波动的手段

表格

参数/操作 作用
sys_bkgd_net_percentage 控制迁移任务占用的网卡带宽比例(默认 60%,可调低)
balancer_idle_time 控制迁移任务发起间隔(默认 10s)
关闭 enable_ls_leader_balance 禁止日志流 Leader 自动均衡,避免切主
先 Stop Zone 再 Delete Server 避免迁移流量与业务流量重叠
1 个赞