当binlog_format设置为STATEMENT时,MySQL从属实例可以为同一ID具有不同的行值,并且我们插入以下内容:
insert into foo values(CURRENT_TIMESTAMP)
据我了解,如果复制滞后,则从属读取SQL语句并执行该语句,这可能导致同一行的差异.对还是错 ?
如何避免这种情况?
谢谢.
解决方法:
您的方法在语句级复制中是绝对安全的. TIMESTAMP写入二进制日志,因此CURRENT_TIMESTAMP的值将在主机和从机上保持一致,即使从机在后面也是如此.出于相同的原因,您也可以安全地使用NOW()函数.
避免使用的函数是SYSDATE(),它将不使用二进制日志中的TIMESTAMP,因此从站的值将表示该语句何时在从站上运行,而不是何时在主表上运行.