深入OceanBase内部机制:多租户架构下的资源隔离实现精讲
深入OceanBase内部机制:多租户架构下的资源隔离实现精讲
OceanBase数据库作为一款分布式关系型数据库,其多租户架构设计在资源隔离和管理方面具有独特的优势。本文将深入解析OceanBase的多租户机制,包括兼容模式、不同类型租户的特点以及整体架构,帮助读者全面理解这一技术实现。
一、什么是OceanBase的多租户
OceanBase数据库采用了单集群多租户设计,天然支持云数据库架构,支持公有云、私有云、混合云等多种部署形式。
OceanBase数据库通过租户实现资源隔离,让每个数据库服务的实例不感知其他实例的存在,并通过权限控制确保租户数据的安全性,配合OceanBase数据库强大的可扩展性,能够提供安全、灵活的DBaaS服务。
租户是一个逻辑概念。在OceanBase数据库中,租户是资源分配的单位,是数据库对象管理和资源管理的基础,对于系统运维,尤其是对于云数据库的运维有着重要的影响。租户在一定程度上相当于传统数据库的"实例"概念。租户之间是完全隔离的。在数据安全方面,OceanBase数据库不允许跨租户的数据访问,以确保用户的数据资产没有被其他租户窃取的风险。在资源使用方面,OceanBase数据库表现为租户"独占"其资源配额。总体上来说,租户(tenant)既是各类数据库对象的容器,又是资源(CPU、Memory、IO等)的容器。
二、兼容模式
OceanBase数据库在一个系统中可同时支持MySQL模式和Oracle模式两种模式的租户。用户在创建租户时,可选择创建MySQL兼容模式的租户或Oracle兼容模式的租户,租户的兼容模式一经确定就无法更改,所有数据类型、SQL功能、视图等相应地与MySQL数据库或Oracle数据库保持一致。
OceanBase数据库社区版仅提供了MySQL模式。
2.1 MySQL模式
MySQL模式是为降低MySQL数据库迁移至OceanBase数据库所引发的业务系统改造成本,同时使业务数据库设计人员、开发人员、数据库管理员等可复用积累的MySQL数据库技术知识经验,并能快速上手OceanBase数据库而支持的一种租户类型功能。OceanBase数据库的MySQL模式兼容MySQL 5.7的绝大部分功能和语法,兼容MySQL 5.7版本的全量以及8.0版本的部分JSON函数,基于MySQL的应用能够平滑迁移。
2.2 Oracle模式
OceanBase数据库从V2.x.x版本开始支持Oracle兼容模式。Oracle模式是为降低Oracle数据库迁移OceanBase数据库的业务系统改造成本,同时使业务数据库设计开发人员、数据库管理员等可复用积累的Oracle数据库技术知识经验,并能快速上手OceanBase数据库而支持的一种租户类型功能。Oracle模式目前能够支持绝大部分的Oracle语法和过程性语言功能,可以做到大部分的Oracle业务进行少量修改后的自动迁移。
三、租户介绍
OceanBase数据库是多租户架构。在V4.0.0版本之前,仅支持两种类型的租户:系统租户和用户租户。从V4.0.0版本开始,引入了Meta租户概念。因此,当前版本对用户可见的租户有三种类型:系统租户、用户租户以及Meta租户。
3.1 系统租户
系统租户是集群默认创建的租户,与集群的生命周期一致,负责管理集群和所有租户的生命周期。系统租户仅有一个1号日志流,仅支持单点写入,不具备扩展能力。
系统租户可以创建用户表,所有的用户表和系统表数据均由1号日志流服务。系统租户的数据是集群私有的,不支持主备集群物理同步和物理备份恢复。
3.2 用户租户
用户租户是由用户创建的租户,对外提供完整的数据库功能,支持MySQL和Oracle两种兼容模式。用户租户支持服务能力水平扩展到多台机器上,支持动态扩容和缩容,内部会根据用户的配置自动创建和删除日志流。
用户租户的数据有更强的数据保护和可用性要求,支持跨集群物理同步和物理备份恢复,典型数据包括:Schema数据、用户表数据及事务数据等。
OceanBase数据库社区版仅提供了MySQL模式。
3.3 Meta租户
Meta租户是OceanBase数据库内部自管理的租户,每创建一个用户租户系统就会自动创建一个对应的Meta租户,其生命周期与用户租户保持一致。
Meta租户用于存储和管理用户租户的集群私有数据,这部分数据不需要进行跨库物理同步以及物理备份恢复,这些数据包括:配置项、位置信息、副本信息、日志流状态、备份恢复相关信息、合并信息等。
3.4 租户架构
租户架构如下图所示,用户租户与Meta租户一一对应,系统租户与Meta租户有且仅有一个1号日志流,日志流为LogStream,简称LS。用户租户支持动态创建和删除日志流。