开发者社区> 问答> 正文

心跳SQL不允许使用select,建议为insert/update,定时产生binlog数据

1、我想把“心跳sql:” 修改为 select version(),提示 “心跳SQL不允许使用select,建议为insert/update,定时产生binlog数据”

2、虽然原来心跳sql也可以用,但是我当前环境有一个问题是mysql 设置了 autocommit=OFF,所以心跳的这条语句一直不提交,造成事物积压在那。

3、当前环境 autocommit=OFF 是应用端要求,不让改成 autocommit=ON 我该怎么办......

原提问者Github用户 pengpai2016

展开
收起
绿子直子 2023-06-16 15:16:55 42 0
2 条回答
写回答
取消 提交回答
  • 针对您的问题,可以考虑以下方案:

    1. 您可以将“心跳SQL:”修改为 “INSERT INTO heartbeat_table (time) VALUES (NOW())”等类似的 insert/update 语句。

    2. 如果您的 MySQL 设置了 autocommit=OFF,可以在心跳SQL后面加上“COMMIT;”语句,来手动提交事务。

    3. 如果您无法更改 MySQL 的 autocommit 设置,可以考虑使用定时任务来执行心跳SQL,比如使用 crontab 或者 Windows 计划任务,来定时执行 insert/update 语句,以达到定时产生 binlog 数据的目的,同时也不会受到 autocommit 设置的影响。

    2023-06-16 15:31:22
    赞同 展开评论 打赏
  • 判断逻辑是startwith,可以/* */select * from canal这么搞。。。。不过你心跳不用写的操作意义不大啊,如果单纯为了避免事物积压不如直接关掉。。。。 如果要修改autocommit,只能改canal项目的MysqlEventParser.java里的相关代码了

    原回答者Github用户 welyss

    2023-06-16 15:24:39
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
SQL Server云化思考与实践 立即下载
RDS SQL Server CPU高使用率性能优化 立即下载
SQL Server 2017 立即下载