“ERROR 4012 (HY000): Timeout”在oceanbase使用中,出现频率较高,进行参数设置后,该问题会得到有效解决,下面以停止服务报错处理过程进行展示。

0. ENV

CentOS7.6;
OceanBase 2.2.75
1. 现象

执行停止服务报错:"ERROR 4012 (HY000): Timeout"
obclient> alter system stop server "192.168.80.20:5882" zone "zone1";
ERROR 4012 (HY000): Timeout
obclient> select svr_ip,svr_port, id,zone,inner_port,status,usec_to_time(stop_time),usec_to_time(start_service_time),usec_to_time(last_offline_time) from __all_server;
+---------------+----------+----+-------+------------+--------+----------------------------+----------------------------------+---------------------------------+
| svr_ip | svr_port | id | zone | inner_port | status | usec_to_time(stop_time) | usec_to_time(start_service_time) | usec_to_time(last_offline_time) |
+---------------+----------+----+-------+------------+--------+----------------------------+----------------------------------+---------------------------------+
| 192.168.80.20 | 2882 | 1 | zone1 | 2881 | active | 1970-01-01 08:00:00.000000 | 2021-07-13 15:50:00.398462 | 1970-01-01 08:00:00.000000 |
| 192.168.80.20 | 3882 | 2 | zone2 | 3881 | active | 1970-01-01 08:00:00.000000 | 2021-07-13 15:49:58.450628 | 1970-01-01 08:00:00.000000 |
| 192.168.80.20 | 4882 | 3 | zone3 | 4881 | active | 1970-01-01 08:00:00.000000 | 2021-07-13 15:49:59.927852 | 1970-01-01 08:00:00.000000 |
| 192.168.80.20 | 5882 | 7 | zone1 | 5881 | active | 2021-07-15 16:52:11.684498 | 2021-07-15 08:53:26.672946 | 1970-01-01 08:00:00.000000 |
| 192.168.80.20 | 6882 | 8 | zone2 | 6881 | active | 1970-01-01 08:00:00.000000 | 2021-07-15 08:53:51.181616 | 1970-01-01 08:00:00.000000 |
| 192.168.80.20 | 7882 | 9 | zone3 | 7881 | active | 1970-01-01 08:00:00.000000 | 2021-07-15 08:53:58.629463 | 1970-01-01 08:00:00.000000 |
+---------------+----------+----+-------+------------+--------+----------------------------+----------------------------------+---------------------------------+
6 rows in set (0.00 sec)
复制
当前已经执行,usec_to_time(stop_time)中时间已经更新,只是timeout设置时间较短。
2. 原因

sql响应超时时间设置太短了,所以当sql执行需要一定时间时就会报错4012
查看参数:
obclient> show variables like '%timeout%';
+---------------------+---------------------+
| Variable_name | Value |
+---------------------+---------------------+
| connect_timeout | 10 |
| interactive_timeout | 28800 |
| lock_wait_timeout | 31536000 |
| net_read_timeout | 30 |
| net_write_timeout | 60 |
| ob_pl_block_timeout | 9223372036854775807 |
| ob_query_timeout | 10000000 |
| ob_trx_idle_timeout | 120000000 |
| ob_trx_lock_timeout | -1 |
| ob_trx_timeout | 100000000 |
| wait_timeout | 28800 |
+---------------------+---------------------+
11 rows in set (0.00 sec)
复制
3. 解决方法

1) 租户下设置全局变量
# 租户下设置,防止超时
obclient> set global ob_query_timeout=36000000000;
obclient> set global ob_trx_timeout=36000000000;
复制
ob_query_timeout用于设置查询超时时间,单位是微秒;
ob_trx_timeout用于设置事务超时时间,单位为微秒。
两个参数有GLOBAL和SESSION两种级别:
global参数的话是对全局session生效,但是不包括本次链接,重新登录生效;
如果不加global,就是仅对本次session生效,退出登录还是原来的值。
2) 退出重新登录
[admin@ob6 ~]$ mysql -h127.1 -uroot@sys -P2881 oceanbase -A
复制
3) 再次执行其它stop server正常
obclient> alter system stop server "192.168.80.20:6882" zone "zone2";
复制
4. 小结

执行stop server操作时,当前已经执行,usec_to_time(stop_time)中时间已经更新,只是timeout设置时间较短,通过设置全局超时参数ob_query_timeout、ob_trx_timeout,重新登录会话后,再次执行语句不会再报错。
不足之处,还望抛砖。
作者:王坤,微信公众号:rundba,欢迎转载,转载请注明出处。
如需公众号转发,请联系wx: landnow。
文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1899次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
872次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
605次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
497次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
491次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
466次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
411次阅读
2025-04-07 09:44:54
OceanBase 接入 MCP 架构:贯通数据孤岛,释放 AI 创新潜能
OceanBase数据库
399次阅读
2025-03-28 15:32:52
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
365次阅读
2025-04-17 17:02:24
天津市政府数据库框采结果公布!
通讯员
361次阅读
2025-04-10 12:32:35
热门文章
0172.K pod日志提示pod has unbound immediate PersistentVolumeClaims解决
2022-05-29 14803浏览
Ubuntu22.04上安装K8s1.24.2--3节点环境安装(一主两从)
2022-07-26 11537浏览
0054.C 使用offset explorer 2.1连接kerberos加密kafka
2021-06-15 10186浏览
0180.K kubelet.go 2466 Error getting node not found
2022-07-20 9105浏览
0177.U ubuntu server 22.04双网卡绑定
2022-06-28 8040浏览