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

OceanBase数据库之租户类型介绍

Tonyhacks 2023-11-06
940

租户类型

OceanBase 数据库 V4.0 开始,有三种类型的租户:系统租户、用户租户以及每个用户租户对应的 Meta 租户。

在 4.x 以前的版本中,只有系统租户和用户租户,存在本该属于用户租户的数据存放到了系统租户的问题,导致系统租户比较臃肿,引发系统租户资源占用过多、资源统计粒度粗、资源隔离不足等问题,对集群稳定性造成了较大挑战。OceanBase 数据库 V4.0 开始引入了 Meta 租户,为每个用户租户配置一个对应的 Meta 租户来管理用户租户的私有数据,并使用用户租户的资源。

Root Service 承担了 OceanBase 数据库的大量管理工作,包括集群管理,租户管理,资源管理,负载均衡,每日合并调度,迁移复制等,Root Service 基于系统租户支持以上功能。系统租户是 OceanBase 数据库内部用来处理集群公共任务的数据库实例。

租户类型介绍

  • 系统租户

    系统租户是集群默认创建的租户,与集群生命期一致,负责管理集群和所有租户的生命周期。系统租户仅有一个 1 号日志流,只支持单点写入,不具备扩展能力。系统租户可以创建用户表,所有的用户表和系统表数据均由 1 号日志流服务。系统租户数据是集群私有的,不支持物理备份恢复。

    系统租户是应用系统访问 OceanBase 数据库的入口,客户端解析应用系统配置文件后访问 Config Server 获取系统租户的 IP 列表,然后访问系统租户逐级获取元数据,并最终建立与目标租户的连接。系统租户的容量是稳定性的一大挑战,大量应用系统同时重启时会产生建连的流量尖峰,短时间打爆系统租户的工作线程,导致应用系统建连失败。系统租户不具备横向扩展能力,可以对系统租户垂直扩容,或者调整集群配置项。

    虽然有多副本机制保证系统租户可以容忍少数派节点故障,但系统租户依然是集群的单点。由于内核 Bug 导致系统租户异常后将会影响 OceanBase 集群的服务可用性,会导致客户端无法建立连接、及集群内部的管理工作异常,系统租户的稳定性对 OceanBase 集群的稳定性至关重要。系统支持了一套检测机制,通过该机制发现系统租户的异常,并通过运维命令强制切主来恢复。也可以通过外部 admin 工具来强制切换服务,新主上任后,再隔离原来的异常机器。

  • 用户租户

    与系统租户对应的是用户租户,用户租户是由用户创建的租户,对外提供完整的数据库功能,支持 MySQL 和 Oracle 两种兼容模式。用户租户支持服务能力水平扩展到多台机器上,支持动态扩容和缩容,内部会根据用户配置自动创建和删除日志流。用户租户的数据有更强的数据保护和可用性要求,支持跨集群物理同步和物理备份恢复,典型数据包括:schema 数据、用户表数据、事务数据等。

    关于用户租户的更多信息,参见 用户租户

  • Meta 租户

    Meta 租户是 OceanBase 数据库内部自管理的租户,每创建一个用户租户会创建一个对应的 Meta 租户,其生命周期与用户租户保持一致。Meta 租户用于存储和管理用户租户的租户私有数据,这部分数据不需要跨库物理同步以及物理备份恢复,例如:配置项、位置信息、副本信息、日志流状态、备份恢复相关信息、合并信息等。 Meta 租户不可登录,普通用户只能通过系统租户的视图查询 Meta 租户下的数据。Meta 租户没有独立的 Unit,创建租户时默认为 Meta 租户预留资源,各项资源从用户租户资源中扣除。

用户租户与 Meta 租户是相关的概念,可以简单理解为:用户租户存放的都是与用户数据相关的信息,包括用户创建的表和部分系统表,这部分数据需要在主备集群之间同步,物理备份恢复也需要操作这部分数据;而 Meta 租户存放的都是支撑用户租户运行的租户私有数据,主备集群会各自创建自己的 Meta 租户,物理备份数据恢复出来的租户也会有自己的 Meta 租户,所以这部分数据不需要在主备集群之间同步,也不需要备份。系统租户与 Meta 租户类似,存放的是支撑集群运行的集群私有数据,同样无需主备集群之间同步及物理备份。

image.png

如上图所示:

  • 租户是 OceanBase 数据库中的一个实例,独占一定的物理资源,类似于云环境下的 Docker。
  • 系统租户是集群默认创建的租户,与集群生命周期一致,负责管理集群和所有的用户租户。
  • 用户租户由用户创建,用户租户与 Meta 租户一一对应,具有相同的生命周期。
  • 私有数据表示支撑集群和用户租户运行的数据,每个集群和租户都会有自己的数据,这部分数据不需要在主备集群之间同步,也不需要物理备份。
  • 非私有数据表示用户数据,包括用户创建的表和部分系统表,需要在主备集群之间同步及物理备份。
  • 系统租户和 Meta 租户仅有一个 1 号日志流,不具备水平扩展能力。
  • 用户租户支持动态创建和删除日志流,具备水平扩展能力。

租户信息查询

