statement

优点:

只需要记录SQL语句原文

缺点:

会导致主从库数据不一致的问题

具体示例

比如执行一条update T set update_time=now() where id=1,记录的内容如下。

同步数据时,会执行记录的SQL语句,但是有个问题,update_time=now()这里会获取当前系统时间,直接执行会导致从库与主库的数据不一致。

再比如说,当我们使用DELETE或者UPDATE的时候,指定了LIMIT,但是并没有使用order by,那么最终这条语句在主库和从库上的执行结果可能是不一样的(即使同一个库上面,你执行多次结果可能也不一样)。详见MySQL中limit+order by-查询结果不一致-原因?