在 YashanDB 的生产部署中,为保证业务连续性,主备架构是最常见的高可用模式。本文将基于实际项目总结,一文讲清:
主备切换的操作方式(手动与自动);
一主一备与一主两备下的差异;
切换过程中应注意的细节。
一、典型问题场景
二、适用版本
YashanDB 23.2 全版本适用
三、一主一备架构切换方式
1. 手动切换操作
(1)Switchover —— 主动切换,适用于主备同步正常
所有连接将被断开,切换过程中主库不可用;
建议在业务低峰期执行;
操作需在备库执行:
-- 检查主备状态
yasboot cluster status -c yashandb -d
-- 备节点执行切换
ALTER DATABASE SWITCHOVER;
可通过 V$RECOVERY_PROGRESS 观察同步进度。
(2)Failover —— 主库故障场景下执行的应急切换
适用于主库宕机、无法启动等不可恢复情况,操作流程:
-- 模拟主库故障(kill 进程)
-- 备库查看角色
SELECT database_id, database_name, open_mode, database_role FROM V$DATABASE;
-- 执行切换
ALTER DATABASE FAILOVER;
-- 原主库启动至 MOUNT
yasboot node start -c yashandb -n <节点名> -m mount
-- 原主库降为备库
ALTER DATABASE CONVERT TO PHYSICAL STANDBY;
ALTER DATABASE OPEN;
2. 自动切换配置
默认关闭(需手动开启);
使用 yasom 提供的仲裁机制进行选主:
-- 查看自动切换状态
yasboot election config show -c yashandb
-- 若为 DISABLED,手动启用
yasboot election enable on -c yashandb
模拟主库宕机后,备库会自动升主:
-- 验证切换
yasboot cluster status -c yashandb -d
四、一主两备架构下切换方式
YashanDB 在一主两备部署下,默认启用 最大保护模式 + 自动选主机制。
操作步骤:
① 确认系统为最大保护模式:
SELECT protection_mode FROM V$DATABASE;
② 查看并启用自动选主参数:
SHOW PARAMETER HA_ELECTION_ENABLED;
ALTER SYSTEM SET HA_ELECTION_ENABLED=TRUE; -- 若为 FALSE
③ 模拟主库挂点,系统自动切换角色。
五、常见问题排查
六、经验小结
一主一备默认关闭自动切换,需手动开启;
一主两备默认启用最大保护 + 自动选主;
Switchover 适用于可控切换场景,Failover 用于主库不可恢复场景;
建议日常巡检时确认切换机制配置状态,避免业务高峰期发生意外切换。