TiDB设置tidb_skip_isolation_level_check使得重启后仍然有效

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:V3.0.5
  • 【问题描述】:TiDB设置tidb_skip_isolation_level_check使得重启后仍然有效

请教一下,TiDB如何设置GLOBAL tidb_skip_isolation_level_check,使得TiDB在修改配置或者升级重启后,tidb_skip_isolation_level_check还能够保持设置的值,不用每次重启后都进行 set GLOBAL tidb_skip_isolation_level_check = 1操作。

  1. set global tidb_skip_isolation_level_check = 1 应该是执行一次不会因重启而失效的。麻烦提供下详细的操作步骤。
  2. 可以检查一下 TiDB 以及 TiKV 的日志看有没有相关的报错。

哦,好的。我是调整了tidb.yml和tikv.yml文件,并执行了ansible-playbook rolling_update.yml --tags=tidb和ansible-playbook rolling_update.yml --tags=tikv,然后之前设置的tidb_skip_isolation_level_check就失效了。

我在执行ansible-playbook rolling_update_monitor.yml --tags=tidb之前,使用pause-task命令暂停了DM同步任务,在更新滚动重启之后,使用resume-task想恢复原来的任务,但是失败了,报错是subtask error, 执行了几次都没有成功,查了一下tidb.log发现并没有保持,dm-worker.log中有报错,如下:

但是奇怪的是,一段时间没有管它,我再次查看的时候,发现DM任务又成功变成running 了,这个这么回事? 这个情况这周我已经遇到两次了

不太明白你的意思。tidb_skip_isolation_level_check 参数是通过 SQL:set global tidb_skip_isolation_level_check = 1 设置就可以了。我刚才在 3.0.3 的版本测试过重启是不会丢失的。这个参数不用更新到 tidb.yml 以及 tikv.yml 的。

我的意思是我在通过 SQL: set global tidb_skip_isolation_level_check = 1 设置之后, 调整了tidb.yml中的其他的参数做优化,滚动重启后这个设置失效了。我的理解是执行rolling_update.yml之后,tidb相当于是重新部署然后再重启,所以之前的tidb_skip_isolation_level_check配置失效了,如果直接重启应该配置还是在的,不知道我理解的对不对?

set global tidb_skip_isolation_level_check = 1 会持久化到 TiKV 。应该不会因为 rolling_update 导致的配置丢失。

好的,明白了。那关于DM的暂停与恢复问题呢,这个是什么情况?之前有人遇到过这个问题吗?

麻烦在问题的 DM 日志上面 grep -i 'reset connection failed' 以及 grep -i ' auto resume task' 看下结果 。

grep -i ‘reset connection failed’ 没有找到记录,‘auto resume task’ 在日志中能够找到。 33

DM 版本是哪个 ?

V1.0.2版本的

后面的版本的话,对于这种 bad connection 是会有重试的机制的。后面发现 DM 任务又变成 running 了