登录系统租户,查询 DBA_OB_TENANTS 视图即可查看所有的租户。TENANT_TYPE 表示租户类型:SYS 为系统租户,META 为 Meta 租户,USER 为用户租户。租户 ID 为 1 的是系统租户。租户 ID 大于 1000 的租户中,偶数的是用户租户,奇数的是 Meta 租户,并且用户租户的租户 ID 比其对应 Meta 租户大 1。

示例如下:

obclient [oceanbase]>  SELECT * FROM DBA_OB_TENANTS;
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+
| TENANT_ID | TENANT_NAME | TENANT_TYPE | CREATE_TIME                | MODIFY_TIME                | PRIMARY_ZONE | LOCALITY      | PREVIOUS_LOCALITY | COMPATIBILITY_MODE | STATUS | IN_RECYCLEBIN | LOCKED | TENANT_ROLE | SWITCHOVER_STATUS | SWITCHOVER_EPOCH | SYNC_SCN            | REPLAYABLE_SCN      | READABLE_SCN        | RECOVERY_UNTIL_SCN  | LOG_MODE     | ARBITRATION_SERVICE_STATUS |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+
|         1 | sys         | SYS         | 2023-05-17 18:10:19.940353 | 2023-05-17 18:10:19.940353 | RANDOM       | FULL{1}@zone1 | NULL              | MYSQL              | NORMAL | NO            | NO     | PRIMARY     | NORMAL            |                0 |                NULL |                NULL |                NULL |                NULL | NOARCHIVELOG | DISABLED                   |
|      1001 | META$1002   | META        | 2023-05-17 18:15:21.455549 | 2023-05-17 18:15:36.639479 | zone1        | FULL{1}@zone1 | NULL              | MYSQL              | NORMAL | NO            | NO     | PRIMARY     | NORMAL            |                0 |                NULL |                NULL |                NULL |                NULL | NOARCHIVELOG | DISABLED                   |
|      1002 | mysql001    | USER        | 2023-05-17 18:15:21.461276 | 2023-05-17 18:15:36.669988 | zone1        | FULL{1}@zone1 | NULL              | MYSQL              | NORMAL | NO            | NO     | PRIMARY     | NORMAL            |                0 | 1684395321137516636 | 1684395321137516636 | 1684395321052204807 | 4611686018427387903 | NOARCHIVELOG | DISABLED                   |
|      1003 | META$1004   | META        | 2023-05-17 18:18:19.927859 | 2023-05-17 18:18:36.443233 | zone1        | FULL{1}@zone1 | NULL              | MYSQL              | NORMAL | NO            | NO     | PRIMARY     | NORMAL            |                0 |                NULL |                NULL |                NULL |                NULL | NOARCHIVELOG | DISABLED                   |
|      1004 | oracle001   | USER        | 2023-05-17 18:18:19.928914 | 2023-05-17 18:18:36.471606 | zone1        | FULL{1}@zone1 | NULL              | ORACLE             | NORMAL | NO            | NO     | PRIMARY     | NORMAL            |                0 | 1684395321137558760 | 1684395321137558760 | 1684395320951813345 | 4611686018427387903 | NOARCHIVELOG | DISABLED                   |
+-----------+-------------+-------------+----------------------------+----------------------------+--------------+---------------+-------------------+--------------------+--------+---------------+--------+-------------+-------------------+------------------+---------------------+---------------------+---------------------+---------------------+--------------+----------------------------+
5 rows in set

租户类型的区别

从用户视角,三种租户的关键特性的异同点如下:

对比项 系统租户 用户租户 Meta 租户
租户 ID(TENANT_ID) 1 最小值:1002 最小值:1001与用户租户 ID 关系:Meta 租户 ID + 1 = 用户租户 ID
租户类型(TENANT_TYPE) SYS USER META
租户名规范 SYS 大小写英文字母、数字和下划线 META${user_tenant_id},例如:用户租户的租户 ID 为1002,Meta 租户名为:META$1002
数据属性 集群私有数据 租户非私有数据 租户私有数据
扩展性 数据不可水平扩展,只有一个日志流 具备水平扩展能力,支持动态扩容和缩容 数据不可水平扩展,只有一个日志流
租户运维 • 创建:不支持
• 删除:不支持
• 重命名:不支持
• 用户登录:支持
• 修改 Locality:支持
• 修改 Primary Zone:支持
• 创建:支持
• 删除:支持
• 重命名:支持
• 用户登录:支持
• 修改 Locality:支持
• 修改 Primary Zone:支持
• 创建:不支持
• 删除:不支持
• 重命名:不支持
• 用户登录:不支持
• 修改 Locality:不支持
• 修改 Primary Zone:不支持
数据对外访问接口 系统租户下的视图。 • 系统租户下:
   ◦ CDB_xxx 视图和动态性能视图会展示所有用户租户的数据。
   ◦ DBA_OB_TENANTS 视图会展示所有用户租户的信息。
• 用户租户下:展示本租户的数据。
Meta 租户不能直接登录,它的信息可以通过用户租户和系统租户进行访问。
• 系统租户下:
   ◦ CDB_xxx 视图和动态性能视图会展示所有 -Meta 租户的数据。
◦ DBA_OB_TENANTS 视图会展示所有 Meta 租户的信息。
• 用户租户下:Meta 租户管理的数据会通过用户租户下的视图展示出来,例如路由信息 DBA_OB_LS_LOCATIONS、配置项信息 GV$OB_PARAMETERS 等。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论