外观
OceanBase 自动切换配置
自动切换类型
1. 节点级自动切换
当单个节点发生故障时,OceanBase 会自动将该节点上的主副本切换到其他可用节点。
2. 区域级自动切换
当整个区域发生故障时,OceanBase 会自动将业务切换到其他可用区域。
3. 集群级自动切换
当整个集群不可用时,OceanBase 会自动切换到备用集群。
自动切换配置参数
1. 关键配置参数
sql
-- 设置自动故障转移开关
ALTER SYSTEM SET enable_auto_failover = true;
-- 设置故障检测超时时间(单位:毫秒)
ALTER SYSTEM SET failover_timeout = 30000;
-- 设置主备切换超时时间(单位:毫秒)
ALTER SYSTEM SET switchover_timeout = 60000;
-- 设置最大重试次数
ALTER SYSTEM SET max_failover_retry_count = 3;
-- 设置故障转移间隔时间(单位:秒)
ALTER SYSTEM SET failover_retry_interval = 60;2. 区域级自动切换配置
sql
-- 设置区域故障检测开关
ALTER SYSTEM SET enable_zone_failover = true;
-- 设置区域故障转移超时时间(单位:毫秒)
ALTER SYSTEM SET zone_failover_timeout = 120000;自动切换配置步骤
1. 检查集群状态
sql
-- 检查集群整体状态
SELECT * FROM oceanbase.DBA_OB_CLUSTER_STATUS;
-- 检查节点状态
SELECT * FROM oceanbase.DBA_OB_SERVERS;
-- 检查区域状态
SELECT * FROM oceanbase.DBA_OB_ZONES;2. 启用自动故障转移
sql
-- 启用自动故障转移
ALTER SYSTEM SET enable_auto_failover = true;
-- 启用区域级自动故障转移
ALTER SYSTEM SET enable_zone_failover = true;3. 配置故障检测参数
sql
-- 设置故障检测超时时间
ALTER SYSTEM SET failover_timeout = 30000;
-- 设置主备切换超时时间
ALTER SYSTEM SET switchover_timeout = 60000;4. 验证配置
sql
-- 查看自动切换配置
SHOW PARAMETERS LIKE '%failover%';
SHOW PARAMETERS LIKE '%switchover%';自动切换监控
1. 监控自动切换事件
sql
-- 查看自动切换事件日志
SELECT * FROM oceanbase.DBA_OB_AUTO_FAILOVER_EVENTS ORDER BY event_time DESC;
-- 查看主备切换历史
SELECT * FROM oceanbase.DBA_OB_SWITCHOVER_HISTORY ORDER BY switchover_time DESC;2. 监控集群健康状态
sql
-- 查看集群健康状态
SELECT * FROM oceanbase.DBA_OB_CLUSTER_HEALTH_STATUS;
-- 查看副本同步状态
SELECT * FROM oceanbase.DBA_OB_REPLICA_STATUS;自动切换最佳实践
1. 配置合理的超时参数
- 故障检测超时时间建议设置为 30-60 秒
- 主备切换超时时间建议设置为 60-120 秒
- 区域级故障转移超时时间建议设置为 120-240 秒
2. 定期测试自动切换
- 定期进行故障注入测试,验证自动切换功能
- 测试不同故障场景,包括节点故障、区域故障和网络故障
- 记录自动切换时间和业务影响,持续优化配置
3. 监控自动切换事件
- 配置自动切换事件告警
- 定期分析自动切换事件日志
- 及时处理频繁切换的问题
4. 合理规划副本分布
- 确保副本分布在不同的物理节点和区域
- 避免单点故障,提高集群的容错能力
- 考虑业务访问模式,优化副本分布
常见问题(FAQ)
Q1: 自动切换失败的原因有哪些?
A1: 自动切换失败的常见原因包括:
- 集群状态不稳定,存在多个节点故障
- 副本同步延迟过大
- 配置参数不合理,超时时间过短
- 网络分区导致无法达成共识
- 资源不足,无法选举新的主节点
Q2: 如何手动触发自动切换?
A2: 可以使用以下命令手动触发主备切换:
sql
-- 手动触发主备切换
ALTER SYSTEM SWITCHOVER TO ZONE 'zone_name';Q3: 自动切换会影响业务吗?
A3: 自动切换过程中会有短暂的服务中断,通常在秒级。影响程度取决于:
- 集群规模和拓扑结构
- 副本同步状态
- 业务访问模式
- 配置的超时参数
Q4: 如何禁用自动切换?
A4: 可以使用以下命令禁用自动切换:
sql
-- 禁用自动故障转移
ALTER SYSTEM SET enable_auto_failover = false;
-- 禁用区域级自动故障转移
ALTER SYSTEM SET enable_zone_failover = false;Q5: 自动切换后需要做哪些检查?
A5: 自动切换后建议进行以下检查:
- 检查集群状态是否正常
- 检查副本同步状态
- 检查业务访问是否正常
- 分析自动切换原因,优化配置
- 更新监控和告警配置
