ob 归档日志超时

环境:生产环境社区版oceanbase4.3.5.1版本
问题:日志级别:ERROR,关键字=,错误码=4012,日志详情=[2025-08-15 10:15:35.665040] ERROR [USING_LOG_PREFIX] handle_archive_ret_code_ (ob_archive_sender.cpp:797) [476161][T1008_ArcSender][T1008][YB420ACB0122-0006338213C2C1CC-0-0] [lt=12][errcode=-4012] Timeout(msg=“archive push log time out”, ret=-4012, archive_dest_id=1001, archive_round=1) 。
这个问题是需要如何处理和优化呢

3 个赞

集群什么拓扑结构?只有这一个租户归档超时吗?

使用obdiag收集下归档信息发下

obdiag gather scene run --scene=observer.log_archive [options]
https://www.oceanbase.com/docs/common-obdiag-cn-1000000003607727

另外发下包含上面报错这个时段的日志详情吧 rootservice.log 及observer.log 压缩发下

3 个赞

超时具体原因

3 个赞

obdiag gather scene run --scene=observer.log_archive --from “2025-08-15 10:15:00” --to “2025-08-15 10:25:00”
obdiag version: 3.6.0
gather_scenes_run start …
[ERROR] Failed to find yaml task path: /root/.obdiag/gather/tasks/
[ERROR] ‘NoneType’ object is not subscriptable
[ERROR] command failed. Please contact OceanBase community. e: ‘NoneType’ object is not subscriptable
Trace ID: 68c11b00-7986-11f0-9c32-507c6f0a804a
If you want to view detailed obdiag logs, please run: obdiag display-trace 68c11b00-7986-11f0-9c32-507c6f0a804a 我配置完以后执行命令报错,为啥还需要task path配置文件呢,文档中没有看到
observer.log (954.6 KB)
rootservice.log (15.1 MB) ,如果增加任务超时时间的话,这个是需要手动重启任务还是热更新呢

3 个赞

我先看看日志
没有配置文件使用,可以使用这样的命令

3 个赞

这样也是同样报错的,这个我也试过了,我有config配置文件,没有找到这个task日志文件,集群是三节点模式,别的节点也有这个日志,和这个类似

2 个赞

可能是没有完成对应的初始化 麻烦执行下source /opt/oceanbase-diagnostic-tool/init.sh

3 个赞

这个已经执行过了,依然还是这个报错



2 个赞

你将包含这个报错信息的完整的observer.log压缩发下吧
另外上面的第一个问题 集群什么拓扑结构?只有这一个租户归档超时吗?

这些查下,io超时时间可以调整再试下

 show parameters like '%version_comment%'\G; 
 show parameters like '%archive_lag_target%'\G; 
 show parameters like '%log_archive_concurrency%'\G; 
alter system set _object_storage_io_timeout = '60s' tenant = 'xxx';

2 个赞

\cp -r /opt/oceanbase-diagnostic-tool/plugins/* ~/.obdiag

执行下这个

1 个赞

大概率是归档介质有问题,是否有限速?空间是否达到限制了?

[2025-08-15 10:15:35.664963] WDIAG [ARCHIVE] push_log_ (ob_archive_sender.cpp:722) [476161][T1008_ArcSender][T1008][YB420ACB0122-0006338213C2C1CC-0-0] [lt=9][errcode=-4012] push log failed(ret=-4012)
[2025-08-15 10:15:35.664969] WDIAG [ARCHIVE] archive_log_ (ob_archive_sender.cpp:604) [476161][T1008_ArcSender][T1008][YB420ACB0122-0006338213C2C1CC-0-0] [lt=5][errcode=-4012] push log failed(ret=-4012, task={status:1, tenant_id:1008, id:{id:1}, station:{key:{incarnation:1, dest_id:1001, round:1}, lease:{lease_id:1, lease_start_ts:0, lease_end_ts:0}}, piece:{interval_us:86400000000, genesis_scn:{val:1752696006021581000, v:0}, piece_id:30, base_piece_id:1}, start_offset:{lsn:13581569214}, end_offset:{lsn:13581755451}, max_scn:{val:1755224115293438002, v:0}, file_id:0, file_offset:-1, data:G, data_len:186237, this:0x7f1d91b1a030})

集群是三个zone,每个zone有一台机器。
有两个机器超时,看起来报错都是同一个租户超时。
如果修改了我的io超时时间,还需要停止任务重启任务吗,还是可以热更新
observer.log.gz (33.6 MB)


备份空间无限制,限速的没有设置

改下io超时时间,重新发起任务试下

这个observer.log传的不对,没有相关的报错,这个时间是2025-08-13 10:xx:xx 对不上,和之前的报错时间对不上

observer.log.gz (33.4 MB)
这个日志

_object_storage_io_timeout这个参数在文档中没有找到啊,这个有文档吗

没有文档,隐藏参数基本都没有批露出来

如何查看这个参数我设置的是多少呢,我没查到

sys租户查询

select * from GV$OB_PARAMETERS where name like '%_object_storage_io_timeout%';