一个租户下的partition,会根据租户的规模将指定partition的leader切换到同一个zone内。

    小租户

    小租户会将租户下所有的 partition 的 leader 切换到同一个 zone,引入小租户的概念是为了让业务无感知地迁入OB,迁入初期不会遭遇到分布式读写的问题。

    小租户需要满足如下两个条件:

    • 租户在各zone内仅包含1个unit。
    • 租户下的所有database和table都没有设置primary zone。

    满足以上两个条件的租户在145及之后的版本被认定为小租户。租户在各zone内包含多于1个unit,或者任意database和table设置了primary zone都会被认定为普通租户。

    小租户partition的leader分布规则:

    • 目前会将小租户下所有的partition的leader全部切到同一个目标zone内,目标zone会选取primary zone list内优先级最高的zone,如果优先级最高的zone有多个,会随机选取其中的一个。

    普通租户

    普通租户会将同一个partitiongroup内所有partition的leader切换到同一个zone。

    partitiongroup的概念:同一个tablegroup内分区下标相同的一组partition,被认定为同一个partition group。例如:Table Group TG下有四个表Table A(三个分区), Table B(三个分区), Table C(2个分区)和TableD(1个分区),则:

    • (Partition A0, PartitionB0, Partition C0, Partition D0)为同一partition group PG0;
    • (Partition A1, PartitionB1, Partition C1)为一partition group PG1;
    • (Partition A2, PartitionB2)为一个partitiongroup PG2。

    同一个partitiongroup下partition的leader会切换到同一个目标zone,目标zone会选取primaryzone list内优先级最高的zone,如果优先级最高的zone有多个,会随机选取其中的一个。同一个table group内的不同partition group的leader不保证在同一个zone。例如:上述table group的primary zone list为hz1,hz2。由于hz1和hz2的优先级一致,leader的选取结果可能为:PG0的leader选取到hz1,PG1的leader选取到hz2。