Locality 基本语法结构型为如下所示:

下述表格展示了语法中各元素的意义:

说明

  • 表和表组的 Locality 可以为空,表示继承自所属租户。租户的 Locality 不可以为空。

  • 当租户的 Locality 发生变更时,在该租户下,所有 Locality 为空的表的副本的分布情况也会随之变化。Locality 不为空的表在租户的 Locality 变更时,其对应副本的分布情况不会改变。

示例:

下述示例展示了在一个拥有五个 Zone(z1~z5)的 OceanBase 集群中,可以容纳不同 Locality 的多个租户和它们的 Locality 情况:

  • sys tenant 的 Locality:

  • tenant2 的 Locality: F@z1

Locality 的变更需要遵循以下规则:

  • 变更进度与 tenant/table 级变更限制

    • 在旧的一轮租户 Locality 没有完成变更时,新一轮的租户 Locality 变更不允许被执行。

  • Paxos 副本数变更规则

    • 非 Paxos 副本的变化可以和上述任何变更同时发生,没有数量限制。

Locality 的设置通常用于集群的副本数升级、降级或集群的搬迁:

  • 集群副本数升级

    以租户为粒度,对集群中的每一个租户,增加租户下 Partition 的副本数。例如,将 Locality 由 F@z1,F@z2,F@z3变更为 ,租户从 3 副本变为 5 副本。

  • 以租户为粒度,对集群内的每一个租户通过若干次 Locality 变更。比如,将 Locality 从 F@hz1,F@hz2,F@hz3变更为 即代表将原集群中属于杭州的两个 Zone 迁到上海。