首批通过分布式安全可靠测评,为关键业务系统打造
Failover
更新时间:2024-09-11 23:00:00
当主租户不可用时,可以将备租户切换为主租户继续提供服务。
使用限制
执行 Failover 时,要求备租户所有日志流的副本均在线,否则需要等待对应的副本永久下线。
备租户或备租户所在集群的
sys租户可以分别通过DBA_OB_LS视图或CDB_OB_LS视图查询所有日志流副本是否在线,有关日志流副本的详细说明信息,请参见 副本介绍。执行 Failover 时,不会检查对应主租户的状态,因此除主租户故障的容灾需求外,Failover 操作也可以用于独立的一个主租户在某一个时间点的快照并用于后续业务验证的需求场景。
背景信息
Failover 操作只会对日志文件做修改,不会对数据文件做修改。
由于 OceanBase 数据库的每个租户均有多个日志流,而 Failover 操作需要在操作执行完成后达到数据一致的状态,故系统会选择所有日志流的同步位点中 SCN 最小的值作为 Failover 的执行位点。执行Failover 操作后,租户下的所有日志流都会统一回退到该位点。
操作步骤
使用管理员用户登录备租户或备租户所在集群的
sys租户。执行 Failover 命令,将备租户切换为主租户。
备租户所在集群的
sys租户将备租户切换为主租户ALTER SYSTEM ACTIVATE STANDBY TENANT = tenant_name;备租户将本租户切换为主租户
ALTER SYSTEM ACTIVATE STANDBY;
查询
DBA_OB_TENANTS视图,确认备租户是否已切换为主租户。备租户所在集群的
sys租户查询视图SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;备租户查询视图
MySQL 模式:
SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;Oracle 模式:
SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM SYS.DBA_OB_TENANTS;
查询结果的示例如下:
+-----------------+-------------+-------------+-------------------+ | TENANT_NAME | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS | +-----------------+-------------+-------------+-------------------+ | standby_tenant | USER | PRIMARY | NORMAL | +-----------------+-------------+-------------+-------------------+ 1 row in set根据查询结果,备租户的
TENANT_ROLE变为PRIMARY,且SWITCHOVER_STATUS为NORMAL,则表示备租户切主成功。
Failover 后的注意事项
由于 Failover 操作会将所有日志流已同步的数据恢复到一致性位点,保证该位点之前的所有日志流的数据是完整的。故执行 Failover 操作后:
不支持原主租户降备后接入成为新主租户的备租户。
对于第三方备租户,取决于备租户同步的日志,如果同步的日志超过一致性位点,则不支持接入作为新主租户的备租户。为了便于管理,不建议第三方备租户接入作为新主租户的备租户。