问题现象
冻结报错 -4263,如下图所示。

关键日志信息如下。
[2024-11-28 09:47:11.863932] WARN [STORAGE] new_active_memstore (ob_pg_memtable_mgr.cpp:173) [3968482][0][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7] [dc=0] Too many frozen memtables(ret=-4263, get_unmerged_memtable_count_()=7, get_memtable_count_()=7, pkey={tid:1100611139453798, partition_id:184, part_cnt:0})
问题原因
当冻结中的 MemTable 超过 7 个后,就不允许再发起冻结。冻结中的 MemTable 大多可能是因为卡转储导致的,也有可能是因为转储慢导致的。
问题的风险及影响
集群不能冻结。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V2.x、V3.x 版本。
解决方法
首先排查是否有卡转储发生,可以通过 租户 MemStore 内存满问题排查 进行排查。
如果转储没问题,可以排查否有大量业务导致冻结的速度大于转储的速度,可以适当调整以下参数。
将
freeze_trigger_percentage调大,降低冻结转储的次数。将
minor_merge_concurrency调大,增加转储的线程数加快转储。调整隐藏参数
_enable_parallel_minor_merge,打开并行转储。
规避方式
根据业务配置合理的转储参数。