#管理保护模式

YashanDB高可用架构中提供最大性能(MAXIMIZE PERFORMANCE)、最大可用(MAXIMIZE AVAILABILITY)和最大保护(MAXIMIZE PROTECTION)三种保护模式。

# 初始保护模式

# 单机部署

安装部署时,yasboot会自动根据主备数量调整保护模式:

  • 单库:yasboot不会调整保护模式,默认为最大性能。

  • 一主一备:yasboot会调整保护模式为最大可用。

  • 一主多备(不含级联备):yasboot会调整保护模式为最大保护,并开启自动选主

# 共享集群部署

安装部署时,yasboot不会自动调整保护模式,默认为最大保护。

# 存算一体分布式集群部署

安装部署时,yasboot会自动根据MN组和DN组的组内节点数调整保护模式:

  • 1个节点:yasboot不会调整保护模式,默认为最大性能。

  • 2个节点:yasboot会调整保护模式为最大可用。

  • 3个及以上节点:yasboot会调整保护模式为最大保护,并开启自动选主

# 查看当前保护模式

通过查询GV$DATABASE/V$DATABASE视图可以获取当前的保护模式信息:

  • PROTECTION_MODE字段表示当前节点设置的保护模式。

    • MAXIMUM PERFORMANCE:最大性能

    • MAXIMUM AVAILABILITY:最大可用

    • MAXIMUM PROTECTION:最大保护

  • PROTECTION_LEVEL字段表示实际生效的保护模式和级别(redo日志的同步状态)。

    • UNPROTECTED:数据库未开启至OPEN阶段

    • MAXIMUM PERFORMANCE:最大性能模式生效中

    • MAXIMUM AVAILABILITY:最大可用模式生效中,且redo已同步到相应备库

    • RESYNCHRONIZATION:最大可用模式生效中,但redo暂未同步到相应备库

    • MAXIMUM PROTECTION:最大保护模式生效中,且redo同步正常

    • SYNCHRONIZATION BLOCKING:最大保护模式生效中,但redo同步不正常,事务提交将阻塞

-- 查询当前节点的保护模式和级别
SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE;

PROTECTION_MODE                                                  PROTECTION_LEVEL                                       
---------------------------------------------------------------- ----------------------------------------------------------------
MAXIMUM AVAILABILITY                                             MAXIMUM AVAILABILITY

# 切换保护模式

执行ALTER DATABASE SET STANDBY DATABASE TO语句可按需切换数据库保护模式。

高可用部署中,主节点的保护模式会通过心跳同步到备节点。

# 前提条件

  • 数据库运行状态要求:

    • 单机部署和存算一体分布式集群部署中,OPEN或MOUNT阶段均可操作。

    • 共享集群部署中,如需设置为最大保护模式要求所有存活实例处于OPEN阶段。设置为其他模式则OPEN或MOUNT阶段均可操作。

  • 最大可用或最大保护模式下,主库事务提交需要等待redo同步至相应备库(MAJORITY或自定义同步备)。因此,在数据库OPEN阶段下切换保护模式时也必须保证主库redo已同步至相应备库,否则将切换失败。建议通过先切换至最大可用进行过渡,等待redo同步完成(即V$DATABASE的PROTECTION_LEVEL变为MAXIMUM AVAILABILITY)再切换至最终的目标保护模式。

  • 存算一体分布式集群部署中不建议切换保护模式,如需切换只能通过直连MN或DN节点操作。MN组固定使用最大保护模式(能最大程度保障数据不丢失),无需且不建议用户自行配置。

# 操作步骤

  1. 以DBA用户连接并登录数据库。

    $ yasql sales/********@192.168.1.2:1688
    YashanDB SQL Enterprise Edition Release {version_number} x86_64
    
    Connected to:
    YashanDB Server Enterprise Edition Release {version_number} x86_64 - Linux
    
    SQL> 
    
  2. 查看当前保护模式和级别:

    -- 查询当前节点的保护模式和级别
    SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE;
    
    PROTECTION_MODE                                                  PROTECTION_LEVEL                                       
    ---------------------------------------------------------------- ----------------------------------------------------------------
    MAXIMUM AVAILABILITY                                             MAXIMUM AVAILABILITY
    

    若在数据库OPEN阶段执行当前操作,需确认PROTECTION_LEVEL = MAXIMUM AVAILABILITY再执行后续操作。

  3. 调整保护模式:

    ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;
    
  4. 确认保护模式切换是否生效:

    SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE;
    PROTECTION_MODE                   PROTECTION_LEVEL                  
    --------------------------------- --------------------------------- 
    MAXIMUM PERFORMANCE               MAXIMUM PERFORMANCE              
    
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流