运维管理30 分钟阅读
OceanBase 转储、合并与存储空间排查 100 条命令
OceanBase 写入先进入 MemTable,随后转储为 SSTable;租户合并又会把不同版本的数据整理成新的基线。合并长时间不结束,未必是整租户都卡住,可能只是某个 Zone、节点或 Tablet 的任务反复失败。空间告警也不能只看一个“已用百分比”,还要看转储积压、合并进度和节点剩余额度。
2026年9月16日阅读—点赞—收藏—
dba100oceanbasescenario
100 条命令系列文章专栏
OceanBase 写入先进入 MemTable,随后转储为 SSTable;租户合并又会把不同版本的数据整理成新的基线。合并长时间不结束,未必是整租户都卡住,可能只是某个 Zone、节点或 Tablet 的任务反复失败。空间告警也不能只看一个“已用百分比”,还要看转储积压、合并进度和节点剩余额度。
OceanBase 写入先进入 MemTable,随后转储为 SSTable;租户合并又会把不同版本的数据整理成新的基线。合并长时间不结束,未必是整租户都卡住,可能只是某个 Zone、节点或 Tablet 的任务反复失败。空间告警也不能只看一个“已用百分比”,还要看转储积压、合并进度和节点剩余额度。
这篇从租户合并版本、节点进度和具体 Tablet 查起,后续补转储、SSTable 和容量判断。遇到“合并中”告警,按租户 ID、Zone、OBServer 和 Tablet 逐层定位,比反复手工触发合并更可靠。建议收藏备用。
示例基于 OceanBase 数据库分布式版 V4.3.0、MySQL 模式。集群级合并清单由 root@sys 查询;GV$OB_SSTABLES 在目标用户租户 root@app_tenant 查询。租户 ID、节点地址、LS_ID、Tablet_ID 都按现场替换;操作命令会放在后半篇并写明回读条件。
OceanBase MemTable 转储、SSTable 合并与逐层排查示意
图中展示写入、转储、Minor 整理和 Medium/Major 合并的关系,箭头不代表每个任务都按固定顺序串行执行。实际排障要看目标租户的版本、Zone、OBServer 与具体 Tablet。
1-- root@sys2SELECT TENANT_ID, FROZEN_SCN,3 GLOBAL_BROADCAST_SCN, LAST_SCN, STATUS4FROM oceanbase.CDB_OB_MAJOR_COMPACTION5WHERE TENANT_ID = 1002;FROZEN_SCN 是目标冻结版本,LAST_SCN 是上次完成版本。两者长期拉开,再看 Zone 和节点进度;不能只凭一次快照下结论,需记下查询时间,隔一段时间复查是否推进。
1-- root@sys2SELECT *3FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION4WHERE TENANT_ID = 1002;某个 Zone 落后,先查该 Zone 的 OBServer 进度和磁盘、资源情况。租户级状态是汇总;一个 Zone 未完成时,不应把其他 Zone 的正常版本读成整个租户已完成。
1-- root@sys2SELECT TENANT_ID, ZONE, SVR_IP, SVR_PORT,3 TYPE, COMPACTION_SCN, STATUS,4 TOTAL_TABLET_COUNT, UNFINISHED_TABLET_COUNT5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027ORDER BY ZONE, SVR_IP, TYPE;TYPE 区分 Mini、Minor、Medium 和 Major 等合并。先看没完成的 Tablet 数量在哪个节点、哪个类型积累,避免把一个局部 Medium Merge 问题误报成整个租户的 Major Merge 不工作。
1-- root@sys2SELECT ZONE, SVR_IP, SVR_PORT, TYPE,3 COMPACTION_SCN, STATUS,4 UNFINISHED_TABLET_COUNT, UNFINISHED_DATA_SIZE5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027 AND UNFINISHED_TABLET_COUNT > 08ORDER BY UNFINISHED_TABLET_COUNT DESC;待处理 Tablet 数和未完成数据量要一起看,别只按任务数量排序。持续采样后仍无减少,再查该节点的诊断信息与实际存储;估计完成时间不是恢复承诺。
1-- root@sys;字节数换算为 GiB2SELECT ZONE, SVR_IP, TYPE,3 ROUND(DATA_SIZE / 1024 / 1024 / 1024, 2) AS total_gib,4 ROUND(UNFINISHED_DATA_SIZE / 1024 / 1024 / 1024, 2)5 AS pending_gib,6 ESTIMATED_FINISH_TIME7FROM oceanbase.GV$OB_COMPACTION_PROGRESS8WHERE TENANT_ID = 10029ORDER BY pending_gib DESC;大节点合并时间长可能只是处理量高。比较两次 pending_gib 是否下降,再对照 I/O 与合并诊断;ESTIMATED_FINISH_TIME 是估算字段,不能拿它作故障恢复的固定时限。
1-- root@sys;版本 SCN 来自第 1/3 条的实际结果2SELECT SVR_IP, SVR_PORT, TYPE, STATUS,3 TOTAL_TABLET_COUNT, UNFINISHED_TABLET_COUNT,4 START_TIME, ESTIMATED_FINISH_TIME5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027 AND COMPACTION_SCN = 17000000000000000008ORDER BY UNFINISHED_TABLET_COUNT DESC;同一租户可能有不同合并版本并行或交替推进。查具体 SCN 能把告警窗口和节点任务对齐;一条结果消失可能代表任务完成或进度视图更新,仍须回读租户最终 LAST_SCN。
1-- root@sys2SELECT SVR_IP, SVR_PORT, TYPE,3 LS_ID, TABLET_ID, STATUS,4 CREATE_TIME, DIAGNOSE_INFO5FROM oceanbase.GV$OB_COMPACTION_DIAGNOSE_INFO6WHERE TENANT_ID = 10027ORDER BY CREATE_TIME DESC8LIMIT 20;记录 LS_ID、Tablet_ID、节点与诊断时间,再去 OBServer 日志对应错误码。诊断结果可能是短期保留;没有行不等于从未失败,先看进度是否确实停住,再查相关日志。
1-- root@app_tenant;该视图仅展示当前租户;LS_ID 按诊断结果替换2SELECT SVR_IP, SVR_PORT, LS_ID, TABLE_TYPE,3 COUNT(*) AS table_count,4 SUM(SIZE) AS bytes_used5FROM oceanbase.GV$OB_SSTABLES6WHERE LS_ID = 10017GROUP BY SVR_IP, SVR_PORT, LS_ID, TABLE_TYPE8ORDER BY SVR_IP, TABLE_TYPE;同一 LS 在不同副本节点上有各自的表状态,不能把所有节点的数量直接相加成“租户总表数”。Mini/Minor SSTable 长期积累时,还要查转储和合并任务是否跟得上写入。
1-- root@app_tenant;TABLET_ID 来自第 7 条2SELECT SVR_IP, SVR_PORT, TABLET_ID,3 TABLE_TYPE, SIZE, START_LOG_SCN, END_LOG_SCN4FROM oceanbase.GV$OB_SSTABLES5WHERE TABLET_ID = 2002446ORDER BY SIZE DESC;大小以字节计;不同节点副本分别占空间。某个 Tablet 的 SSTable 很大,不代表它就是合并失败的原因,还要看诊断信息、剩余任务数量及节点磁盘与 I/O 情况。
1-- root@app_tenant;当前用户租户2SELECT SVR_IP, SVR_PORT, COUNT(*) AS active_memtables,3 SUM(SIZE) AS bytes_used4FROM oceanbase.GV$OB_SSTABLES5WHERE IS_ACTIVE = 'YES'6GROUP BY SVR_IP, SVR_PORT7ORDER BY bytes_used DESC;活跃 MemTable 集中可能与业务写入位置有关。先和租户 Unit、LS Leader 分布及节点资源对照;一次快照里的高值不等于转储故障,须连续观察并结合 Mini Merge 进度。
1-- root@sys2SELECT TYPE,3 SUM(TOTAL_TABLET_COUNT) AS TOTAL_TABLETS,4 SUM(UNFINISHED_TABLET_COUNT) AS PENDING_TABLETS,5 SUM(UNFINISHED_DATA_SIZE) AS PENDING_BYTES6FROM oceanbase.GV$OB_COMPACTION_PROGRESS7WHERE TENANT_ID = 10028GROUP BY TYPE9ORDER BY PENDING_BYTES DESC;先确认积压属于哪种 Compaction。Mini 是 MemTable 落盘,Minor 整理增量 SSTable,Major 形成租户统一快照,处理方向并不相同。
1-- root@sys2SELECT ZONE, SVR_IP, SVR_PORT,3 STATUS, UNFINISHED_TABLET_COUNT,4 UNFINISHED_DATA_SIZE5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027 AND TYPE = 'MINI_MERGE'8 AND UNFINISHED_TABLET_COUNT > 09ORDER BY UNFINISHED_DATA_SIZE DESC;Mini 积压通常与持续写入、MemStore 压力或节点资源有关。不要看到 Mini 任务多就直接触发 Major Freeze。
1-- root@sys2SELECT ZONE, SVR_IP, SVR_PORT,3 STATUS, UNFINISHED_TABLET_COUNT,4 UNFINISHED_DATA_SIZE5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027 AND TYPE = 'MINOR_MERGE'8 AND UNFINISHED_TABLET_COUNT > 09ORDER BY UNFINISHED_DATA_SIZE DESC;Minor 长期跟不上时,Mini/Minor SSTable 会逐渐增多,读放大和空间压力也可能上升。先查节点 I/O 与具体 Tablet。
1-- root@sys2SELECT ZONE, SVR_IP, SVR_PORT,3 COMPACTION_SCN, STATUS,4 UNFINISHED_TABLET_COUNT,5 UNFINISHED_DATA_SIZE6FROM oceanbase.GV$OB_COMPACTION_PROGRESS7WHERE TENANT_ID = 10028 AND TYPE = 'MEDIUM_MERGE'9 AND UNFINISHED_TABLET_COUNT > 010ORDER BY UNFINISHED_DATA_SIZE DESC;Medium 是 Tablet 级调度,不能用租户 Major 的完成状态代替。定位到 Tablet 后再看诊断信息与历史任务。
1-- root@sys2SELECT ZONE, SVR_IP, SVR_PORT,3 COMPACTION_SCN, STATUS,4 TOTAL_TABLET_COUNT,5 UNFINISHED_TABLET_COUNT6FROM oceanbase.GV$OB_COMPACTION_PROGRESS7WHERE TENANT_ID = 10028 AND TYPE = 'MAJOR_MERGE'9 AND UNFINISHED_TABLET_COUNT > 010ORDER BY ZONE, UNFINISHED_TABLET_COUNT DESC;同一版本的所有 Zone 和节点完成后,租户 Major 才算结束。只看最快节点会过早关闭告警。
1-- root@sys2SELECT ZONE, SVR_IP, TYPE, COMPACTION_SCN,3 TOTAL_TABLET_COUNT,4 UNFINISHED_TABLET_COUNT,5 ROUND(100 * (TOTAL_TABLET_COUNT - UNFINISHED_TABLET_COUNT)6 / NULLIF(TOTAL_TABLET_COUNT, 0), 2) AS FINISH_PCT7FROM oceanbase.GV$OB_COMPACTION_PROGRESS8WHERE TENANT_ID = 10029 AND COMPACTION_SCN = 170000000000000000010ORDER BY FINISH_PCT, ZONE, SVR_IP;完成比例要和剩余数据量一起看。一个节点只剩少量 Tablet,但这些 Tablet 很大,仍可能决定最终完成时间。
1-- root@app_tenant2SELECT SVR_IP, SVR_PORT, TABLET_ID, TABLE_TYPE,3 COUNT(*) AS SSTABLE_COUNT,4 SUM(SIZE) AS TOTAL_BYTES5FROM oceanbase.GV$OB_SSTABLES6WHERE TABLET_ID = 2002447GROUP BY SVR_IP, SVR_PORT, TABLET_ID, TABLE_TYPE8ORDER BY SVR_IP, TABLE_TYPE;副本节点分别统计,不能把三副本数量当成一个 Tablet 的逻辑表数。重点看某个副本是否明显偏离其他副本。
1-- root@app_tenant2SELECT SVR_IP, TABLET_ID,3 COUNT(*) AS MINI_SSTABLES,4 SUM(SIZE) AS MINI_BYTES5FROM oceanbase.GV$OB_SSTABLES6WHERE TABLE_TYPE LIKE '%MINI%'7GROUP BY SVR_IP, TABLET_ID8ORDER BY MINI_SSTABLES DESC, MINI_BYTES DESC9LIMIT 20;Mini SSTable 多说明转储频繁或 Minor 整理跟不上。再按 Tablet 对应业务表、写入热点和节点资源判断。
1-- root@app_tenant2SELECT SVR_IP, TABLET_ID,3 COUNT(*) AS MINOR_SSTABLES,4 SUM(SIZE) AS MINOR_BYTES5FROM oceanbase.GV$OB_SSTABLES6WHERE TABLE_TYPE LIKE '%MINOR%'7GROUP BY SVR_IP, TABLET_ID8ORDER BY MINOR_SSTABLES DESC, MINOR_BYTES DESC9LIMIT 20;Minor SSTable 长期过多会增加读放大。数量阈值必须结合版本默认值、业务写入和具体 Compaction 状态解释。
1-- root@app_tenant2SELECT SVR_IP, TABLE_TYPE,3 START_LOG_SCN, END_LOG_SCN, SIZE4FROM oceanbase.GV$OB_SSTABLES5WHERE TABLET_ID = 2002446ORDER BY SVR_IP, START_LOG_SCN, END_LOG_SCN;SCN 范围可帮助判断增量表是否连续、哪些表尚待合并。发现异常范围时先保留节点和 Tablet 证据,再查日志。
1-- root@sys2SELECT TENANT_NAME, SVR_IP, NAME, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME = 'freeze_trigger_percentage'6ORDER BY SVR_IP;该参数控制 MemStore 达到租户内存一定比例后触发冻结。逐节点值不一致时先处理参数下发,不要急着改阈值。
1-- root@sys2SELECT TENANT_NAME, SVR_IP, NAME, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME = 'minor_compact_trigger'6ORDER BY SVR_IP;阈值表示积累多少 SSTable 后触发 Minor Compaction。调小会增加合并频率,调大则可能增加读放大,两边都要评估。
1-- root@sys2SELECT TENANT_NAME, SVR_IP, NAME, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME = 'major_compact_trigger'6ORDER BY SVR_IP;V4.x 使用 major_compact_trigger,不要再沿用 3.x 的 minor_freeze_times。参数为 0 时自动触发语义要按目标版本文档确认。
1-- root@sys2SELECT TENANT_NAME, SVR_IP, NAME, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME = 'major_freeze_duty_time'6ORDER BY SVR_IP;合并通常安排在业务低峰。时间配置正常也不代表任务一定按时完成,还要看冻结版本、进度和失败诊断。
1-- root@sys2SELECT TENANT_NAME, SVR_IP, NAME, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME IN ('_memstore_limit_percentage',6 'memstore_limit_percentage')7ORDER BY NAME, SVR_IP;V4.3.0 支持租户级隐藏配置 _memstore_limit_percentage。隐藏参数不要按文章示例直接修改,先确认现场支持策略和现有非默认值。
1-- root@sys;写操作,时间按业务低峰替换2ALTER SYSTEM SET major_freeze_duty_time = '02:00'3 TENANT = app_tenant;修改后逐节点回读,并观察下一轮是否按计划触发。不要在当前合并尚未结束时频繁移动窗口。
1-- root@sys;写操作,先评估 I/O 与读放大2ALTER SYSTEM SET minor_compact_trigger = 43 TENANT = app_tenant;阈值不是越小越好。变更前记录原值,观察 SSTable 数、合并频率、查询与写入延迟,再决定是否保留。
1-- root@sys2SELECT TENANT_NAME, SVR_IP, NAME, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME IN ('freeze_trigger_percentage',6 'minor_compact_trigger',7 'major_compact_trigger',8 'major_freeze_duty_time')9ORDER BY NAME, SVR_IP;每台 OBServer 的值应符合变更单。参数一致后还要等真实负载验证,不能把回读成功当成性能改善。
1-- root@app_tenant2SELECT SVR_IP,3 COUNT(*) AS ACTIVE_MEMTABLES,4 SUM(SIZE) AS ACTIVE_BYTES5FROM oceanbase.GV$OB_SSTABLES6WHERE IS_ACTIVE = 'YES'7GROUP BY SVR_IP8ORDER BY ACTIVE_BYTES DESC;连续采样比单次总量更重要。写入高峰自然会抬升,真正异常是长期只增不降且转储任务无推进。
1-- root@app_tenant2SELECT SVR_IP, LS_ID, TABLET_ID,3 SIZE, START_LOG_SCN, END_LOG_SCN4FROM oceanbase.GV$OB_SSTABLES5WHERE IS_ACTIVE = 'YES'6ORDER BY SIZE DESC7LIMIT 20;大 MemTable 可能对应写热点或大事务。定位到业务表后,再结合事务、写入量和冻结阈值判断,不要直接手工冻结整个租户。
1-- root@app_tenant2SELECT DATABASE_NAME, TABLE_NAME, PARTITION_NAME,3 TABLET_ID, LS_ID, ZONE, SVR_IP, ROLE4FROM oceanbase.DBA_OB_TABLE_LOCATIONS5WHERE DATABASE_NAME = 'appdb'6 AND TABLE_NAME = 'orders'7ORDER BY TABLET_ID, ROLE DESC, ZONE;手工转储前先把表、分区、LS 和 Tablet 对应起来。单个分区异常时,不必扩大到整个租户。
1-- root@app_tenant2SELECT TABLE_NAME, PARTITION_NAME, TABLET_ID, LS_ID,3 ZONE, SVR_IP, SVR_PORT, ROLE4FROM oceanbase.DBA_OB_TABLE_LOCATIONS5WHERE TABLET_ID = 2002446ORDER BY ROLE DESC, ZONE, SVR_IP;先确认 Tablet ID 没有抄错,并记录 Leader 和各 Follower 所在节点。后面查 SSTable 时才能判断是单副本异常还是整体积压。
1-- root@sys;管理操作2ALTER SYSTEM MINOR FREEZE TENANT = app_tenant;适合确认租户 MemTable 长时间不下降、需要人工推进转储的情况。写入高峰执行会增加后台 I/O,先看节点负载。
1-- root@app_tenant;管理操作2ALTER SYSTEM MINOR FREEZE;作用范围只有当前租户。执行前确认连接身份,避免把 root@sys 和 root@app_tenant 混用。
1-- root@sys;管理操作2ALTER SYSTEM MINOR FREEZE ZONE = zone1;仅用于某个 Zone 的 MemTable 或转储进度明显异常时。先确认该 Zone 内的业务租户和节点范围。
1-- root@sys;管理操作,地址为 RPC 端口2ALTER SYSTEM MINOR FREEZE SERVER = ('10.0.0.11:2882');Server 级转储比全租户更容易控制影响。端口要填 OBServer 的 RPC 端口,不是客户端连接使用的 SQL 端口。
1-- root@sys;管理操作2ALTER SYSTEM MINOR FREEZE SERVER =3 ('10.0.0.11:2882','10.0.0.12:2882');只把确实需要处理的节点列进去。节点较多时分批执行,更容易观察 I/O 和转储效果。
1-- root@sys;管理操作2ALTER SYSTEM MINOR FREEZE TENANT = app_tenant LS = 1001;这条命令会转储该 LS 下的 Tablet。适合问题已经收敛到某个日志流的场景。
1-- root@sys;管理操作2ALTER SYSTEM MINOR FREEZE TENANT = app_tenant3 TABLET_ID = 200244;单个热点分区积累大量 Mini SSTable 时,优先使用 Tablet 级转储,影响范围最小。
1-- root@sys;管理操作2ALTER SYSTEM MINOR FREEZE TENANT = app_tenant3 LS = 1001 TABLET_ID = 200244;LS 与 Tablet 的对应关系必须来自位置视图。两者不匹配时不要反复尝试,应重新核对对象位置。
1-- root@app_tenant;管理操作2ALTER SYSTEM MINOR FREEZE TABLET_ID = 200244;业务租户只能操作本租户对象。执行后检查该 Tablet 的活跃 MemTable 和 Mini SSTable 是否发生变化。
1-- root@app_tenant2SELECT SVR_IP, LS_ID, TABLET_ID, SIZE,3 START_LOG_SCN, END_LOG_SCN4FROM oceanbase.GV$OB_SSTABLES5WHERE TABLET_ID = 2002446 AND IS_ACTIVE = 'YES'7ORDER BY SVR_IP;命令返回成功只代表请求已提交。活跃 MemTable 切换以及后续 SSTable 生成,才是实际推进的证据。
1-- root@app_tenant2SELECT SVR_IP, COUNT(*) AS MINI_COUNT, SUM(SIZE) AS MINI_BYTES3FROM oceanbase.GV$OB_SSTABLES4WHERE TABLET_ID = 2002445 AND TABLE_TYPE LIKE '%MINI%'6GROUP BY SVR_IP7ORDER BY SVR_IP;刚转储后 Mini 数量可能先增加,随后由 Minor Compaction 整理。不能看到数量上升就判断转储失败。
1-- root@app_tenant2SELECT NOW() AS SAMPLE_TIME, SVR_IP, TABLET_ID, TABLE_TYPE,3 COUNT(*) AS CNT, SUM(SIZE) AS BYTES4FROM oceanbase.GV$OB_SSTABLES5WHERE TABLET_ID = 2002446GROUP BY SVR_IP, TABLET_ID, TABLE_TYPE7ORDER BY SVR_IP, TABLE_TYPE;在执行前后各保存一次结果,重点比较活跃 MemTable、Mini/Minor 数量和字节数,而不是只留一张执行成功截图。
1-- root@sys2SELECT TENANT_ID, TYPE, ZONE, SVR_IP, COMPACTION_SCN,3 TOTAL_TABLET_COUNT, UNFINISHED_TABLET_COUNT4FROM oceanbase.GV$OB_COMPACTION_PROGRESS5WHERE TENANT_ID = 10026 AND TYPE IN ('MINI_MERGE','MINOR_MERGE')7 AND UNFINISHED_TABLET_COUNT > 08ORDER BY TYPE, ZONE, SVR_IP;若视图中的类型名称与当前补丁版本不同,先查询 DISTINCT TYPE,再按现场返回值过滤。
1-- root@sys2SELECT TENANT_ID, GLOBAL_BROADCAST_SCN, LAST_SCN,3 IS_ERROR, STATUS4FROM oceanbase.CDB_OB_MAJOR_COMPACTION5WHERE TENANT_ID = 1002;先记录当前广播版本和已完成版本。如果上一轮仍未结束,应先处理积压,不要连续发起新的 Major。
1-- root@sys2SELECT TENANT_ID, ZONE, BROADCAST_SCN, LAST_SCN,3 IS_MERGING, MERGE_STATUS4FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION5WHERE TENANT_ID = 10026ORDER BY ZONE;所有 Zone 完成同一广播版本,才能认为本轮结束。某个 Zone 落后时先检查该 Zone 的节点和诊断信息。
1-- root@sys;管理操作2ALTER SYSTEM MAJOR FREEZE TENANT = app_tenant;Major 会形成租户级一致快照并带来后台 I/O。生产环境应放在变更窗口内执行,并持续观察业务延迟。
1-- root@app_tenant;管理操作2ALTER SYSTEM MAJOR FREEZE;只影响当前租户。命令提交后使用系统租户查看全局、Zone 和节点三级进度。
1-- root@sys;管理操作2ALTER SYSTEM MAJOR FREEZE TENANT = app_tenant,report_tenant;多个大租户同时合并可能争用磁盘和 CPU。没有容量评估时,优先错峰逐个执行。
1-- root@sys;高影响操作2ALTER SYSTEM MAJOR FREEZE TENANT = all_user;这条命令影响所有用户租户,只适合明确的集群级维护窗口。日常处理单租户问题不要使用它。
1-- root@sys2SELECT ZONE, SVR_IP, COMPACTION_SCN,3 TOTAL_TABLET_COUNT, UNFINISHED_TABLET_COUNT,4 DATA_SIZE, UNFINISHED_DATA_SIZE5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027 AND TYPE = 'MAJOR_MERGE'8ORDER BY UNFINISHED_DATA_SIZE DESC, ZONE, SVR_IP;剩余 Tablet 数相近时,未完成数据量更能解释哪个节点拖慢了整轮合并。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(100 * (TOTAL_TABLET_COUNT - UNFINISHED_TABLET_COUNT)4 / NULLIF(TOTAL_TABLET_COUNT, 0), 2) AS TABLET_PCT,5 ROUND(100 * (DATA_SIZE - UNFINISHED_DATA_SIZE)6 / NULLIF(DATA_SIZE, 0), 2) AS DATA_PCT7FROM oceanbase.GV$OB_COMPACTION_PROGRESS8WHERE TENANT_ID = 10029 AND TYPE = 'MAJOR_MERGE'10ORDER BY DATA_PCT, TABLET_PCT;Tablet 完成率和数据完成率差距很大,通常说明剩下的是少量大 Tablet。
1-- root@sys2SELECT TENANT_ID, SVR_IP, LS_ID, TABLET_ID,3 TYPE, STATUS, INFO4FROM oceanbase.GV$OB_COMPACTION_DIAGNOSE_INFO5WHERE TENANT_ID = 10026ORDER BY SVR_IP, LS_ID, TABLET_ID;保留完整的 STATUS 和 INFO 再处理,不要只截取错误关键词。日志、磁盘和 Tablet 位置需要一起核对。
1-- root@sys2SELECT TENANT_ID, TYPE, ZONE, SVR_IP, COMPACTION_SCN,3 TOTAL_TABLET_COUNT, UNFINISHED_TABLET_COUNT4FROM oceanbase.GV$OB_COMPACTION_PROGRESS5WHERE TENANT_ID = 10026 AND TYPE = 'MAJOR_MERGE'7 AND UNFINISHED_TABLET_COUNT > 08ORDER BY ZONE, SVR_IP;进度视图用于确认落后节点;具体 Tablet 再从诊断视图和日志定位,避免把节点级统计误当成 Tablet 明细。
1-- root@sys2SELECT TENANT_ID, GLOBAL_BROADCAST_SCN, LAST_SCN,3 IS_ERROR, STATUS4FROM oceanbase.CDB_OB_MAJOR_COMPACTION5WHERE TENANT_ID = 10026 AND GLOBAL_BROADCAST_SCN = LAST_SCN;广播版本与完成版本一致,是本轮结束的重要条件;同时还要确认没有错误标记。
1-- root@sys2SELECT ZONE, BROADCAST_SCN, LAST_SCN, IS_MERGING, MERGE_STATUS3FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION4WHERE TENANT_ID = 10025ORDER BY ZONE;某个 Zone 的 LAST_SCN 落后时,继续查该 Zone 的节点进度和磁盘状态。
1-- root@sys2SELECT SVR_IP, SVR_PORT, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME = 'major_freeze_duty_time'6ORDER BY SVR_IP, SVR_PORT;各节点值一致才算参数下发完成。下一轮是否按时开始,仍要由广播版本和进度视图确认。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(DATA_DISK_CAPACITY / 1024 / 1024 / 1024, 1) AS CAP_GB,4 ROUND(DATA_DISK_IN_USE / 1024 / 1024 / 1024, 1) AS USED_GB,5 ROUND(100 * DATA_DISK_IN_USE / NULLIF(DATA_DISK_CAPACITY, 0), 2) AS USED_PCT,6 DATA_DISK_HEALTH_STATUS7FROM oceanbase.GV$OB_SERVERS8ORDER BY USED_PCT DESC;合并空间问题先看最满的节点,而不是集群平均值。健康状态为 WARNING 或 ERROR 时优先处理磁盘本身。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND((DATA_DISK_CAPACITY - DATA_DISK_IN_USE)4 / 1024 / 1024 / 1024, 1) AS FREE_GB5FROM oceanbase.GV$OB_SERVERS6ORDER BY FREE_GB;合并会产生新版本并逐步回收旧数据,不能按“新文件大小等于当前空闲空间”做简单估算。
1-- root@sys2SELECT ZONE, SVR_IP, SVR_PORT,3 DATA_DISK_HEALTH_STATUS, DATA_DISK_ABNORMAL_TIME4FROM oceanbase.GV$OB_SERVERS5WHERE DATA_DISK_HEALTH_STATUS <> 'NORMAL'6ORDER BY DATA_DISK_ABNORMAL_TIME DESC;磁盘异常可能直接拖慢或阻断 Compaction。先保存异常时间,再对照 OBServer 日志和主机监控。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(DATA_DISK_CAPACITY / POWER(1024,3), 1) AS CAP_GB,4 ROUND(DATA_DISK_ALLOCATED / POWER(1024,3), 1) AS ALLOC_GB,5 ROUND(DATA_DISK_IN_USE / POWER(1024,3), 1) AS USED_GB6FROM oceanbase.GV$OB_SERVERS7ORDER BY ZONE, SVR_IP;容量、已分配和已使用含义不同。做扩容判断时不要只盯其中一列。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(LOG_DISK_CAPACITY / POWER(1024,3), 1) AS CAP_GB,4 ROUND(LOG_DISK_IN_USE / POWER(1024,3), 1) AS USED_GB,5 ROUND(100 * LOG_DISK_IN_USE / NULLIF(LOG_DISK_CAPACITY,0), 2) AS USED_PCT6FROM oceanbase.GV$OB_SERVERS7ORDER BY USED_PCT DESC;日志盘压力和数据盘压力要分开判断。Compaction 主要处理数据版本,不能用它解决日志盘配额不足。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(100 * LOG_DISK_ASSIGNED / NULLIF(LOG_DISK_CAPACITY,0), 2) AS ASSIGNED_PCT,4 ROUND(LOG_DISK_ASSIGNED / POWER(1024,3), 1) AS ASSIGNED_GB,5 ROUND(LOG_DISK_IN_USE / POWER(1024,3), 1) AS USED_GB6FROM oceanbase.GV$OB_SERVERS7ORDER BY ASSIGNED_PCT DESC;ASSIGNED 是 Unit 配额之和,IN_USE 是实际使用量。两者不能互相替代。
1-- root@sys2SELECT TENANT_ID, UNIT_ID, ZONE, SVR_IP,3 ROUND(DATA_DISK_IN_USE / POWER(1024,3), 2) AS DATA_USED_GB,4 STATUS5FROM oceanbase.GV$OB_UNITS6WHERE TENANT_ID = 10027ORDER BY DATA_DISK_IN_USE DESC;同一租户各副本的使用量允许有差异,但单节点长期明显偏高,需要继续查 Tablet 分布和大表。
1-- root@sys2SELECT UNIT_ID, ZONE, SVR_IP,3 ROUND(LOG_DISK_SIZE / POWER(1024,3), 2) AS LOG_QUOTA_GB,4 ROUND(LOG_DISK_IN_USE / POWER(1024,3), 2) AS LOG_USED_GB,5 ROUND(100 * LOG_DISK_IN_USE / NULLIF(LOG_DISK_SIZE,0), 2) AS USED_PCT6FROM oceanbase.GV$OB_UNITS7WHERE TENANT_ID = 10028ORDER BY USED_PCT DESC;这里看到的是租户 Unit 维度的日志盘配额和使用量,与节点总日志盘指标配合使用。
1-- root@sys2SELECT TENANT_ID, UNIT_ID, ZONE, SVR_IP,3 ROUND(DATA_DISK_IN_USE / POWER(1024,3), 2) AS DATA_USED_GB4FROM oceanbase.GV$OB_UNITS5ORDER BY DATA_DISK_IN_USE DESC6LIMIT 20;先找到大租户落在哪些节点,再判断空间增长是业务数据、SSTable 积压还是副本分布造成。
1-- root@sys2SELECT TENANT_ID,3 ROUND(SUM(DATA_DISK_IN_USE) / POWER(1024,3), 2) AS DATA_USED_GB,4 COUNT(*) AS UNIT_COUNT5FROM oceanbase.GV$OB_UNITS6GROUP BY TENANT_ID7ORDER BY DATA_USED_GB DESC;汇总值包含租户的多个副本,不能当作业务表逻辑大小。它适合做租户间空间占用对比。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(SUM(DATA_DISK_IN_USE) / POWER(1024,3), 2) AS UNIT_DATA_GB,4 COUNT(*) AS UNIT_COUNT5FROM oceanbase.GV$OB_UNITS6GROUP BY ZONE, SVR_IP7ORDER BY UNIT_DATA_GB DESC;与 GV$OB_SERVERS.DATA_DISK_IN_USE 对照看。统计口径不同,数值不要求完全相等。
1-- root@sys2SELECT TENANT_ID, UNIT_ID, ZONE, SVR_IP, STATUS3FROM oceanbase.GV$OB_UNITS4WHERE STATUS <> 'NORMAL'5ORDER BY TENANT_ID, ZONE, SVR_IP;Unit 迁移或异常期间,空间和副本分布会变化。此时不要只根据一次采样判断节点倾斜。
1-- root@sys2SELECT ZONE,3 ROUND(SUM(DATA_DISK_IN_USE) / POWER(1024,3), 1) AS USED_GB,4 ROUND(SUM(DATA_DISK_CAPACITY) / POWER(1024,3), 1) AS CAP_GB,5 ROUND(100 * SUM(DATA_DISK_IN_USE)6 / NULLIF(SUM(DATA_DISK_CAPACITY),0), 2) AS USED_PCT7FROM oceanbase.GV$OB_SERVERS8GROUP BY ZONE9ORDER BY USED_PCT DESC;Zone 汇总用于看区域性压力,最终仍要落到最满节点。平均值会掩盖单点空间风险。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(100 * DATA_DISK_IN_USE / NULLIF(DATA_DISK_CAPACITY,0), 2) AS USED_PCT4FROM oceanbase.GV$OB_SERVERS5WHERE DATA_DISK_IN_USE / NULLIF(DATA_DISK_CAPACITY,0) >= 0.806ORDER BY USED_PCT DESC;80% 只是示例筛选线,生产阈值应按扩容周期、业务增长和合并临时空间制定。
1-- root@sys2SELECT ZONE,3 ROUND(SUM(DATA_DISK_IN_USE) / POWER(1024,3), 2) AS DATA_USED_GB,4 COUNT(*) AS UNIT_COUNT5FROM oceanbase.GV$OB_UNITS6WHERE TENANT_ID = 10027GROUP BY ZONE8ORDER BY DATA_USED_GB DESC;多副本环境应结合副本数量解释。某个 Zone 空间偏大时,再检查大 Tablet 是否集中。
1-- root@sys2SELECT NOW() AS SAMPLE_TIME, ZONE, SVR_IP,3 DATA_DISK_CAPACITY, DATA_DISK_ALLOCATED, DATA_DISK_IN_USE,4 LOG_DISK_CAPACITY, LOG_DISK_ASSIGNED, LOG_DISK_IN_USE5FROM oceanbase.GV$OB_SERVERS6ORDER BY ZONE, SVR_IP;大版本合并前保存原始字节数,后续比对时不会受四舍五入影响。
1-- root@sys;待 Major 完成并进入稳定状态后执行2SELECT NOW() AS SAMPLE_TIME, ZONE, SVR_IP,3 DATA_DISK_CAPACITY, DATA_DISK_ALLOCATED, DATA_DISK_IN_USE,4 DATA_DISK_HEALTH_STATUS5FROM oceanbase.GV$OB_SERVERS6ORDER BY ZONE, SVR_IP;旧版本回收不是瞬间完成。合并刚结束就看不到明显下降,并不等于回收失败。
1-- root@app_tenant2SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS,3 ROUND((DATA_LENGTH + INDEX_LENGTH) / POWER(1024,3), 2) AS TOTAL_GB4FROM information_schema.TABLES5WHERE TABLE_SCHEMA NOT IN ('oceanbase','information_schema')6ORDER BY DATA_LENGTH + INDEX_LENGTH DESC7LIMIT 20;TABLE_ROWS 和空间列适合排查排序,不应当作精确计费数据。分区表还要继续看分区明细。
1-- root@app_tenant2SELECT TABLE_SCHEMA, TABLE_NAME,3 ROUND(DATA_LENGTH / POWER(1024,3), 2) AS DATA_GB,4 ROUND(INDEX_LENGTH / POWER(1024,3), 2) AS INDEX_GB5FROM information_schema.TABLES6WHERE TABLE_SCHEMA = 'appdb'7ORDER BY DATA_LENGTH + INDEX_LENGTH DESC8LIMIT 20;索引占用异常高时,先核对索引设计和重复索引,不要把所有空间问题都归因于 Compaction。
1-- root@app_tenant2SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME,3 TABLE_ROWS,4 ROUND((DATA_LENGTH + INDEX_LENGTH) / POWER(1024,3), 2) AS TOTAL_GB5FROM information_schema.PARTITIONS6WHERE TABLE_SCHEMA = 'appdb'7 AND TABLE_NAME = 'orders'8ORDER BY DATA_LENGTH + INDEX_LENGTH DESC;分区大小差异大时,可能是分区键倾斜,也可能是历史数据未按计划清理。
1-- root@app_tenant2SELECT TABLE_SCHEMA, TABLE_NAME, PARTITION_NAME,3 ROUND((DATA_LENGTH + INDEX_LENGTH) / POWER(1024,3), 2) AS TOTAL_GB4FROM information_schema.PARTITIONS5WHERE PARTITION_NAME IS NOT NULL6ORDER BY DATA_LENGTH + INDEX_LENGTH DESC7LIMIT 30;大分区往往也是合并耗时重点。再通过位置视图找到对应 Tablet 和副本节点。
1-- root@app_tenant2SELECT DATABASE_NAME, TABLE_NAME, PARTITION_NAME,3 TABLET_ID, LS_ID, ZONE, SVR_IP, ROLE4FROM oceanbase.DBA_OB_TABLE_LOCATIONS5WHERE DATABASE_NAME = 'appdb'6 AND TABLE_NAME = 'orders'7ORDER BY PARTITION_NAME, ROLE DESC, ZONE;这一步把逻辑对象和物理位置接起来,是从“大分区”继续查到节点、LS、SSTable 的关键。
1-- root@app_tenant2SELECT ZONE, SVR_IP, COUNT(*) AS REPLICA_COUNT3FROM oceanbase.DBA_OB_TABLE_LOCATIONS4WHERE DATABASE_NAME = 'appdb'5 AND TABLE_NAME = 'orders'6GROUP BY ZONE, SVR_IP7ORDER BY REPLICA_COUNT DESC;副本数量只能反映分布,不能代表实际字节数。还要结合该节点 SSTable 大小和数据盘使用量。
1-- root@app_tenant2SELECT DATABASE_NAME, TABLE_NAME, TABLE_TYPE,3 PARTITION_NAME, SUBPARTITION_NAME, TABLET_ID, LS_ID4FROM oceanbase.DBA_OB_TABLE_LOCATIONS5WHERE TABLET_ID = 2002446ORDER BY TABLE_TYPE, TABLE_NAME;诊断视图只给出 Tablet ID 时,用这条 SQL 还原业务对象。索引和 LOB 辅助表也可能出现在结果中。
1-- root@app_tenant2SELECT DATABASE_NAME, TABLE_NAME, PARTITION_NAME,3 TABLET_ID, LS_ID, ROLE, SVR_IP4FROM oceanbase.DBA_OB_TABLE_LOCATIONS5WHERE LS_ID = 10016ORDER BY TABLE_NAME, PARTITION_NAME, ROLE DESC;LS 级转储或合并异常时,先确认会影响哪些业务对象,再决定是否缩小到 Tablet。
1-- root@sys2SELECT TENANT_ID, DATABASE_NAME, TABLE_NAME, PARTITION_NAME,3 TABLET_ID, LS_ID, ZONE, SVR_IP, ROLE4FROM oceanbase.CDB_OB_TABLE_LOCATIONS5WHERE TENANT_ID = 10026 AND TABLET_ID = 2002447ORDER BY ROLE DESC, ZONE;系统租户查询必须带租户条件,避免不同租户的对象混在一起。
1-- root@app_tenant2SELECT LS_ID, COUNT(DISTINCT TABLET_ID) AS TABLET_COUNT3FROM oceanbase.DBA_OB_TABLE_LOCATIONS4WHERE TABLE_TYPE = 'USER TABLE'5GROUP BY LS_ID6ORDER BY TABLET_COUNT DESC;Tablet 数多不一定等于数据量大,但可以帮助发现 LS 分布差异,再结合 SSTable 字节数判断。
1-- root@app_tenant2SELECT SVR_IP, TABLET_ID,3 COUNT(*) AS SSTABLE_COUNT,4 ROUND(SUM(SIZE) / POWER(1024,2), 2) AS SSTABLE_MB5FROM oceanbase.GV$OB_SSTABLES6WHERE TABLET_ID = 2002447GROUP BY SVR_IP, TABLET_ID8ORDER BY SSTABLE_MB DESC;多个副本分别统计。某个副本显著偏大时,继续比较表类型、SCN 范围和 Compaction 状态。
1-- root@app_tenant2SELECT SVR_IP, LS_ID,3 COUNT(*) AS SSTABLE_COUNT,4 ROUND(SUM(SIZE) / POWER(1024,3), 2) AS SSTABLE_GB5FROM oceanbase.GV$OB_SSTABLES6GROUP BY SVR_IP, LS_ID7ORDER BY SSTABLE_GB DESC8LIMIT 30;这条 SQL 用来找存储最重的 LS,再回到位置视图确认对应的业务表和分区。
1-- root@app_tenant2SELECT SVR_IP, LS_ID, TABLET_ID,3 COUNT(*) AS SSTABLE_COUNT,4 ROUND(SUM(SIZE) / POWER(1024,2), 2) AS SSTABLE_MB5FROM oceanbase.GV$OB_SSTABLES6GROUP BY SVR_IP, LS_ID, TABLET_ID7HAVING COUNT(*) >= 208ORDER BY SSTABLE_COUNT DESC, SSTABLE_MB DESC9LIMIT 50;20 是排查示例值,不是产品告警线。结合 TABLE_TYPE 和版本参数判断是真积压还是正常状态。
1-- root@sys2SELECT TENANT_ID, TYPE, ZONE, SVR_IP,3 COMPACTION_SCN, UNFINISHED_TABLET_COUNT,4 UNFINISHED_DATA_SIZE5FROM oceanbase.GV$OB_COMPACTION_PROGRESS6WHERE TENANT_ID = 10027 AND UNFINISHED_TABLET_COUNT > 08ORDER BY TYPE, UNFINISHED_DATA_SIZE DESC;没有未完成记录后,再核对租户版本和 Zone 版本,避免因视图刷新时点过早结束观察。
1-- root@sys2SELECT TENANT_ID, SVR_IP, LS_ID, TABLET_ID,3 TYPE, STATUS, INFO4FROM oceanbase.GV$OB_COMPACTION_DIAGNOSE_INFO5WHERE TENANT_ID = 10026 AND STATUS NOT IN ('SUCCESS','FINISH')7ORDER BY SVR_IP, LS_ID, TABLET_ID;状态值以现场版本返回为准。先查看 DISTINCT STATUS,不要照搬过滤条件漏掉新的异常状态。
1-- root@sys2SELECT TENANT_ID, GLOBAL_BROADCAST_SCN, LAST_SCN,3 GLOBAL_BROADCAST_SCN - LAST_SCN AS SCN_GAP,4 IS_ERROR, STATUS5FROM oceanbase.CDB_OB_MAJOR_COMPACTION6WHERE TENANT_ID = 1002;SCN_GAP 为 0 且无错误,说明全局版本已追平;最终还要确认各 Zone 状态一致。
1-- root@sys2SELECT ZONE, BROADCAST_SCN, LAST_SCN,3 BROADCAST_SCN - LAST_SCN AS SCN_GAP,4 IS_MERGING, MERGE_STATUS5FROM oceanbase.CDB_OB_ZONE_MAJOR_COMPACTION6WHERE TENANT_ID = 10027ORDER BY ZONE;任何一个 Zone 仍有差距,都不能把本轮 Major 标记为完成。
1-- root@app_tenant2SELECT SVR_IP,3 SUM(TABLE_TYPE LIKE '%MINI%') AS MINI_COUNT,4 SUM(TABLE_TYPE LIKE '%MINOR%') AS MINOR_COUNT5FROM oceanbase.GV$OB_SSTABLES6GROUP BY SVR_IP7ORDER BY SVR_IP;与操作前快照比较趋势。绝对数量会随写入变化,不能脱离业务流量看单点值。
1-- root@app_tenant2SELECT NOW() AS SAMPLE_TIME, SVR_IP,3 COUNT(*) AS ACTIVE_COUNT,4 ROUND(SUM(SIZE) / POWER(1024,2), 2) AS ACTIVE_MB5FROM oceanbase.GV$OB_SSTABLES6WHERE IS_ACTIVE = 'YES'7GROUP BY SVR_IP8ORDER BY ACTIVE_MB DESC;间隔几分钟连续采样。业务仍在写入时有活跃 MemTable 是正常现象,关键看是否只增不降。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(100 * DATA_DISK_IN_USE / NULLIF(DATA_DISK_CAPACITY,0), 2) AS DATA_USED_PCT,4 DATA_DISK_HEALTH_STATUS5FROM oceanbase.GV$OB_SERVERS6ORDER BY DATA_USED_PCT DESC;若合并完成后空间仍快速增长,应回到大表、分区、租户 Unit 和业务增长继续排查。
1-- root@sys2SELECT UNIT_ID, ZONE, SVR_IP,3 ROUND(DATA_DISK_IN_USE / POWER(1024,3), 2) AS DATA_GB,4 ROUND(LOG_DISK_IN_USE / POWER(1024,3), 2) AS LOG_GB,5 STATUS6FROM oceanbase.GV$OB_UNITS7WHERE TENANT_ID = 10028ORDER BY ZONE, SVR_IP;确认所有 Unit 状态正常,并和操作前基线比较。短时间差异要结合副本迁移和业务写入解释。
1-- root@sys2SELECT NAME, SVR_IP, VALUE3FROM oceanbase.GV$OB_PARAMETERS4WHERE TENANT_NAME = 'app_tenant'5 AND NAME IN ('freeze_trigger_percentage',6 'minor_compact_trigger',7 'major_compact_trigger',8 'major_freeze_duty_time')9ORDER BY NAME, SVR_IP;临时调整过的参数应按变更方案恢复。每台节点回读一致后,再关闭变更单。
1-- root@sys2SELECT TYPE, COMPACTION_SCN,3 COUNT(*) AS SERVER_ROWS,4 SUM(TOTAL_TABLET_COUNT) AS TOTAL_TABLETS,5 SUM(UNFINISHED_TABLET_COUNT) AS UNFINISHED_TABLETS,6 ROUND(SUM(UNFINISHED_DATA_SIZE) / POWER(1024,3), 2) AS UNFINISHED_GB7FROM oceanbase.GV$OB_COMPACTION_PROGRESS8WHERE TENANT_ID = 10029GROUP BY TYPE, COMPACTION_SCN10ORDER BY TYPE, COMPACTION_SCN DESC;这份摘要适合放进巡检或变更记录。若视图已不保留完成行,则同时保存租户和 Zone 版本查询结果。
1-- root@sys2SELECT ZONE, SVR_IP,3 ROUND(DATA_DISK_IN_USE / POWER(1024,3), 1) AS DATA_USED_GB,4 ROUND(100 * DATA_DISK_IN_USE / NULLIF(DATA_DISK_CAPACITY,0), 2) AS DATA_USED_PCT,5 ROUND(LOG_DISK_IN_USE / POWER(1024,3), 1) AS LOG_USED_GB,6 DATA_DISK_HEALTH_STATUS7FROM oceanbase.GV$OB_SERVERS8ORDER BY DATA_USED_PCT DESC;把最满节点、健康状态和采样时间写入记录,后续才能判断空间是否再次逼近阈值。
1-- root@sys2SELECT TENANT_ID, TYPE, ZONE, SVR_IP,3 UNFINISHED_TABLET_COUNT, UNFINISHED_DATA_SIZE4FROM oceanbase.GV$OB_COMPACTION_PROGRESS5WHERE UNFINISHED_TABLET_COUNT > 06ORDER BY TENANT_ID, UNFINISHED_DATA_SIZE DESC;清单不为空时,按租户、Zone、节点继续分派处理。不要用一次手工冻结代替长期的容量治理和参数评估。
排查 OceanBase 转储和合并,先确认卡在 Mini、Minor、Medium 还是 Major,再把范围缩小到租户、Zone、节点、LS 或 Tablet。空间问题也要分清数据盘、日志盘、Unit 配额和业务对象,不能看到磁盘上涨就反复触发合并。
建议收藏这份清单。现场遇到合并变慢、Mini SSTable 积压或节点空间不均时,可以按顺序把状态、对象和物理位置对起来。
更多数据库运维内容可在 ORA100 · DBA100 查看:
微信里搜索小程序 「三笠的百令册」,也可以继续查看这个系列。
ORA100 DBA100