OceanBase Switchover

在主租户可用的情况下,允许主租户与其中一个备租户交换角色,保证数据无损。

下面根据物理备库的两种部署方式,分别提供 Switchover 的操作指导。

使用限制

  • 不支持切换系统租户(sys)的租户角色,系统租户的角色始终为 PRIMARY

  • 在将备租户切换为主租户前,要求备租户所有日志流的副本均在线,否则需要等待对应的副本永久下线。备租户或备租户所在集群的sys 租户可以分别通过 DBA_OB_LS 视图或 CDB_OB_LS 视图查询所有日志流副本是否在线,有关日志流副本的详细说明信息,请参见 副本介绍

  • 不允许在通过服务名建立的 Session 中执行 Switchover 命令。有关服务的相关操作及说明,参见 创建服务

基于网络的物理备库

在基于网络的物理备库场景中,Switchover 主要包括以下三个阶段:将主租户切换为备租户 --> 将备租户切换为主租户 --> 为原主租户设置日志恢复源。

注意

在进行 Switchover 操作时,要求必须先将主租户切换为备租户,再将备租户切换为主租户。如果先将备租户切换为主租户,可能会由于出现双主租户的问题,从而导致 ALTER SYSTEM SWITCHOVER TO PRIMARY 命令执行失败。

  1. 将主租户切换为备租户。

    1. 使用管理员用户登录主租户或主租户所在集群的 sys 租户。

    2. 执行 SWITCHOVER TO STANDBY VERIFY 命令,验证 SWITCHOVER 命令是否可以执行成功。

      • 主租户所在集群的 sys 租户执行 SWITCHOVER TO STANDBY VERIFY 命令

        ALTER SYSTEM SWITCHOVER TO STANDBY TENANT [=] tenant_name VERIFY;
        

        示例:

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY TENANT = mysql VERIFY;
        
      • 主租户执行 SWITCHOVER TO STANDBY VERIFY 命令

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY VERIFY;
        

        命令执行后,如果返回 OK,则表示验证通过,可以执行下一步。

        如果出现报错,请根据提示的文本信息参考文档 Switchover 或 Failover 相关问题 进行处理后,再重新执行本命令。

    3. 验证通过后,执行主切备命令,将主租户切换为备租户。

      • 主租户所在集群的 sys 租户将主租户切换为备租户

        ALTER SYSTEM SWITCHOVER TO STANDBY TENANT = tenant_name;
        

        示例:

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY TENANT = mysql;
        
      • 主租户将本租户切换为备租户

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY;
        
    4. 查询 DBA_OB_TENANTS 视图,确认主租户是否已切换为备租户。

      • 主租户所在集群的 sys 租户查询视图

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;
        
      • 主租户查询视图

        MySQL 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;
        

        Oracle 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM SYS.DBA_OB_TENANTS;
        

      查询结果的示例如下:

      +-------------+-------------+-------------+-------------------+
      | TENANT_NAME | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS |
      +-------------+-------------+-------------+-------------------+
      | mysql       | USER        | STANDBY     | NORMAL            |
      +-------------+-------------+-------------+-------------------+
      1 row in set
      

      根据查询结果,TENANT_ROLE 为 STANDBY,且 SWITCHOVER_STATUS 为 NORMAL,则表示主切备成功。

  2. 将备租户切换为主租户。

    1. 使用管理员用户登录备租户或备租户所在集群的 sys 租户。

    2. 执行备切主命令,将备租户切换为主租户。

      • 备租户所在集群的 sys 租户将备租户切换为主租户

        ALTER SYSTEM SWITCHOVER TO PRIMARY TENANT = tenant_name;
        

        示例:

        obclient> ALTER SYSTEM SWITCHOVER TO PRIMARY TENANT = standby1;
        
      • 备租户将本租户切换为主租户

        obclient> ALTER SYSTEM SWITCHOVER TO PRIMARY;
        
    3. 查询 DBA_OB_TENANTS 视图,确认备租户是否已切换为主租户。

      • 备租户所在集群的 sys 租户查询视图

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;
        
      • 备租户查询视图

        MySQL 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM oceanbase.DBA_OB_TENANTS;
        

        Oracle 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS FROM SYS.DBA_OB_TENANTS;
        

      查询结果的示例如下:

      +-----------------+-------------+-------------+-------------------+
      | TENANT_NAME     | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS |
      +-----------------+-------------+-------------+-------------------+
      | standby1        | USER        | PRIMARY     | NORMAL            |
      +-----------------+-------------+-------------+-------------------+
      1 row in set
      

      根据查询结果可知,主租户的 TENANT_ROLE 已变为 PRIMARY,且 SWITCHOVER_STATUS 变为 NORMAL,则表示备切主成功。

  3. 为原主租户设置日志恢复源。

    设置日志恢复源的操作可以在主备切换操作之前执行,也可以在主备切换操作之后执行。

    1. 使用管理员用户登录原主租户或原主租户所在集群的 sys 租户。

    2. 执行以下命令,设置日志恢复源。

      • 原主租户所在集群的 sys 租户设置原主租户的日志恢复源

        ALTER SYSTEM SET LOG_RESTORE_SOURCE ='SERVICE=$ip_list USER=$user_name@$tenant_name PASSWORD=$password' TENANT = tenant_name;
        
      • 原主租户设置本租户的日志恢复源

        ALTER SYSTEM SET LOG_RESTORE_SOURCE ='SERVICE=$ip_list USER=$user_name@$tenant_name PASSWORD=$password';
        

      部分参数说明如下:

      • $ip_list:新主租户所在副本的 OBServer 节点的 IP 及 SQL 端口号。如果有多个 OBServer 节点信息,可以不用填写全部 OBServer 节点的信息。
      • $user_name:在新主租户上创建的用于访问系统视图的专用用户。
      • $tenant_name:待连接的新主租户的租户名。
      • $password:访问系统视图的专用用户对应的用户密码。

      示例如下:

      obclient> ALTER SYSTEM SET LOG_RESTORE_SOURCE = 'SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user2@standby_tenant PASSWORD=******' TENANT = mysql;
      
      obclient> ALTER SYSTEM SET LOG_RESTORE_SOURCE = 'SERVICE=11.xx.xx.22:17855;11.xx.xx.23:17857;11.xx.xx.24:17859 USER=rep_user2@standby_tenant PASSWORD=******';
      

      设置日志恢复源的详细操作及说明,请参见 设置日志恢复源

    3. 设置成功后,查询 DBA_OB_TENANTS 视图,确认原主租户是否在持续同步日志状态。

      设置日志恢复源后,由于主租户切换为备租户后,已自动开启日志持续同步,因此,不需要再进行特殊处理。您可以通过查询 DBA_OB_TENANTS 视图进行确认。

      • 原主租户所在集群的 sys 租户查询视图

        # 查询用户租户 ID,ID 为偶数即为用户租户
        obclient> SELECT TENANT_ID, SYNC_SCN FROM oceanbase.DBA_OB_TENANTS;
        # 指定用户租户 ID 查询信息
        obclient> SELECT TENANT_ID, TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS, SCN_TO_TIMESTAMP(SYNC_SCN), RECOVERY_UNTIL_SCN FROM oceanbase.DBA_OB_TENANTS WHERE TENANT_ID = $user_tenant_id;
        
      • 原主租户查询视图

        MySQL 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS, SCN_TO_TIMESTAMP(SYNC_SCN), RECOVERY_UNTIL_SCN FROM oceanbase.DBA_OB_TENANTS;
        

        Oracle 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS, SCN_TO_TIMESTAMP(SYNC_SCN), RECOVERY_UNTIL_SCN FROM SYS.DBA_OB_TENANTS;
        

      MySQL 模式下查询结果如下:

      +-------------+-------------+-------------+-------------------+----------------------------+---------------------+
      | TENANT_NAME | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS | SCN_TO_TIMESTAMP(SYNC_SCN) | RECOVERY_UNTIL_SCN  |
      +-------------+-------------+-------------+-------------------+----------------------------+---------------------+
      | mysql       | USER        | STANDBY     | NORMAL            | 2023-04-18 13:46:20.887793 | 4611686018427387903 |
      +-------------+-------------+-------------+-------------------+----------------------------+---------------------+
      1 row in set
      

      根据查询结果,如果 RECOVERY_UNTIL_SCN 列的值等于 MAX SCN(4611686018427387903)的值,则表示原主租户在持续同步日志状态,否则,原主租户未在持续同步日志状态。

