关键字
TiDB
适用产品
问题描述
在版本升级时执行数据库升级脚本报错,提示:Transaction is too large, size: xxxxxxxx。
问题影响
无法正常执行数据库脚本,升级无法继续
问题原因
TiDB 在4.0版本以后将参数:txn-total-size-limit 配置项的默认值由 1GB 调整为 100MB,当批量提交的事务太大会导致报错
解决方案
临时调大 txn-total-size-limit 限制值,等升级完成后再改回初始配置
注意修改后需要重启 TiDB 相关服务使配置生效,请在非业务时间段操作
1.备份历史配置信息,集群部署节点执行
查看集群名称:
tiup cluster list
备份当前集群配置,输出到备份文件,以 tidb-aishu 集群名称为例,名称以实际环境为准:
tiup cluster show-config tidb-aishu > tidb-cluster-bak.yaml

2.修改集群配置文件,增加 TiDB-Server 相关配置,集群部署节点执行,以 tidb-aishu 集群名称为例,名称以实际环境为准:
tiup cluster edit-config tidb-aishu
在 server_configs 段的 tidb 中增加配置内容(示例为1G限制值),如果没有此段则,则直接在配置末尾增加此段配置,以新增为例:


在编辑完成后冒号wq保存退出,配置格式正确,会提示是否保存配置,按y保存:

如果提示错误请不要保存,检查之前配置是否有误,检查无问题后再保存:

3.重载新配置,需要滚动重启 TiDB 相关服务,以 tidb-aishu 集群名称为例,名称以实际环境为准:
tiup cluster reload tidb-aishu -R tidb

4.升级脚本执行完成后,可以按照上面的步骤将限制值还原:
tiup cluster edit-config tidb-aishu
配置了参数情况下:

取消该项参数:

重载新配置
tiup cluster reload tidb-aishu -R tidb
更多信息
https://docs.pingcap.com/zh/tidb/stable/maintain-tidb-using-tiup#
https://docs.pingcap.com/zh/tidb/stable/sql-statement-load-data#