【 使用环境 】测试环境 OceanBase_CE_V4.2.1.7
众所周知,OceanBase 中各个数据表的 主副本 会在 3个 Zone 之间随机均衡分布。
不过,经过我们一段时间的观测发现,Zone2 中有几个数据表(假设为 table_1
、table_2
、table_3
)的 读写相对比较频繁,导致 Zone2 的 CPU负载 是其他两个 Zone 的 3倍以上。
请问,有什么办法可以将 指定数据表 的 主副本 手动转移到另外2个 Zone 上去吗?
【 使用环境 】测试环境 OceanBase_CE_V4.2.1.7
众所周知,OceanBase 中各个数据表的 主副本 会在 3个 Zone 之间随机均衡分布。
不过,经过我们一段时间的观测发现,Zone2 中有几个数据表(假设为 table_1
、table_2
、table_3
)的 读写相对比较频繁,导致 Zone2 的 CPU负载 是其他两个 Zone 的 3倍以上。
请问,有什么办法可以将 指定数据表 的 主副本 手动转移到另外2个 Zone 上去吗?
你好 ob有transfer功能 ,可以实现你的需求您可以参考一下
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000001050184
好的,非常感谢~
我自己也想到了另外一种办法:
等到下一次数据负载均衡时,OB 就会将 Zone2 上的指定表 迁移到 Zone 1。完成之后 再把 表组 清理掉。
再次表示感谢~
这个我到没想到,您可以试试,如果ok 那最好了
我已经执行过了,数据表已经迁移过来了。
当然,您的方案才是官方提供的正规操作。
非常感谢您的热心回复!
不客气 ,有问题随时沟通,互相学习
我建立了3个表组,按照 业务关联程度 以及 业务负载,将不同的表分为了3组。
这 3个表组 的 数据表 主副本 各自分布在一个单独的 Zone。
观察了几天,发现3个Zone的CPU负载相对均衡了不少。
但是,今天又发现,OceanBase 自动负载均衡,把这3个表组的 主副本 全部都自动迁移到了 同一个 Zone。
导致这个 Zone 的 CPU负载 比其他 2个 Zone的负载高了3倍以上,并触发了 load 负载超限的告警( 负载主要来自于 查询 )。
不知道 OceanBase 的 自动负载均衡 是怎么一个算法,为什么自动负载均衡后,负载反而更不均匀了呢 ?
我只能自己通过 enable_transfer = false
来禁用 OB 的自动迁移么 ?关闭该配置之后,如果某个 Zone 发生故障,该 Zone 的主副本,OB 还会进行自动故障转移,以保证服务可用么 ?