基于日志归档的物理备库

在基于日志归档的物理备库场景中,Switchover 主要包括以下三个阶段:备租户开启日志归档模式 --> 将主租户切换为备租户 --> 将备租户切换为主租户。

注意

在进行 Switchover 时,要求必须首先将主租户切换为备租户,否则可能会出现双主租户或者备租户无法完成日志同步的问题。同时,由于在基于日志归档的物理备库场景中,备租户无法感知原主租户的状态,故如果先将备租户切换为主租户,在执行 ALTER SYSTEM SWITCHOVER TO PRIMARY 命令时,系统也不会报错。

基于日志归档的物理备库场景下,Switchover 的执行流程如下图所示。

switchover 流程图

  1. 备租户开启日志归档模式。

    在基于日志归档的物理备库场景中,Swithover 操作执行成功后,由于原主租户后续需要通过持续读取新主租户(原备租户)的归档日志来同步新主租户(原备租户)上的所有修改操作,因此,要求新主租户(原备租户)开启日志归档模式。同时,为了保证 Switchover 执行后日志的连续性,要求新主租户(原备租户)在执行 Switchover 操作前开启日志归档。

    1. 使用管理员用户登录备租户或备租户所在集群的 sys 租户。

    2. 配置备租户的归档目的端。

      注意

      在配置归档目的端时,不同租户需要使用的不同的归档路径。

      配置归档目的端主要是设置 LOCATIONPIECE_SWITCH_INTERVAL 和 BINDING 属性。

      • 备租户所在集群的 sys 租户为备租户配置归档目的端

        ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [PIECE_SWITCH_INTERVAL=piece_switch_interval] [BINDING=archive_mode]' TENANT = tenant_name;
        
      • 备租户配置本租户的归档目的端

        ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=archive_path [PIECE_SWITCH_INTERVAL=piece_switch_interval] [BINDING=archive_mode]';
        

      相关参数说明如下:

      • LOCATION:用于指定归档目的端,目前 OceanBase 数据库支持的归档目的端介质为 NFS 和阿里云 OSS。

      • BINDING:用于设置归档和业务的优先模式。目前支持 Optional 模式和 Mandatory 模式。如果不配置,默认为 Optional 模式。

        • Optional 模式表示以用户业务优先。在该模式下,当归档(日志归档)速度跟不上日志生成的速度时,日志有可能来不及归档就被回收了,然后发生断流。

        • Mandatory 模式表示以归档优先。在该模式下如果归档跟不上用户数据的写入,可能会导致用户无法写入。

      • PIECE_SWITCH_INTERVAL 属性用于配置 Piece 的切换周期,取值范围为 [1d, 7d]。如果不设置,默认为 1d

      假设归档介质为 NFS,配置备租户的归档路径为 file:///data/1/standby2_archive2/ 且归档模式为 Optional 的示例如下:

      obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/1/standby2_archive2/ BINDING=optional' TENANT = standby2;
      
      obclient> ALTER SYSTEM SET LOG_ARCHIVE_DEST='LOCATION=file:///data/1/standby2_archive2/ BINDING=optional';
      
    3. 备租户开启归档模式。

      • 备租户所在集群的 sys 租户为备租户开启归档模式

        示例如下:

        obclient> ALTER SYSTEM ARCHIVELOG TENANT = standby2;
        

        其中,standby2 表示备租户名,操作时请以实际环境为准。

      • 备租户开启本租户的归档模式

        obclient> ALTER SYSTEM ARCHIVELOG;
        
    4. 确认备租户的归档状态是否为 DOING

      • 备租户所在集群的 sys 租户查询视图

        obclient> SELECT DEST_ID, ROUND_ID, DEST_NO, STATUS, CHECKPOINT_SCN, CHECKPOINT_SCN_DISPLAY, PATH FROM oceanbase.CDB_OB_ARCHIVELOG;
        
      • 备租户查询视图

        MySQL 模式:

        obclient> SELECT DEST_ID, ROUND_ID, DEST_NO, STATUS, CHECKPOINT_SCN, CHECKPOINT_SCN_DISPLAY, PATH FROM oceanbase.DBA_OB_ARCHIVELOG;
        

        Oracle 模式:

        obclient> SELECT DEST_ID, ROUND_ID, DEST_NO, STATUS, CHECKPOINT_SCN, CHECKPOINT_SCN_DISPLAY, PATH FROM SYS.DBA_OB_ARCHIVELOG;
        

        MySQL 模式下的查询结果示例如下:

        +---------+----------+---------+--------+---------------------+----------------------------+---------------------------------------+
        | DEST_ID | ROUND_ID | DEST_NO | STATUS | CHECKPOINT_SCN      | CHECKPOINT_SCN_DISPLAY     | PATH                                 -|
        +---------+----------+---------+--------+---------------------+----------------------------+---------------------------------------+
        |    1001 |        1 |       0 | DOING  | 1680265982125159110 | 2023-03-31 20:33:02.125159 | file:///data/1/standby2_archive2      -|
        +---------+----------+---------+--------+---------------------+----------------------------+---------------------------------------+
        1 row in set
        

      根据查询结果,STATUS 的值为 DOING,表示归档处于正常工作状态,CHECKPOINT_SCN 和 CHECKPOINT_SCN_DISPLAY 为当前的归档进度信息。

      查看归档状态的详细操作,请参见 查看归档进度

  2. 将主租户切换为备租户。

    1. 主租户或主租户所在集群的 sys 租户的租户管理员登录到数据库。

    2. 执行 SWITCHOVER TO STANDBY VERIFY 命令,验证 SWITCHOVER 命令是否可以执行成功。

      • 主租户所在集群的 sys 租户执行 SWITCHOVER TO STANDBY VERIFY 命令

        ALTER SYSTEM SWITCHOVER TO STANDBY TENANT [=] tenant_name VERIFY;
        

        示例:

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY TENANT = mysql2 VERIFY;
        
      • 主租户执行 SWITCHOVER TO STANDBY VERIFY 命令

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY VERIFY;
        

        命令执行后,如果返回 OK,则表示验证通过,可以执行下一步。

        如果出现报错,请根据提示的文本信息参考文档 Switchover 或 Failover 相关问题 进行处理后,再重新执行本命令。

    3. 验证通过后,执行主切备命令,将主租户切换为备租户。

      • 主租户所在集群的 sys 租户将主租户切换为备租户

        ALTER SYSTEM SWITCHOVER TO STANDBY TENANT = tenant_name;
        

        示例:

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY TENANT = mysql2;
        
      • 主租户将本租户切换为备租户

        obclient> ALTER SYSTEM SWITCHOVER TO STANDBY;
        
    4. 查询 DBA_OB_TENANTS 视图,确认主租户是否已切换为备租户。

      • 主租户所在集群的 sys 租户查询视图

        obclient> SELECT TENANT_ID, TENANT_NAME,TENANT_TYPE,TENANT_ROLE,SWITCHOVER_STATUS 
        FROM oceanbase.DBA_OB_TENANTS 
        WHERE TENANT_NAME='mysql2';
        
      • 主租户查询视图

        MySQL 模式:

        obclient> SELECT TENANT_ID, TENANT_NAME,TENANT_TYPE,TENANT_ROLE,SWITCHOVER_STATUS 
        FROM oceanbase.DBA_OB_TENANTS 
        WHERE TENANT_NAME='mysql2';
        

        Oracle 模式:

        obclient> SELECT TENANT_ID, TENANT_NAME,TENANT_TYPE,TENANT_ROLE,SWITCHOVER_STATUS 
        FROM SYS.DBA_OB_TENANTS 
        WHERE TENANT_NAME='mysql2';
        

      查询结果的示例如下:

      +-----------+-------------+-------------+-------------+-------------------+
      | TENANT_ID | TENANT_NAME | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS |
      +-----------+-------------+-------------+-------------+-------------------+
      |      1004 | mysql2      | USER        | STANDBY     | NORMAL            |
      +-----------+-------------+-------------+-------------+-------------------+
      1 row in set
      

      根据查询结果可知,主租户的 TENANT_ROLE 已变为 STANDBY,且 SWITCHOVER_STATUS 变为 NORMAL,则表示主切备成功。

    5. 查询 V$OB_ARCHIVE_DEST_STATUS 视图中的 SYNCHRONIZED 字段,等待主租户归档完成。

      基于日志归档的物理备库场景中,备租户在切换为主租户之前,需要从原主租户的日志归档上读取完整的日志。由于日志归档为异步同步模式,因此在原主租户切换为备租户后,需要检查原主租户上的日志归档是否完整。

      • MySQL 模式

        obclient> SELECT * FROM oceanbase.V$OB_ARCHIVE_DEST_STATUS WHERE TENANT_ID = 1004;
        
      • Oracle 模式

        obclient> SELECT * FROM SYS.V$OB_ARCHIVE_DEST_STATUS WHERE TENANT_ID = 1004;
        

      MySQL 模式下的查询结果示例如下:

      +-----------+---------+--------------------------------+--------+---------------------+--------------+---------+
      | TENANT_ID | DEST_ID | PATH                           | STATUS | CHECKPOINT_SCN      | SYNCHRONIZED | COMMENT |
      +-----------+---------+--------------------------------+--------+---------------------+--------------+---------+
      |      1004 |    1001 | file:///data/1/sh_archive      | DOING  | 1684638569520797277 | YES          |         |
      +-----------+---------+--------------------------------+--------+---------------------+--------------+---------+
      1 row in set
      

      根据查询结果,如果 SYNCHRONIZED 字段显示为 YES,则表示主租户已归档完成。

      注意

      在执行备切主前,需要确保 SYNCHRONIZED 字段显示为 YES,否则,执行备切主操作后,可能会导致 Switchover 后新主租户的数据不完整。

  3. 将备租户切换为主租户。

    1. 备租户或备租户所在集群的 sys 租户的租户管理员登录到数据库。

    2. 执行备切主命令,将备租户切换为主租户。

      注意

      备切主命令开始执行前,系统会检查备租户是否已同步到恢复源端的所有日志,故备切主命令的执行时间取决于备租户与主租户的同步进度。

      • 备租户所在集群的 sys 租户将备租户切换为主租户

        ALTER SYSTEM SWITCHOVER TO PRIMARY TENANT = tenant_name;
        

        示例:

        obclient> ALTER SYSTEM SWITCHOVER TO PRIMARY TENANT = standby2;
        
      • 备租户将本租户切换为主租户

        obclient> ALTER SYSTEM SWITCHOVER TO PRIMARY;
        
    3. 查询 DBA_OB_TENANTS 视图,确认备租户是否已切换为主租户。

      • 备租户所在集群的 sys 租户查询视图

        obclient> SELECT TENANT_ID, TENANT_NAME,TENANT_TYPE,TENANT_ROLE,SWITCHOVER_STATUS 
        FROM oceanbase.DBA_OB_TENANTS 
        WHERE TENANT_NAME='standby2';
        
      • 主租户查询视图

        MySQL 模式:

        obclient> SELECT TENANT_ID, TENANT_NAME,TENANT_TYPE,TENANT_ROLE,SWITCHOVER_STATUS 
        FROM oceanbase.DBA_OB_TENANTS 
        WHERE TENANT_NAME='standby2'';
        

        Oracle 模式:

        obclient> SELECT TENANT_ID, TENANT_NAME,TENANT_TYPE,TENANT_ROLE,SWITCHOVER_STATUS 
        FROM SYS.DBA_OB_TENANTS 
        WHERE TENANT_NAME='standby2'';
        

      查询结果的示例如下:

      +-----------+----------------------------+-------------+-------------+-------------------+
      | TENANT_ID | TENANT_NAME                | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS |
      +-----------+----------------------------+-------------+-------------+-------------------+
      |      1006 | standby2                   | USER        | PRIMARY     | NORMAL            |
      +-----------+----------------------------+-------------+-------------+-------------------+
      1 row in set
      

      根据查询结果,备租户的 TENANT_ROLE 变为 PRIMARY,且 SWITCHOVER_STATUS 为 NORMAL,则表示备切主成功。

  4. 设置新备租户(原主租户)的恢复源,接收新主租户的归档日志。

    如果原主租户在执行切换操作前,未设置过日志恢复源,则其日志同步位点会停留在执行切换操作的时间点。因此,需要为原主租户设置日志恢复源,且日志恢复源指向新的主租户。

    设置日志恢复源的操作可以在主备切换操作之前执行,也可以在主备切换操作之后执行。

    1. 新备租户(原主租户)或新备租户所在集群的 sys 租户的租户管理员登录到数据库。

    2. 执行以下命令,配置新备租户(原主租户)的恢复源。

      • 新备租户所在集群的 sys 租户设置新备租户的恢复源

        ALTER SYSTEM SET LOG_RESTORE_SOURCE ='LOCATION=archive_path' TENANT = tenant_name;
        
      • 新备租户设置本租户的恢复源

        ALTER SYSTEM SET LOG_RESTORE_SOURCE ='LOCATION=archive_path';
        

      其中,LOCATION 属性用于指定新主租户的归档目的端。

      示例如下:

      obclient> ALTER SYSTEM SET LOG_RESTORE_SOURCE ='LOCATION=file:///data/1/standby2/archive2' TENANT = mysql2;
      
      obclient> ALTER SYSTEM SET LOG_RESTORE_SOURCE ='LOCATION=file:///data/1/standby2/archive2';
      
    3. 设置成功后,查询 DBA_OB_TENANTS 视图,确认原主租户是否在持续同步日志状态。

      设置日志恢复源后,由于主租户切换为备租户后,已自动开启日志持续同步,因此,不需要再进行特殊处理。您可以通过查询 DBA_OB_TENANTS 视图进行确认。

      • 原主租户所在集群的 sys 租户查询视图

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS, SCN_TO_TIMESTAMP(SYNC_SCN), RECOVERY_UNTIL_SCN FROM oceanbase.DBA_OB_TENANTS;
        
      • 原主租户查询视图

        MySQL 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS, SCN_TO_TIMESTAMP(SYNC_SCN), RECOVERY_UNTIL_SCN FROM oceanbase.DBA_OB_TENANTS;
        

        Oracle 模式:

        obclient> SELECT TENANT_NAME, TENANT_TYPE, TENANT_ROLE, SWITCHOVER_STATUS, SCN_TO_TIMESTAMP(SYNC_SCN), RECOVERY_UNTIL_SCN FROM SYS.DBA_OB_TENANTS;
        

      MySQL 模式下查询结果如下:

      +-------------+-------------+-------------+-------------------+----------------------------+---------------------+
      | TENANT_NAME | TENANT_TYPE | TENANT_ROLE | SWITCHOVER_STATUS | SCN_TO_TIMESTAMP(SYNC_SCN) | RECOVERY_UNTIL_SCN  |
      +-------------+-------------+-------------+-------------------+----------------------------+---------------------+
      | mysql2      | USER        | STANDBY     | NORMAL            | 2023-05-21 11:41:46.432851 | 4611686018427387903 |
      +-------------+-------------+-------------+-------------------+----------------------------+---------------------+
      

      根据查询结果,如果 RECOVERY_UNTIL_SCN 列的值等于 MAX SCN(4611686018427387903)的值,则表示原主租户在持续同步日志状态,否则,原主租户未在持续同步日志状态。

      switchover 流程图

