外观
OceanBase 一致性与可靠性参数
核心一致性参数
1. Paxos相关参数
paxos_replica_number
- 描述:副本数量,决定Paxos算法的多数派数量
- 默认值:3
- 取值范围:1-9
- 建议值:生产环境建议设置为3或5
- 影响:副本数量越多,一致性越强,但写性能会下降
sql
-- 设置副本数量
ALTER SYSTEM SET paxos_replica_number = 3;paxos_timeout
- 描述:Paxos提案超时时间(单位:毫秒)
- 默认值:10000
- 取值范围:1000-60000
- 建议值:网络稳定时可适当调小,网络不稳定时可适当调大
sql
-- 设置Paxos超时时间
ALTER SYSTEM SET paxos_timeout = 5000;paxos_election_retry_interval
- 描述:Paxos选举重试间隔(单位:毫秒)
- 默认值:1000
- 取值范围:500-5000
- 建议值:根据网络环境调整
sql
-- 设置选举重试间隔
ALTER SYSTEM SET paxos_election_retry_interval = 800;2. 一致性级别参数
consistency_level
- 描述:默认一致性级别
- 默认值:STRONG
- 取值范围:STRONG, WEAK, EVENTUAL
- 建议值:核心业务建议使用STRONG,非核心业务可考虑WEAK或EVENTUAL
sql
-- 设置默认一致性级别
ALTER TENANT tenant1 SET consistency_level = 'STRONG';session_consistency
- 描述:会话级一致性设置
- 默认值:not set
- 取值范围:STRONG, WEAK, EVENTUAL
- 建议值:根据具体业务需求设置
sql
-- 在会话级别设置一致性
SET session_consistency = 'STRONG';3. 日志相关参数
redo_transport_compress_level
- 描述:Redo日志传输压缩级别
- 默认值:0(不压缩)
- 取值范围:0-9
- 建议值:网络带宽有限时可适当开启压缩(如2-4)
sql
-- 设置Redo日志压缩级别
ALTER SYSTEM SET redo_transport_compress_level = 2;redo_transport_use_compression
- 描述:是否启用Redo日志传输压缩
- 默认值:FALSE
- 取值范围:TRUE, FALSE
- 建议值:网络带宽有限时开启
sql
-- 启用Redo日志传输压缩
ALTER SYSTEM SET redo_transport_use_compression = TRUE;可靠性相关参数
1. 故障检测参数
server_check_interval
- 描述:服务器状态检查间隔(单位:毫秒)
- 默认值:5000
- 取值范围:1000-60000
- 建议值:根据集群规模和网络环境调整
sql
-- 设置服务器检查间隔
ALTER SYSTEM SET server_check_interval = 3000;server_down_time
- 描述:服务器被判定为宕机的时间(单位:毫秒)
- 默认值:30000
- 取值范围:5000-120000
- 建议值:根据业务需求和故障容忍度调整
sql
-- 设置服务器宕机判定时间
ALTER SYSTEM SET server_down_time = 20000;2. 自动故障切换参数
enable_auto_failover
- 描述:是否启用自动故障切换
- 默认值:TRUE
- 取值范围:TRUE, FALSE
- 建议值:生产环境建议启用
sql
-- 启用自动故障切换
ALTER SYSTEM SET enable_auto_failover = TRUE;auto_failover_delay_time
- 描述:自动故障切换延迟时间(单位:毫秒)
- 默认值:5000
- 取值范围:0-60000
- 建议值:根据业务需求调整
sql
-- 设置故障切换延迟时间
ALTER SYSTEM SET auto_failover_delay_time = 3000;3. 数据保护参数
enable_data_protection
- 描述:是否启用数据保护
- 默认值:TRUE
- 取值范围:TRUE, FALSE
- 建议值:生产环境建议启用
sql
-- 启用数据保护
ALTER SYSTEM SET enable_data_protection = TRUE;data_protection_level
- 描述:数据保护级别
- 默认值:MEDIUM
- 取值范围:LOW, MEDIUM, HIGH
- 建议值:核心业务建议使用HIGH
sql
-- 设置数据保护级别
ALTER SYSTEM SET data_protection_level = 'HIGH';事务一致性参数
1. 事务隔离级别
transaction_isolation
- 描述:默认事务隔离级别
- 默认值:READ COMMITTED
- 取值范围:READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE
- 建议值:根据业务需求设置,大多数业务使用READ COMMITTED即可
sql
-- 设置默认事务隔离级别
ALTER TENANT tenant1 SET transaction_isolation = 'READ COMMITTED';2. 事务超时参数
tx_timeout
- 描述:事务超时时间(单位:微秒)
- 默认值:10000000(10秒)
- 取值范围:1000000-3600000000
- 建议值:根据业务事务处理时间调整
sql
-- 设置事务超时时间
ALTER TENANT tenant1 SET tx_timeout = 30000000; -- 30秒long_trans_threshold
- 描述:长事务阈值(单位:微秒)
- 默认值:10000000(10秒)
- 取值范围:1000000-3600000000
- 建议值:用于监控长事务,可根据业务需求调整
sql
-- 设置长事务阈值
ALTER SYSTEM SET long_trans_threshold = 20000000; -- 20秒3. 死锁检测参数
enable_deadlock_detection
- 描述:是否启用死锁检测
- 默认值:TRUE
- 取值范围:TRUE, FALSE
- 建议值:生产环境建议启用
sql
-- 启用死锁检测
ALTER SYSTEM SET enable_deadlock_detection = TRUE;deadlock_detection_interval
- 描述:死锁检测间隔(单位:微秒)
- 默认值:1000000(1秒)
- 取值范围:100000-10000000
- 建议值:根据业务并发情况调整
sql
-- 设置死锁检测间隔
ALTER SYSTEM SET deadlock_detection_interval = 500000; -- 0.5秒网络一致性参数
1. 网络超时参数
net_timeout
- 描述:网络超时时间(单位:毫秒)
- 默认值:10000
- 取值范围:1000-60000
- 建议值:根据网络环境调整
sql
-- 设置网络超时时间
ALTER SYSTEM SET net_timeout = 5000;net_retry_times
- 描述:网络重试次数
- 默认值:3
- 取值范围:1-10
- 建议值:根据网络稳定性调整
sql
-- 设置网络重试次数
ALTER SYSTEM SET net_retry_times = 5;2. 复制相关参数
replication_retry_interval
- 描述:复制重试间隔(单位:毫秒)
- 默认值:1000
- 取值范围:500-5000
- 建议值:根据网络环境调整
sql
-- 设置复制重试间隔
ALTER SYSTEM SET replication_retry_interval = 800;replication_timeout
- 描述:复制超时时间(单位:毫秒)
- 默认值:5000
- 取值范围:1000-30000
- 建议值:根据网络环境调整
sql
-- 设置复制超时时间
ALTER SYSTEM SET replication_timeout = 3000;存储一致性参数
1. SSTable相关参数
minor_freeze_times
- 描述:触发小合并的MemTable数量阈值
- 默认值:3
- 取值范围:1-10
- 建议值:根据内存大小和写入量调整
sql
-- 设置小合并触发阈值
ALTER SYSTEM SET minor_freeze_times = 4;major_freeze_duty_time
- 描述:大合并执行时间窗口
- 默认值:02:00
- 建议值:业务低峰期
sql
-- 设置大合并执行时间
ALTER SYSTEM SET major_freeze_duty_time = '03:00';2. 检查点相关参数
checkpoint_interval
- 描述:检查点间隔(单位:毫秒)
- 默认值:10000
- 取值范围:5000-60000
- 建议值:根据写入量和恢复需求调整
sql
-- 设置检查点间隔
ALTER SYSTEM SET checkpoint_interval = 15000;checkpoint_flush_timeout
- 描述:检查点刷新超时时间(单位:毫秒)
- 默认值:60000
- 取值范围:30000-300000
- 建议值:根据存储性能调整
sql
-- 设置检查点刷新超时时间
ALTER SYSTEM SET checkpoint_flush_timeout = 120000;一致性与可靠性参数调优最佳实践
1. 根据业务需求调整一致性级别
- 核心业务使用强一致性(STRONG)
- 非核心业务可考虑使用弱一致性(WEAK或EVENTUAL)
- 读写分离场景可使用最终一致性
2. 副本数量配置
- 生产环境建议使用3或5副本
- 副本分布在不同的可用区或机房
- 考虑一致性和性能的平衡
3. 网络参数调优
- 根据实际网络环境调整超时时间和重试次数
- 网络稳定时可适当减小超时时间
- 网络不稳定时可适当增大超时时间和重试次数
4. 事务参数调优
- 根据业务事务特性调整事务超时时间
- 启用死锁检测以避免系统挂起
- 选择合适的事务隔离级别
5. 存储参数调优
- 合理设置合并触发条件,避免频繁合并影响性能
- 在业务低峰期执行大合并
- 调整检查点间隔,平衡性能和恢复时间
一致性与可靠性监控
1. 一致性监控
sql
-- 查看Paxos状态
SELECT * FROM oceanbase.GV$OB_PAXOS_STATUS;
-- 查看副本同步状态
SELECT * FROM oceanbase.GV$OB_REPLICA_SYNC_STATUS;
-- 查看事务一致性状态
SELECT * FROM oceanbase.GV$OB_TRANSACTION_CONSISTENCY;2. 可靠性监控
sql
-- 查看服务器状态
SELECT * FROM oceanbase.GV$OB_SERVER_STATUS;
-- 查看副本状态
SELECT * FROM oceanbase.GV$OB_REPLICA_STATUS;
-- 查看故障检测状态
SELECT * FROM oceanbase.GV$OB_FAILURE_DETECTION;3. 告警配置
- 配置Paxos异常告警
- 配置副本同步延迟告警
- 配置服务器状态异常告警
- 配置事务超时告警
常见问题及解决方案
1. 一致性与性能的平衡
问题描述
- 强一致性保证会降低系统写性能
- 副本数量越多,一致性越强,但写性能越差
解决方案
- 根据业务需求选择合适的一致性级别
- 合理配置副本数量
- 考虑使用读写分离架构
2. 网络异常导致的一致性问题
问题描述
- 网络延迟或分区可能导致Paxos选举超时
- 副本同步延迟可能导致数据不一致
解决方案
- 调整网络超时参数
- 增加网络重试次数
- 优化网络架构
- 启用Redo日志压缩以减少网络带宽消耗
3. 事务死锁问题
问题描述
- 并发事务可能导致死锁
- 死锁会影响系统性能和可用性
解决方案
- 启用死锁检测
- 优化事务逻辑,减少锁持有时间
- 调整死锁检测间隔
- 合理设计索引,避免全表锁
4. 存储合并影响性能
问题描述
- SSTable合并可能导致I/O负载增加
- 影响系统性能
解决方案
- 在业务低峰期执行大合并
- 调整合并触发条件
- 优化存储性能
常见问题(FAQ)
Q1: OceanBase的默认一致性级别是什么?
A1: OceanBase默认提供强一致性保证,默认一致性级别为STRONG。
Q2: 如何选择合适的副本数量?
A2: 生产环境建议使用3或5副本,副本数量越多,一致性越强,但写性能会下降。副本应分布在不同的可用区或机房以提高容错能力。
Q3: 如何平衡一致性与性能?
A3: 根据业务需求选择合适的一致性级别,核心业务使用强一致性,非核心业务可考虑弱一致性;合理配置副本数量;优化网络和存储参数。
Q4: 如何监控OceanBase的一致性状态?
A4: 使用内置视图如GV$OB_PAXOS_STATUS、GV$OB_REPLICA_SYNC_STATUS和GV$OB_TRANSACTION_CONSISTENCY监控一致性状态;配置相关告警。
Q5: 网络异常会影响OceanBase的一致性吗?
A5: 网络异常可能导致Paxos选举超时或副本同步延迟,但OceanBase的Paxos协议设计能够容忍网络异常,确保最终数据一致性。
Q6: 如何优化事务性能同时保证一致性?
A6: 选择合适的事务隔离级别;调整事务超时时间;启用死锁检测;优化事务逻辑,减少锁持有时间;合理设计索引。
