【OceanBase诊断调优】—— 磁盘性能问题导致卡合并和磁盘写入拒绝排查

适用版本

OceanBase 数据库 V3.x、V4.x 版本。

问题现象

OceanBase 集群合并一直未完成,同时 tsar 和 iostat 显示从凌晨 2:30 开始磁盘使用率一直是 100%。怀疑合并导致 IO 上升,IO 可能存在问题,observer.log 的确有大量报错 disk is hung, disk has fatal error。

问题原因

磁盘为机械盘,且 /home/admin /data/1、/data/log1 混用同一块磁盘。磁盘性能太差,导致业务操作报 -4012 OB_IO_TIMEOUT 或 -4009 OB_IO_ERROR,这会触发 IO 探测线程检测磁盘是否有问题,如果超过 data_storage_warning_tolerance_time、data_storage_error_tolerance_time、log_storage_warning_tolerance_time 这几个超时时间还没有恢复,就会触发 data 和 slog 的快速拒绝。

解决方法

  1. 日志限流。在此故障情况下,大量写入 ERROR 日志本身也会占用大量带宽,可能会导致问题更严重。

    复制代码
    alter system set syslog_io_bandwidth_limit='1MB';
  2. 增加 IO 探测的超时阈值,避免磁盘性能问题导致 data 和 slog 的快速拒绝。

    复制代码
    alter system set data_storage_warning_tolerance_time = 60s; --默认 5s
    alter system set data_storage_error_tolerance_time = 600s; --默认 300s
    alter system set log_storage_warning_tolerance_time = 60s; --默认 5s
  3. 将已经被快速拒绝的磁盘洗白。

    复制代码
    alter system set disk valid server '$192.xxx.x.x:2882';(所有服务器)

修改设置后,IO 报错消失,合并开始推进,可以看到待合并的分区数量在逐渐减少。

复制代码
select count(1) from __all_virtual_tablet_meta_table where tenant_id = 1001 and compaction_scn < xxx;
-- xxx 填写的是 cdb_ob_major_compaction 查到合并未完成租户的 global_broadcast_scn
相关推荐
隔窗听雨眠1 天前
从存储引擎到执行计划:OceanBase高效运维的调优逻辑与工程实践
运维·oceanbase
隔窗听雨眠6 天前
从预测数据分布到设定阈值:OceanBase自动分区桌面版体验实录
oceanbase
shunwahma6 天前
MySQL 替代选型,为什么首选 OceanBase 集中式?
数据库·mysql·oceanbase
运维小斌9 天前
麒麟 V10 部署 OceanBase:故障速查与验收清单
linux·数据库·oceanbase·麒麟
云贝贝贝9 天前
白天稳如狗半夜就抖:OceanBase 合并转储把读写延迟顶了上去
数据库·sql·oceanbase
库库的数据库笔记10 天前
国产信创数据库的MySQL兼容性深度对比解析
大数据·数据库·mysql·oceanbase·政务
NineData11 天前
MySQL 迁移到 OceanBase 怎么做?NineData 全量迁移、CDC 实时同步与数据校验指南
数据库·mysql·oceanbase
运维小斌13 天前
麒麟 V10 ARM64 离线部署 OceanBase:8 步实施手册
linux·数据库·oceanbase·麒麟
OceanBase数据库官方博客17 天前
OceanBase 亮相亚马逊云科技峰会分享全球化实践(技术解析与实践)
科技·oceanbase
OceanBase数据库官方博客19 天前
被 VLDB 2027接收OceanBase 最新论文让数据库基(技术解析与实践)
数据库·人工智能·oceanbase