问题现象
集群合并超时,卡在某一张表上。
关键日志信息。
[2024-07-16 11:32:16.518611] WARN [CLOG] receive_log (ob_partition_log_service.cpp:1281) [95920][1566][Y0-0000000000000000] [lt=32] [dc=0] tenant is out of memory, cannot receive log(ret=-4030, partition_key={tid:1272134953337058, partition_id:0, part_cnt:0})
[2024-07-16 11:32:16.477828] WARN [STORAGE.REPLAY] submit_replay_task (ob_log_replay_engine.cpp:233) [95758][1242][xxxxx-xxxxx] [lt=37] [dc=0] can not replay log now(ret=-4023, log_submit_timestamp=1720909286511273, check_result={ret_code_:-4023, is_out_of_memstore_mem_:true, has_barrier_:false, is_pre_barrier_:false, need_wait_schema_refresh_:false, pkey_:{tid:1272134953390384, partition_id:0, part_cnt:0}, task_info_:{log_id_:1140917, log_type_:32}}, replay_status={ref_cnt_:42, replay_err_info_:{task_info_:{log_id_:18446744073709551615, log_type_:0}, err_ts_:0, err_ret_:0}, last_task_info_:{log_id_:1140916, log_type_:32}, post_barrier_status_:1, pending_task_count_:418, pending_abort_task_count_:0, pending_task_mutator_size_:243914259, eagain_count_:21, eagain_start_ts_:1721100726478787, total_submitted_task_num_:1140912, total_replayed_task_num_:1140494, is_enabled_:true, is_pending_:false, offline_partition_log_id_:18446744073709551615, offline_partition_task_submitted_:false})
问题原因
集群合并超时,查看 __all_zone 只有一个节点的某一个副本的 data_version 不能推上去。根据 table_id 过滤日志有租户内存不足的报错,因租户内存不足造成的 clog 不能同步,进而导致卡合并。
问题的风险及影响
合并超时。
影响租户
影响 OceanBase 数据库中的 SYS 租户和 Oracle 租户以及 MySQL 租户。
适用版本
OceanBase 数据库 V3.x 版本。
解决方法及规避方式
解决非法:
增加租户内存或重启该节点。
规避方式:
尽量给租户足够的内存。