INSERT/UPDATE/DELETE被解析为Query或DDL语句?
出现这类情况主要原因为收到的binlog就为Query事件
- binlog格式为非row模式,通过show variables like 'binlog_format’可以查看. 针对statement/mixed模式,DML语句都会是以SQL语句存在
- mysql5.6+之后,在binlog为row模式下,针对DML语句通过一个开关(binlog-rows-query-log-events=true, show variables里也可以看到该变量),记录DML的原始SQL,对应binlog事件为RowsQueryLogEvent,同时也有对应的row记录.
- ps. canal可以通过properties设置来过滤:canal.instance.filter.query.dml = true