Skip to content

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: 自动切换后建议进行以下检查:

  • 检查集群状态是否正常
  • 检查副本同步状态
  • 检查业务访问是否正常
  • 分析自动切换原因,优化配置
  • 更新监控和告警配置