首批通过分布式安全可靠测评,为关键业务系统打造
OceanBase 数据库 V4.x 版本备份报错 4002 的原因和解决方法
更新时间:2026-05-11 09:51
问题现象
备份失败报错 4002,如下图所示。

关键日志信息如下。
observer.log.20250520033322145:[2025-05-20 03:32:20.598392] WDIAG [LIB] ObPool (ob_pool.ipp:37) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=20][errcode=-4016] obj size larger than block size(obj_size_=8072, block_size_=7936)
observer.log.20250520033322145:[2025-05-20 03:32:20.598413] WDIAG [LIB] ObPool (ob_pool.ipp:37) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=20][errcode=-4016] obj size larger than block size(obj_size_=8800, block_size_=7936)
observer.log.20250520033322145:[2025-05-20 03:32:20.598423] WDIAG [LIB] ObPool (ob_pool.ipp:37) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=9][errcode=-4016] obj size larger than block size(obj_size_=10384, block_size_=7936)
observer.log.20250520033322145:[2025-05-20 03:32:20.598438] WDIAG [LIB] ObPool (ob_pool.ipp:37) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=15][errcode=-4016] obj size larger than block size(obj_size_=10200, block_size_=7936)
observer.log.20250520033322145:[2025-05-20 03:32:20.598447] WDIAG [LIB] ObPool (ob_pool.ipp:37) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=9][errcode=-4016] obj size larger than block size(obj_size_=10432, block_size_=7936)
observer.log.20250520033715345:[2025-05-20 03:34:12.817138] WDIAG [STORAGE] pwrite (ob_backup_io_adapter.cpp:401) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=37][errcode=-4002] fail to io manager write(ret=-4002, offset=3401449523, size=0, fd={first_id:-1, second_id:-1, third_id:-1, fd_id:432345564764438528, slot_version:89738, device_handle:0x7fa18c4404c0})
observer.log.20250520033715345:[2025-05-20 03:34:12.817161] WDIAG [STORAGE] flush_buffer_ (ob_backup_file_writer_ctx.cpp:125) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=22][errcode=-4002] failed to write data buffer(ret=-4002, data_buffer_={data:0x7f3ddc004030, pos:0, capacity:16777216})
observer.log.20250520033715345:[2025-05-20 03:34:12.817183] WDIAG [STORAGE] commit_file_ (ob_backup_file_writer_ctx.cpp:160) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=20][errcode=-4002] failed to flush buffer(ret=-4002)
observer.log.20250520033715345:[2025-05-20 03:34:12.817193] WDIAG [STORAGE] close (ob_backup_file_writer_ctx.cpp:86) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=9][errcode=-4002] failed to commit file(ret=-4002)
observer.log.20250520033715345:[2025-05-20 03:34:12.817209] WDIAG [STORAGE] close (ob_backup_ctx.cpp:399) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=16][errcode=-4002] failed to close file writer(ret=-4002)
observer.log.20250520033715345:[2025-05-20 03:34:13.244700] WDIAG [STORAGE] print_access_storage_log_ (ob_i_storage.cpp:861) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=11][errcode=0] access object storage cost too much time: abort (ob_storage.cpp:2812), uri=oss://obbackup/xxxxx/xxxxx/tenant_incarnation_1/1002/data/xxxxxxx/xxxxx/xxxxxxx/xxxxxxx.obbak, size=0 byte, start_time=1747683252817222, cost_ts=427474 us, speed=0.00 MB/s, is_slow=1
observer.log.20250520033715345:[2025-05-20 03:34:13.244927] WDIAG [STORAGE] finish_task_in_order_ (ob_backup_task.cpp:3319) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=64][errcode=-4002] failed to close backup data ctx(ret=-4002, param={job_desc:{job_id:1624, task_id:98, trace_id:YB42AC18832C-00062627CEA85104-0-0}, backup_stage:0, backup_dest:{root_path:"oss://obbackup/xxxxx/xxxxx/tenant_incarnation_1/1002/data", storage_info:{endpoint:"host=xx-xxxxx.ob-dbaas.oss-storage.xxxxx", access_id:"access_id=xxxxxxxxx", extension:"checksum_type=md5", type:"OSS", checksum_type:1, max_iops:0, max_bandwidth:0}}, tenant_id:1002, dest_id:1002, backup_set_desc:{backup_set_id:29, backup_type:{type:1}, min_restore_scn:{val:18446744073709551615, v:3}, total_bytes:0}, ls_id:{id:1001}, backup_data_type:{type:3}, turn_id:1, retry_id:0})
observer.log.20250520033715345:[2025-05-20 03:34:13.245016] WDIAG [STORAGE] process (ob_backup_task.cpp:2735) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=81][errcode=-4002] failed to finish task in order(ret=-4002)
observer.log.20250520033715345:[2025-05-20 03:34:13.245052] INFO [STORAGE] set_result_code (ob_backup_ctx.cpp:1419) [609020][T1002_BACKUP_DA][T1002][YBxxxxx-xxxxx-0-0] [lt=31] set result code(result=-4002, result_code_=-4002, is_set=true)
问题原因
当前版本备份底层新增了 buf_size=0 的防御,而备份可能会写一个 buffer=0 导致备份报错。
问题的风险及影响
备份失败。
适用版本
OceanBase 数据库 V4.x 版本: V4.3.4 GA(oceanbase-4.3.4.0-100000132024103017)之前的版本。
解决方法
升级至问题已修复版本。目前已修复的版本包括 OceanBase 数据库 V4.3.4 GA(oceanbase-4.3.4.0-100000132024103017)及之后的版本。
规避方式
重新发起一次备份。