了解或使用过 OceanBase 的朋友都知道 “多租户”这一概念,OceanBase 的租户类似于传统数据库实例,比如 OceanBase 支持 MySQL 兼容模式的租户,站在客户端的角度,使用一个 MySQL 兼容模式的租户,就类似于使用一个普通的 MySQL 数据库实例。
OceanBase 4.3 版本在已有的多租户架构基础上,新增了功能——租户克隆。
本期课程将向大家介绍租户克隆的作用和使用方式。
课程背景
当我们需要使用 OceanBase 数据库时,会在一台或多台机器上拉起 OceanBase 进程,这些进程会组成 OceanBase 集群。
在这个集群中,我们可以创建出需要的租户。
单个 OceanBase 集群中可以创建出多个租户,租户间互相隔离。
如下图所示,在 OceanBase 的系统租户下执行该克隆语句,就可以对指定的源租户快速克隆出一个新租户。
新克隆租户在初始时刻包含的数据,就是源租户在语句执行时刻的一个快照。
租户克隆操作可以快速把源租户的元数据信息,拷贝一份,给到新克隆租户来使用。初始时刻,新克隆租户访问的是和源租户完全相同的物理宏块(宏块,就是上图中画的 Macro Block,是 OceanBase 中基础的数据存储单元)。因为克隆过程只拷贝了元数据,而不是拷贝数据,所以克隆操作可以快速完成。
该新克隆租户与源租户是两个独立的租户,他们之间保持了 OceanBase 一直以来的租户隔离特性,存在严格的数据隔离和资源隔离。新克隆租户的任何数据改动,都不会影响到源租户;源租户的数据改动,也不会影响到新克隆租户。新克隆租户与源租户具有自己独占的 CPU、内存、IOPS 资源,不相互抢占。
同时,我们还专门为此设计了一个在线体验课程,让大家能够直接到线上环境中,根据实验步骤,亲自对 OceanBase 进行一次租户克隆。大家可以通过这个实验,了解租户克隆的完整流程,并体验租户克隆的便捷性,以及租户克隆的真实耗时。
边学边练,效果拔群
这个功能的使用并不复杂,可以在 sys 租户下执行该克隆租户语句,对指定租户克隆出一个新租户:
CREATE TENANT new_tenant_name FROM source_tenant_name
WITH
RESOURCE_POOL [=] resource_pool_name,
UNIT [=] unit_config
该操作会根据源租户的 unit 分布情况,自动根据源租户的资源分布,为新租户创建出资源池,语句中的 resource_pool_name 标识资源池的名称,unit_config 标识新克隆租户的 resource pool 单个 unit 的规格。
正所谓 “纸上得来终觉浅,实践才能出真知”,强烈推荐大家点击下面的链接,根据在线体验页面左边的实验文档,亲手实践一把!
-
- 因为新租户初始状态下和源租户共享物理宏块,所以该克隆操作可以在一分钟左右快速完成,不会耽误大家的时间。
-
- 大家完成课后小测,并在小测中上传实验截图,就可以从社区论坛中获取积分,并有机会获得抽奖的礼物。
-
坚持完成全部十期实验并通过结课考试的同学,还可以获得更多的积分奖励,并有机会获得 OBCA / OBCP 考试券。活动详情见:【积分 + 福利】OceanBase DBA 实战营(第二季)—— 体验再升级,好礼不停息!(7 月 14 日正式上线)
-
大家积极参与在线体验的实验,也是我能够持续为大家更新《DBA 实战营(第二季)》课程内容的动力!