kundb调整mgr大事务提交最大值

  其他常见问题
内容纲要

概要描述


kundb执行大事务sql报错 Error on observer while running replication hook 'before_commit'.

tail -f /vdir/mnt/disk1/kundb1/kundbdata/error.log 日志报错
Plugin group_replication_ reported: 'Error on session 797074. Transaction of size 3112288816 exceeds specified limit 2147483647. To increase the limit please adjust group_replication_transaction_size_limit option.

版本:kundb-2.1.8-final

详细介绍


这个错误是 MySQL Group Replication(组复制)插件抛出的,错误表明:事务大小超过了组复制允许的最大限制。

  • 事务大小:2610251987 字节(约 2.43GB)。
  • 限制阈值:2147483647 字节(约 2GB,即 2³¹ -1,这是 32 位有符号整数的最大值)。
  • 触发原因:单个事务生成的二进制日志(binlog)或写集(writeset)超过了组复制的限制。

Group Replication 对单个事务的大小有限制,主要出于以下考虑。

  • 复制性能:大事务会导致复制延迟,影响集群整体吞吐量;
  • 内存消耗:事务需在各节点间同步,过大的事务可能导致节点内存溢出;
  • 故障恢复:大事务在故障恢复时可能耗时过长,甚至导致节点崩溃。

所以只能改参数了。

这里的参数前面加了loose,为什么呢?

group_replication_transaction_size_limit:属于 “严格模式” 参数。

  • 若 MySQL 未加载组复制插件(group_replication),启动时会因识别到未知参数报错,导致服务无法启动。
  • 典型场景:初次配置组复制,还未启用插件就写入该参数到 my.cnf,重启数据库会失败。

loose_group_replication_transaction_sizelimit:带 loose 前缀,是 “宽松模式” 参数。

  • 即使未加载组复制插件,MySQL 也会忽略该参数,正常启动服务 。
  • 优势:方便在配置文件中提前预填组复制参数,无需严格区分 “是否已加载插件” 阶段,降低配置门槛。

修改方式:

kundb组件,新增自定义参数 loose_group_replication_transaction_size_limit,值为4294967296,(也就是4G),配置服务并重启。

重启完毕后,执行show variables like 'group_replication_transaction_size_limit'; 看是否修改成功。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。