首批通过分布式安全可靠测评,为关键业务系统打造
log item too long ret=-4019
更新时间:2024-01-22 01:56
问题描述
卡合并, 单表卡住。
适用版本
OceanBase 数据库 V2.x 和 V3.x 版本。
问题原因
实际单表为 6 亿行, 并且 meta table 中的 size 为实际 500GB 左右。使用宏块数量超过 200W,由于 200W 宏块在 4TB 左右的大小, 进而导致 32M 的 Slog 无法包含所有宏块,超过限制。综合分析,是数据插入离散。导致单个2M宏块实际只有2K的真实数据,导致 400G+ 的数据使用了 200W 个 2M 宏块(4TB)左右的宏块。单表合并卡住日志信息如下:
INFO [STORAGE.REDO] ob_storage_log_writer.cpp:347 [xxxxx][xxxxx][xxxxx-xxxxx-xxxxx-xxxxx] [lt=22] [dc=0] large log item(log_buffer_size_=524288, total_item_size=33599488)
ERROR [STORAGE.REDO] get_log_item (ob_storage_log_writer.cpp:355) [xxxxx][xxxxx][xxxxx-xxxxx-xxxxx-xxxxx] [lt=7] [dc=0] log item too long(ret=-4019, total_item_size=33599488, ObLogConstants::LOG_ITEM_MAX_LENGTH=33554432) BACKTRACE:0xf4ebe0b 0x53069ef 0x5442863 0x544249f 0x5442203 0x5446229 0xabcd3e5 0xabcba17 0xabafa67 0xabac2bc 0xabab869 0xabab02f 0x9e7bc72 0x9e7dae6 0x9ed8a70 0x9ed9b7d 0xa7cf237 0xa1243e0 0xa13040f 0xa12f0fa 0x66ff687 0x53369a4 0x671751e 0xf3cb5f3 0xf3cb44f 0xf66670f
解决方法
解决方法
升级至 OceanBase 数据库企业版 V4.x 版本。
升级至 OceanBase 社区版 V4.x 版本。
应急解决方法
查看表状态,确定表是否为必要表,备份数据之后 drop 表进行合并。
拆分大数据量的表,采用分区表。
应急解决方法:查看表状态,确定表是否为必要表,备份数据之后 drop 表进行合并。