作者:陈厚强​



背景

新搭建tidb集群,导入数据时遇到报错: ERROR 8004 (HY000): Transaction is too large, size: 104857651,需要修改参数txn-total-size-limit;但通过tiup edit-config修改参数,并reload tidb成功后,参数依旧没生效。



遇到的问题

1、使用tiup修改参数如下:

tiup修改参数显示成功但不生效_log日志

2、reload tidb节点,显示success

tiup修改参数显示成功但不生效_数据库_02

3、查看参数修改未生效

tiup修改参数显示成功但不生效_无法安装_03

4、查看tidb.log启动日志,txn-total-size-limit参数还是初始值

tiup修改参数显示成功但不生效_数据库_04



分析问题

1、检查tidb节点的conf目录下的文件

通过检查<tidb_deploy>/conf下的tidb.toml文件,发现参数是修改后的,说明tiup将修改的参数传给tidb节点了。

2、检查tidb.log日志

检查tidb.log日志,发现tidb并未重启,因此修改后的参数没有生效。

3、手动关闭tidb节点

使用tiup cluster stop titest -R tidb命令关闭数据库,发现数据库并未关闭。

4、检查拓扑文件tiup.yaml

通过检查拓扑文件,发现user: tidb跟tiup的安装用户不是同一个用户,tiup安装用户为root,拓扑文件中配置的是tidb,导致tiup无法关闭tidb节点。

tiup修改参数显示成功但不生效_数据库_05

tiup修改参数显示成功但不生效_log日志_06



总结

tiup修改参数成功,但reload并未生效的原因是:tiup的安装用户跟拓扑文件中user: tidb不是同一个用户,导致tiup无法关闭tidb节点。将tiup的安装用户跟拓扑文件中user: tidb保持一致后,tiup参数修改成功,并且reload完成后,参数生效,此问题得以解决。



建议

1、tiup cluster reload命令加上stop的校验,若stop失败,则reload报错。

2、tiup cluster deploy加上tiup安装用户和拓扑文件中user: tidb的比较,若不同,则报错无法安装。