1、我想把“心跳sql:” 修改为 select version(),提示 “心跳SQL不允许使用select,建议为insert/update,定时产生binlog数据”
2、虽然原来心跳sql也可以用,但是我当前环境有一个问题是mysql 设置了 autocommit=OFF,所以心跳的这条语句一直不提交,造成事物积压在那。
3、当前环境 autocommit=OFF 是应用端要求,不让改成 autocommit=ON 我该怎么办......
原提问者Github用户 pengpai2016
针对您的问题,可以考虑以下方案:
您可以将“心跳SQL:”修改为 “INSERT INTO heartbeat_table (time) VALUES (NOW())”等类似的 insert/update 语句。
如果您的 MySQL 设置了 autocommit=OFF,可以在心跳SQL后面加上“COMMIT;”语句,来手动提交事务。
如果您无法更改 MySQL 的 autocommit 设置,可以考虑使用定时任务来执行心跳SQL,比如使用 crontab 或者 Windows 计划任务,来定时执行 insert/update 语句,以达到定时产生 binlog 数据的目的,同时也不会受到 autocommit 设置的影响。
判断逻辑是startwith,可以/* */select * from canal这么搞。。。。不过你心跳不用写的操作意义不大啊,如果单纯为了避免事物积压不如直接关掉。。。。 如果要修改autocommit,只能改canal项目的MysqlEventParser.java里的相关代码了
原回答者Github用户 welyss
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。