根据文档库中的信息,CREATE STANDBY TENANT 和 ALTER SYSTEM RESTORE 都可用于创建 OceanBase 数据库的备租户(Standby Tenant),但它们在使用场景、机制和功能上有显著区别。以下是两者的详细对比:
一、基本定义与用途
- CREATE STANDBY TENANT
用途:用于基于网络连接的物理备库(Physical Standby Database) 场景,通过实时同步主租户的日志流来构建一个高可用的备租户。
机制:该命令会创建一个空的备租户,并自动配置其从主租户通过网络接收 Redo 日志流进行持续同步(类似于 Oracle Data Guard 的 Active Data Guard 模式)。
特点:
实时日志同步;
不依赖本地备份集;
通常用于主备集群之间长期保持同步关系。
典型场景:搭建主备架构实现高可用容灾。
- ALTER SYSTEM RESTORE
用途:用于通过数据备份 + 日志归档的方式恢复出一个备租户,属于“带日志恢复”的物理恢复方式。
机制:利用已有的数据备份文件(如 data_backup_dest)和归档日志路径(log_archive_dest),将某个时间点的数据恢复出来,生成一个备租户。
特点:
依赖已有备份;
可指定恢复到某一时间点或 SCN;
恢复完成后可继续通过日志回放追平主库。
典型场景:异机恢复、跨集群迁移、基于历史备份构建备库等。
二、核心区别总结
对比维度 CREATE STANDBY TENANT ALTER SYSTEM RESTORE
是否需要备份集 否(直接从主库拉取日志) 是(必须提供数据备份路径)
同步方式 实时网络同步(Log Stream) 基于备份 + 归档日志恢复
初始状态 创建空备租户,立即开始同步 从备份中恢复数据后成为备租户
适用版本 OceanBase V4.1+ OceanBase V3.x / V4.x
典型应用场景 主备集群长期同步、高可用容灾 异地恢复、备份重建、测试环境搭建
是否支持断点续传 支持(自动重连主库) 支持(基于归档 CHECKPOINT_SCN 续传)
是否需设置 LOG_RESTORE_SOURCE 自动设置(指向主租户) 手动设置(若后续要持续同步)
三、相关 SQL 示例
使用 CREATE STANDBY TENANT 创建物理备库(简化示例)
– 在目标集群上执行,创建空备租户并连接主租户
CREATE STANDBY TENANT standby_tenant
FROM PRIMARY = ‘primary_cluster_ip:port’
TENANT = ‘primary_tenant_name’
USER = ‘repl_user’ PASSWORD = ‘repl_password’;
注意:此语法细节未出现在当前检索文档中,但根据官方设计逻辑推断存在类似结构;具体请参考 OceanBase 官方文档 - 物理备库 获取完整语法。
使用 ALTER SYSTEM RESTORE 恢复备租户
ALTER SYSTEM RESTORE standby_tenant
FROM ‘file:///data/1/sh_databackup’, ‘file:///data/1/sh_archive’
UNTIL TIME=‘2023-05-26 15:04:23.825558’
WITH ‘pool_list=pool_for_standby’;
参考文档:使用备份恢复(带日志)功能创建备租户
四、后续操作差异
无论哪种方式创建了备租户,后续都可以通过以下命令控制其行为:
设置日志恢复源(适用于 RESTORE 方式)
ALTER SYSTEM SET LOG_RESTORE_SOURCE = ‘location=file:///data/1/sh_archive’ TENANT = standby_tenant;
参考文档:设置日志恢复源
启动日志回放(使备租户持续同步)
ALTER SYSTEM RECOVER STANDBY TENANT restore_oracle_tenant UNTIL UNLIMITED;
参考文档:RECOVER STANDBY
激活为新主租户(故障切换)
ALTER SYSTEM ACTIVATE STANDBY TENANT standby_tenant;
参考文档:ACTIVATE STANDBY
五、结论建议
如果你希望构建一个实时同步、低延迟的高可用备库,推荐使用 CREATE STANDBY TENANT。
如果你需要基于已有备份恢复一个历史状态的备租户,或者无法直连主库,则应使用 ALTER SYSTEM RESTORE。
两者最终都能形成有效的物理备库,但在部署复杂度、资源依赖和运维管理上有所不同。
更多关于物理备库的设计原理,请参见 OceanBase 术语 - 主租户与备租户。