应用程序报SAVEPOINT is not supported when binlog is enabled

【TiDB 使用环境】测试
【TiDB 版本】6.5.3
【操作系统】CentOS Linux release 7.6.1810 (Core)
【部署方式】VMWARE 虚拟机
【集群数据量】60G
【集群节点数】4
【问题复现路径】应用程序报错

开发人员反馈:
Cause: java.sql.SQLException: SAVEPOINT is not supported when binlog is enabled
不太理解这个报错,是要关闭BINLOG吗?

savepoint不支持与binlog一起使用
https://docs.pingcap.com/zh/tidb/v6.5/sql-statement-savepoint/

1 个赞

1 个赞

那就是得把BINLOG关闭了

为什么 TiDB 不支持在启用 binlog 的情况下使用 SAVEPOINT

TiDB 在启用 binlog 的情况下不支持 SAVEPOINT 功能,这主要是由于技术实现上的限制。SAVEPOINT 是 TiDB v6.2.0 引入的功能,它允许在事务内设置保存点,以便在需要时可以回滚到该保存点而不必终止整个事务。然而,当 TiDB Binlog 组件启用时,这一功能无法正常工作。

限制原因

  1. 技术实现冲突:TiDB Binlog 组件在记录事务变更时,无法正确处理事务内部的部分回滚操作。当使用 ROLLBACK TO SAVEPOINT 回滚到某个保存点时,TiDB Binlog 无法准确捕获和复制这种部分回滚的行为。
  2. 数据一致性问题:在分布式环境中,保证 SAVEPOINT 操作与 binlog 复制的一致性非常复杂。如果允许同时使用这两个功能,可能会导致源数据库和目标数据库之间的数据不一致。
  3. TiDB Binlog 已被弃用:值得注意的是,TiDB Binlog 组件已在 TiDB v8.4.0 版本中被正式弃用,官方推荐使用 TiCDC 和 BR (Backup & Restore) 作为替代方案进行数据复制和备份恢复。

TiDB Binlog 已经被废弃。根据提供的信息,TiDB Binlog 的废弃经历了以下阶段:

  1. 在 TiDB v7.5.0 版本中,TiDB Binlog 复制工具被标记为废弃(deprecated),这标志着其逐步淘汰的开始。
  2. 在 TiDB v8.4.0 版本中,TiDB Binlog 复制工具被完全移除,标志着其正式废弃。

官方建议换ticdc

此话题已在最后回复的 7 天后被自动关闭。不再允许新回复。