#管理保护模式
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组固定使用最大保护模式(能最大程度保障数据不丢失),无需且不建议用户自行配置。
# 操作步骤
以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>查看当前保护模式和级别:
-- 查询当前节点的保护模式和级别 SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE; PROTECTION_MODE PROTECTION_LEVEL ---------------------------------------------------------------- ---------------------------------------------------------------- MAXIMUM AVAILABILITY MAXIMUM AVAILABILITY若在数据库OPEN阶段执行当前操作,需确认PROTECTION_LEVEL = MAXIMUM AVAILABILITY再执行后续操作。
调整保护模式:
ALTER DATABASE SET STANDBY DATABASE TO MAXIMIZE PERFORMANCE;确认保护模式切换是否生效:
SELECT PROTECTION_MODE,PROTECTION_LEVEL FROM V$DATABASE; PROTECTION_MODE PROTECTION_LEVEL --------------------------------- --------------------------------- MAXIMUM PERFORMANCE MAXIMUM PERFORMANCE

