概述
问题描述:
在构建索引时,提示-4064,mysql命令行客户端提示:Lost connection to MySQL server during query;即使是一张非常小的表也是如此。除索引操作外,其他事物操作一切正常
会话参数如下:
ob_query_timeout=1000000000000;
ob_trx_timeout=1000000000000;
ob_trx_idle_timeout=1000000000000;
interactive_timeout=28800;
wait_timeout=28800;
版本信息:2.2.20
问题分析
分析过程:
在7月29日下午添加全局索引时,MySQL返回报错:Lost connection to MySQL server during query;提示超时。
为其他表添加索引时,添加索引动作一直被挂起,直至命令行返回超时。
具体过程:1、查看ob的日志,发现周期性的在重复一个调度任务,根据唯一的trace_id定位到具体SQL,可以看到就是添加索引的语句。
2、查询:select * from __all_virtual_rebalance_task_stat where is_scheduled = ‘YES’ 发现有非常多的rebalace 的任务在执行,is_scheduled字段为YES状态,而且is_replicate字段为No状态,可以判断索引处于构建状态,但是没有到达构建的最终状态。
3、查询:select * from __all_virtual_table表发现并不存在该索引。。
4、定位到时由于索引超时取消创建,但是后台的构建任务没有被回退清理导致
解决
暂时解决方案:
1、禁止构建全局索引。
2、启动强制切换rs来暂时恢复
- ALTER TENANT sys PRIMARY_ZONE=’’; --设置sys租户的zone,使其切换
- ALTER SYSTEM SWITCH REPLICA LEADER PARTITION_ID=‘0%0@1099%’ SERVER=‘IP:2882’。–将所有的核心表切主
根本解决方案:
集群升级最新版本