背景
新搭建tidb集群,导入数据时遇到报错: ERROR 8004 (HY000): Transaction is too large, size: 104857651,需要修改参数txn-total-size-limit;但通过tiup edit-config修改参数,并reload tidb成功后,参数依旧没生效。
遇到的问题
1、使用tiup修改参数如下:
2、reload tidb节点,显示success
3、查看参数修改未生效
4、查看tidb.log启动日志,txn-total-size-limit参数还是初始值
分析问题
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修改参数成功,但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的比较,若不同,则报错无法安装。