开发者社区 问答 正文

mysql binlog日志问题---canal storeValue

canal连接两个数据库实例,有一个数据库有问题,根据canal打印的storeValue有如下区别: 好的库:

应该是个二进制文件 storeValue: "\b\223\207\261z\020\001P\000b\260\f\0220\b\000\020\373\377\377\377\377\377\377\377\377\001\032\

不好的库: 打印出sql语句了 storeValue: "\020\002Z\231\002update t_crm_multi_account\n SET sys_status = 3,\n \n \n business_status = 1

哪位大神知道是什么问题吗?感觉是数据库binlog配置问题

原提问者GitHub用户ferry1376122

展开
收起
古拉古拉 2023-05-08 15:17:17 169 分享 版权
3 条回答
写回答
取消 提交回答
  • 问题找到了:binlog打开的模式问题   mysql默认没有开启binlog,修改mysql的my.cnf文件,添加如下配置,注意binlog-format必须为row,因为binlog如果为 STATEMENT或者MIXED,则binlog中记录的是sql语句,不是具体的数据行,canal就无法解析到具体的数据变更了 log-bin=E:/mysql5.5/bin_log/mysql-bin.log binlog-format=ROW server-id=123

    原回答者GitHub用户ferry1376122

    2023-05-09 18:10:09
    赞同 展开评论
  • 随心分享,欢迎友善交流讨论:)

    可以看出,好的库打印出的storeValue是二进制文件,而坏的库打印出的storeValue是SQL语句。这可能是因为好的库启用了二进制日志(binlog),而坏的库没有启用二进制日志,导致canal无法获取到二进制日志的内容,只能获取到SQL语句。建议检查坏的库的binlog配置,并确保已经启用了binlog。另外,也可以查看canal的配置文件,确保已经开启了获取binlog的功能。

    2023-05-08 15:59:40
    赞同 展开评论
  • binlog日志中storevalue字段的内容是二进制格式的,并且它表示一条DML语句执行时所修改的行数据,具体的内容需要根据不同的表结构和数据类型来解析。因此,storevalue字段的内容并不能直接用于判断问题所在。建议您从其他方面入手,如检查数据库实例的配置、运行状态、日志等信息,以确定问题的原因和解决办法。

    2023-05-08 15:59:41
    赞同 展开评论