首批通过分布式安全可靠测评,为关键业务系统打造
创建空备租户
更新时间:2026-06-11 19:11:39
创建空备租户适用于主租户为新创建,或您可以确认该主租户当前拥有租户自创建后的完整日志的场景。
步骤一:创建访问视图的专用用户
由于备租户在连接主租户时,需要访问主租户的部分系统视图,因此需要有一个访问视图专用用户具备这部分系统视图的查询权限。您可以提供一个主租户上已有相关权限的用户,也可以在主租户上为备租户专门创建一个新的具备相关权限的用户。
备租户需要访问的系统视图如下:
GV$OB_LOG_STAT:用于获取主租户的机器列表、副本服务的日志流 LSN 范围、角色(是否是Leader)等信息。关于
GV$OB_LOG_STAT视图的更多介绍,请参见 GV$OB_LOG_STAT。GV$OB_UNITS:查询主租户的所有 Unit 信息,获取副本状态、Zone 以及 Region 等信息,用于过滤、获取和维护租户机器连接等。关于
GV$OB_UNITS视图的更多介绍,请参见 GV$OB_UNITS。GV$OB_PARAMETERS: 用于查询主租户的cluster_id、tenant_id等服务必须的元信息。关于
GV$OB_PARAMETERS视图的更多介绍,请参见 GV$OB_PARAMETERS。DBA_OB_ACCESS_POINT: 用于获取访问入口信息。在主租户迁移复制、容灾等场景下,若访问入口发生变化,备租户可以自动感知,不需要用户手动修改。关于
DBA_OB_ACCESS_POINT视图的更多介绍,请参见 DBA_OB_ACCESS_POINT。DBA_OB_TENANTS:获取主租户的兼容模式。关于
DBA_OB_TENANTS视图的更多介绍,请参见 DBA_OB_TENANTS。DBA_OB_LS: 获取主租户的日志流列表以及日志流状态。关于
DBA_OB_LS视图的更多介绍,请参见 DBA_OB_LS。
创建访问视图专用用户并授权的具体操作如下。
注意
OceanBase 数据库的用户名和权限信息是在主备租户之间进行同步,备租户自身不允许创建用户和授予权限。因此,如果当前备租户的源端是另外一个备租户,则需要在对应的主租户上创建访问视图专用用户并授予权限。
MySQL 模式
使用管理员用户登录到主租户。
执行以下命令,创建一个新用户。
obclient [oceanbase]> CREATE USER rep_user IDENTIFIED BY '******';给用户授权。
以下示例是将
oceanbase数据库下所有表的SELECT权限授予该用户。您也可以仅授予oceanbase库下GV$OB_LOG_STAT、GV$OB_UNITS、GV$OB_PARAMETERS、DBA_OB_ACCESS_POINT、DBA_OB_TENANTS、DBA_OB_LS等视图的 SELECT 权限。obclient [oceanbase]> GRANT SELECT ON oceanbase.* TO rep_user;
Oracle 模式
使用管理员用户登录到主租户。
创建一个新用户。
obclient [SYS]> CREATE USER rep_user IDENTIFIED BY ******;将角色
STANDBY_REPLICATION授予新用户rep_user。STANDBY_REPLICATION为系统默认角色,该角色默认包含CREATE SESSION系统权限以及对以下视图的查询权限:- GV$OB_LOG_STAT
- GV$OB_UNITS
- GV$OB_PARAMETERS
- DBA_OB_ACCESS_POINT
- DBA_OB_TENANTS
- DBA_OB_LS
- DBA_OB_LS_HISTORY
语句如下:
obclient [SYS]> GRANT STANDBY_REPLICATION TO rep_user;
步骤二:创建备租户
使用
root用户登录待创建的备租户所在集群的sys租户。执行以下命令,创建备租户所需的 Unit 规格。
例如,创建一个 CPU 为 1 核且内存为 5 GB 的 Unit 规格
unit1。obclient [oceanbase]> CREATE RESOURCE UNIT unit1 MAX_CPU 1, MEMORY_SIZE = '5G';有关 Unit 规格的详细创建操作,请参见 创建租户。
创建备租户所需的资源池。
例如,创建资源池
pool_for_standby。obclient [oceanbase]> CREATE RESOURCE POOL pool_for_standby UNIT = 'unit1', UNIT_NUM = 1, ZONE_LIST = ('zone1','zone2','zone3');有关资源池的详细创建操作,请参见 创建租户。
执行以下命令,创建空备租户。
SQL 语句如下:
CREATE STANDBY TENANT [IF NOT EXISTS] tenant_name LOG_RESTORE_SOURCE [=] string_value [tenant_characteristic_list]; tenant_characteristic_list: tenant_characteristic [, tenant_characteristic...] tenant_characteristic: COMMENT 'string' | PRIMARY_ZONE [=] zone_name | RESOURCE_POOL_LIST [=](pool_name [, pool_name...]) | LOCALITY [=] 'locality description'部分参数说明如下:
tenant_name:待创建的备租户名,必选。租户名不能是 OceanBase 数据库的关键字。IF NOT EXISTS:如果待创建的租户名已存在,并且未指定IF NOT EXISTS,则系统会报错,可选。LOG_RESTORE_SOURCE:日志恢复源配置,必选。具体格式为:'SERVICE=$ip_list USER=$user_name@$tenant_name PASSWORD=$password';,该参数所需要填写的信息与ALTER SYSTEM SET LOG_RESTORE_SOURCE命令一致。其中:
$ip_list:主租户所在副本的 OBServer 节点的 IP 及 SQL 端口号(默认为 2881)。可以在主租户上通过查询DBA_OB_ACCESS_POINT视图获取。如果有多个 OBServer 节点信息,可以不用填写全部 OBServer 节点的信息。$user_name:刚刚创建的访问视图的专用用户。$tenant_name:待连接的主租户名。$password:访问视图的专用用户对应的用户密码。
COMMENT:注释,可选。RESOURCE_POOL_LIST:指定备租户所使用的资源池列表,必选。PRIMARY_ZONE:指定备租户所在的 Primary Zone,可选。LOCALITY:指定备租户的副本在 Zone 间的分布情况,可选。
示例如下:
obclient [oceanbase]> CREATE STANDBY TENANT IF NOT EXISTS standby_tenant LOG_RESTORE_SOURCE = "SERVICE=xx.xx.xx.1:2881;xx.xx.xx.2:2881;xx.xx.xx.3:2881 USER=rep _user@mysql PASSWORD=******" RESOURCE_POOL_LIST=('pool_for_standby');执行以下命令,查看租户状态。
obclient [oceanbase]> SELECT TENANT_NAME, TENANT_TYPE, CREATE_TIME, STATUS, TENANT_ROLE,SCN_TO_TIMESTAMP(SYNC_SCN) FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_NAME = 'standby_tenant';查询结果如下:
+----------------+-------------+----------------------------+--------+-------------+----------------------------+ | TENANT_NAME | TENANT_TYPE | CREATE_TIME | STATUS | TENANT_ROLE | SCN_TO_TIMESTAMP(SYNC_SCN) | +----------------+-------------+----------------------------+--------+-------------+----------------------------+ | standby_tenant | USER | 2023-04-14 21:06:48.787550 | NORMAL | STANDBY | 2023-04-14 21:12:59.183293 | +----------------+-------------+----------------------------+--------+-------------+----------------------------+ 1 row in set根据查询结果,
TENANT_ROLE的值为STANDBY, 且STATUS的值为NORMAL,则表示备租户状态正常,备租户已创建成功。通过该方式创建的备租户在创建成功后,将自动进入持续同步模式。