暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

OceanBase分布式存储Locality概述

2023-05-01
958

Locality 描述了表或租户下副本的分布情况。这里的副本分布情况指在 Zone 上包含的副本的数量以及副本的类型,不同的租户在同一个集群内可以配置不同的 Locality 并且彼此之间相互独立不受影响。

Locality 语义

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

replicas{量词}@location

语法中各元素的意义如下表所示:

元素说明
replicas表示副本类型,副本类型相关说明请参见 副本概述章节。
replicas 的值为副本名称,您可以在副本类型说明表中的名称列获得支持的值(支持全名和简写)。
location表示位置。它是系统已知的一组枚举值。 location 的值为 Zone 的名称。集群和租户中的各 Zone 的名称的查看方法,可参见 查看集群拓扑图
量词不指定量词的时候,表示一个副本。用 {n} 表示 n 个副本。 有一种特殊的量词 {all_server} 表示副本数和可用的 OBServer 的数量相同。一个分区在一个 Zone 中最多有一个全功能副本(该类型的副本是 Paxos 复制组的成员)。

说明

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

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

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

  • sys tenant 的 Locality: F@z1,F@z2,F@z3,F@z4,F@z5

  • tenant2 的 Locality: F@z1

Locality 变更规则

Locality 的变更需要遵循以下规则,在旧的一轮租户 Locality 没有完成变更时,新一轮的租户 Locality 变更不允许被执行。

Locality 应用场景

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

  • 集群副本数升级

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

  • 集群副本数降级

    以租户为粒度,对集群内的每一个租户减少其中 Partition 的副本数。例如,将 Locality 由 F@z1,F@z2,F@z3,F@z4,F@z5 变更为 F@z1,F@z2,F@z3,租户从 5 副本变为 3 副本。

  • 集群搬迁

    以租户为粒度,对集群内的每一个租户通过若干次 Locality 变更。例如:将 Locality 从 F@hz1,F@hz2,F@hz3 变更为 F@hz1,F@sh1,F@sh2hz 和 sh 表示 Zone 所在的城市为杭州和上海。即代表将原集群中属于杭州的两个 Zone 迁到上海。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论