作者:刘春雷​

升级5.1.1 小问题

                         --2021-08-25 春雷


1、前言

TiDB 5.1.1 发版日期:2021 年 7 月 30 日 ,也很长时间了,近期我们新部署的集群使用5.1.1,已有的集群进行了部分集群版本升级至5.1.1。

发现了一些问题,分享下

但性能提升还是很明显的~如果大家要升级的话,要注意下下面的问题~


2、问题汇总

升级5.1.1小问题_版本升级

3、问题1详细

此处使用5.0.3 版本举例,同5.1.1 是一样的

现象: kill tidb xxx ,但连接还是存在,与4.0.2 的立即释放现象 不同

升级5.1.1小问题_sql_02

4.0.2版本的情况:立即就释放了

升级5.1.1小问题_连接数_03


4、问题2详细

升级后,大致看了下监控情况,业务流量正常

DBA没有仔细注意到这个失败的SQL数量及连接数情况

问题:

  • 升级前的连接数几百个,升级后连接数持续增长,到单个实例9w+
  • 导致TiDB实例内存吃满oom,影响了业务
  • 升级后Failed Query OPM 数量增加

【监控情况如下】:

升级5.1.1小问题_连接数_04

分析:

TiDB日志报错:

升级5.1.1小问题_版本升级_05

原因: 用户执行了:set session transaction read only 导致

参考回答:

这个是预期的。这么做的目的,是显式提醒 ‘read_only’ 变量在 TiDB 中并不真正生效(即属于 ‘noop’ 行为)。

举个例子,对于只读业务,我们一般在 MySQL 中设置 ‘read_only’ 系统变量让系统变为只读模式。但在 TiDB 中即便设置了这个变量,集群仍然是可写的。

将来我们计划支持真正的只读模式,到那时 read_only 会被移出 ‘tidb_enable_noop_functions’ 的控制。

参考wiki:

​jdbc连接tidb5.1.1连接报异常 只读场景​​ 开发者&应用适配

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。 【TiDB 版本】:v5.1.1 tikv v5.1.1 pd v5.1.1 tidb v5.1.1 【问题描述】:从v5.0.3 升级到v5.1.1后 spark 报: java.sql.SQLSyntaxErrorException: function READ ONLY has only noop implementa…

处理: set global tidb_enable_noop_functions=1;


5、问题3详细

问题: 5.1.1用管理账号执行show config;命令开始提示权限拒绝了;5.0.2没有这个问题;也就是5.1.1 查看配置需要CONFIG的权限了
报错: ERROR 1227 (42000): Access denied; you need (at least one of) the CONFIG privilege(s) for this operation

其他:5.0.2是可以的

5.0.2的现象:

升级5.1.1小问题_连接数_06

5.1.1情况:

升级5.1.1小问题_版本升级_07