一般来说合并会在业务低峰期进行,但并不是所有业务都有业务低峰期。在合并期间,会消耗比较多的 CPU 和 IO,此时如果有大量业务请求,势必会对业务造成影响。为了规避合并对业务的影响。借助 OceanBase 的多副本分布式架构,引入了轮转合并的机制。

    一般配置下,OceanBase 会同时有3个数据副本,当一个数据副本在进行合并时,会将这个副本上的查询流量切到其他没在合并的集群上面,这样业务的查询就不受每日合并的影响。等这个副本合并完成后,再将查询流量切回来,继续做其他副本的合并。为了避免流量切过去后,cache 较冷造成的rt波动,在流量切换之前,OceanBase 还会做cache 的预热。

    轮转合并是一种各个副本轮流进行合并的策略既可用于全量合并,也可用于增量合并。对全量合并和增量合并而言是一个正交的概念,可以配置也可以不配置。如果不配置,则多个副本同步合并。