switchover是一个数据库管理工具,它用于在主数据库和备用数据库之间进行切换。下面是switchover的使用步骤: 1. 首先,确认你的数据库配置正确,并且已经设置了主数据库和备用数据库。 2. 在主数据库上执行以下操作: - 打开SQL*Plus或者其他数据库客户端工具。 - 使用SYSDBA权限登录到主数据库。 - 运行以下命令来开始切换进程:ALTER DATABASE COMMIT TO SWITCHOVER TO PHYSICAL STANDBY; - 在切换过程中,数据库会进入"switchover pending"状态,这时候可以继续执行事务,但是不能再进行DML操作。 3. 在备用数据库上执行以下操作: - 打开SQL*Plus或者其他数据库客户端工具。 - 使用SYSDBA权限登录到备用数据库。 - 运行以下命令来确认备用数据库准备好了进行切换:SELECT SWITCHOVER_STATUS FROM V$DATABASE; - 如果输出结果是"TO PRIMARY",则表示备用数据库已经准备好进行切换。 4. 在主数据库上执行以下操作: - 运行以下命令来完成切换:ALTER DATABASE COMMIT TO SWITCHOVER TO PRIMARY; - 数据库会进入"switchover completed"状态,这时候备用数据库会变成主数据库,而原来的主数据库会变成备用数据库。 需要注意的是,在执行switchover操作之前,请确保备用数据库和主数据库之间的网络连接正常,并且备用数据库已经完全同步到主数据库的状态。此外,在切换过程中,可能会产生一些数据传输延迟,因此请确保在切换过程中没有重要的业务操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值