磁盘空间持续增长 merge 未回收磁盘空间

在巡检时发现磁盘空间到达报警阈值,原因是空 region 过多,已经进行了必要的参数设定来减少空region,但是发现磁盘还是没有收缩,使用查询语句发现 TIKV_REGION_STATUS 的 table id 有大量的 NULL,感觉没有生效,请问这个 NULL 会实际占用磁盘空间吗? 以及如何清理呢?

mysql> SELECT
    ->     db_name,
    ->     table_name,
    ->     ROUND(SUM(total_size / cnt), 2) Approximate_Size,
    ->     ROUND(SUM(total_size / cnt / (SELECT
    ->                     ROUND(AVG(value), 2)
    ->                 FROM
    ->                     METRICS_SCHEMA.store_size_amplification
    ->                 WHERE
    ->                     value > 0)),
    ->             2) Disk_Size
    -> FROM
    ->     (SELECT
    ->         db_name,
    ->             table_name,
    ->             region_id,
    ->             SUM(Approximate_Size) total_size,
    ->             COUNT(*) cnt
    ->     FROM
    ->         information_schema.TIKV_REGION_STATUS
    ->     GROUP BY db_name , table_name , region_id) tabinfo
    -> GROUP BY db_name , table_name order by Disk_Size;

+--------------------+---------------------------------------------------+------------------+------------+
| db_name            | table_name                                        | Approximate_Size | Disk_Size  |
+--------------------+---------------------------------------------------+------------------+------------+
....
| NULL               | NULL                                              |      15716867.00 | 1866611.28 |

参数设定
store limit all 100
“enable-placement-rules”: “false”,
pd-server. “key-type”: “table”
“enable-cross-table-merge”: “true”,
tikv coprocessor.split-region-on-table false

还有我也检查了下 gc worker 也是正常的

只有 GC 后,tikv 达到 compaction 触发的条件后,才会实际去释放空间…

auto compaction

如果你狠着急,可以手动的 compaction
https://docs.pingcap.com/zh/tidb/stable/tikv-control#手动-compact-单个-tikv-的数据

最好挑业务不繁忙的时候处理…

哦哦,谢谢,还有问下 TIKV_REGION_STATUS 的 table id 为空代表着啥?

empty region 吧… 没有业务元数据的描述了,只有技术元数据

该主题在最后一个回复创建后60天后自动关闭。不再允许新的回复。