本文是基于OceanBase V2.2.77版本 官方文档 做的学习记录,主要是目的是进行OBCP 考试,通过学习文档,希望了解OceanBase知识,最终考过OBCP。go!
本文内容大部分都是OceanBase 官网资料,做了一些比较显著的标志。
租户是一个逻辑概念,在 OceanBase 数据库里是资源分配的单位,是数据库对象管理和资源管理的基础。
租户之间是完全隔离的。
在资源使用方面表现为租户“独占”其资源配额。总体上来说,租户(tenant)既是各类数据库对象的容器,又是资源(CPU、Memory、IO 等)的容器。
OceanBase 系统中包含两大类的租户:系统租户和普通租户。
系统租户是系统内置的,有三个主要的功能:
系统表的容器
所有的系统表都存放在系统租户的空间中。
具备集群管理功能的用户的容器
集群级别的管理功能,比如增加/删除租户,修改系统配置项,每日合并等操作,只允许系统租户下的用户来做。
提供执行系统维护和管理行为所需的资源
选主、日志同步、每日合并等操作没有按租户分离,这些操作所需的资源由系统租户来统一提供。
普通租户
可以被看作是一个数据库实例,它由系统租户根据需要(比如说为了某个业务的需要)创建出来。在创建租户的时候,除了指定租户名字以外,最重要的是指定它占用的资源情况。
普通租户具备一个实例所应该具有的所有特性:
可以创建自己的用户
可以创建数据库(database)、表(table)等所有客体对象
有自己独立的 information_schema 等系统数据库
有自己独立的系统变量
数据库实例所具备的其他特性
多租户隔离
OceanBase 在数据库内部实现一个 SQL 虚拟机, DB 内把很多业务统一管理,把整个管理机制做得对用户特别透明。
隔离的开销比较低,单台服务器可以服务更多的租户,降低云服务的整体成本。
租户隔离分为三个部分:CPU、IO 还有内存,网络目前还不是瓶颈,不做隔离。

多机层面调度
负载均衡:
第一个层面是:租户负载均衡,即把每个租户的资源容器分布到很多台 OBServer 上面去。
第二个层面是:分区负载均衡,如果租户只在一台服务器,第二个层面是没有必要的。如果租户在多台服务器上,需要把这个租户的分区均匀地分布到它的资源容器中。
OceanBase 数据库内部会尽量使得小租户只在一台服务器上,避免分布式事务。当租户需要的资源逐步增加时,OceanBase 数据库也能做到自动扩展,对用户是透明的。




