如何监控PolarDB MySQL全局一致性(高性能模式)下SCC降级事件?
1. 追踪SCC降级发生频率的方法
状态变量
直接查询全局状态变量获取累计统计:
SHOW GLOBAL STATUS LIKE '%polar_scc%';
重点关注这几个变量:
Innodb_polar_scc_degrade_count:累计触发SCC自动降级的总次数Innodb_polar_scc_wait_timeout_count:因等待复制完成超时导致降级的次数Innodb_polar_scc_consistent_read_count:成功完成一致性读的次数
通过这些变量可以直接计算比例:降级比例 = Innodb_polar_scc_degrade_count / (Innodb_polar_scc_degrade_count + Innodb_polar_scc_consistent_read_count)
控制台监控指标
在PolarDB管理控制台的监控中心,找到「全局一致性读」分类下的指标:
- 一致性读降级次数(实时/历史趋势)
- 一致性读等待超时次数
- 一致性读成功次数
这些指标可以直观查看降级频率,还能设置告警阈值。
日志记录
开启降级日志开关:
SET GLOBAL loose_innodb_polar_scc_log_degrade = ON;
之后每次触发降级时,会在MySQL错误日志(error.log)中记录类似如下的日志:
[Note] [InnoDB] SCC degrade: wait replication timeout, query forwarded to primary node.
通过分析错误日志可以定位降级发生的具体时间和场景。
2. 监控只读查询转发至读写节点的数量
代理状态变量
查询代理相关的全局状态变量:
SHOW GLOBAL STATUS LIKE 'Polar_proxy_route_to_primary_count';
这个变量统计了代理转发至主节点(读写节点)的所有查询次数,其中包含因SCC降级触发的转发。如果需要单独统计SCC降级导致的转发,可结合Innodb_polar_scc_degrade_count(开启自动降级后,每次降级对应一次主节点转发)。
控制台监控指标
在PolarDB管理控制台的代理监控面板中,查看「转发至主节点的查询数」指标,该指标包含所有路由到主节点的请求,结合「一致性读降级次数」指标可以关联分析降级带来的主节点转发量。
审计日志分析
开启PolarDB的审计日志后,每条查询日志会携带route_node字段(标记查询最终路由到的节点类型:主节点/只读节点)。通过筛选route_node=primary且为只读类型的查询,结合查询是否带有一致性读的上下文标记,可精准统计因SCC降级转发的查询数量,适合需要精细化分析的场景。
内容的提问来源于stack exchange,提问作者juedu

