注:以下列表不完整;它没有考虑2010年或以后(大致)的变化。
语句可以标记为不安全的.如果binlog_format=MIXED,不安全的语句将以行格式记录,如果binlog_format= statement将生成警告。
以下类型的子语句目前被标记为不安全的:
可能在slave上返回不同值的系统函数,包括:FOUND_ROWS, GET_LOCK, IS_FREE_LOCK, IS_USED_LOCK, LOAD_FILE, MASTER_POS_WAIT, RAND, RELEASE_LOCK, ROW_COUNT, SESSION_USER, SLEEP, SYSDATE, SYSTEM_USER, USER, UUID, UUID_SHORT。
-
注意:以下非确定性函数未被标记为不安全:
CONNECTION_ID (Query_log_events包含连接号)
CURDATE, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, CURTIME, LOCALTIME, LOCALTIMESTAMP, NOW, UNIX_TIMESTAMP, UTC_DATE, UTC_TIME, UTC_TIMESTAMP (Query_log_event包含时区和语句执行时的时间)
LAST_INSERT_ID(在Intvar_log_event中复制)
-
还要注意,大多数浮点数学函数将返回与硬件相关的结果。我们不认为这样的函数不安全,因为我们只支持使用相同浮点数学的平台之间的复制。
系统变量,一些例外列在混合二进制日志格式.
UDF:由于我们无法控制UDF做什么,它可能正在做一些不安全的事情。
从具有自动递增列的表的子语句进行更新。这是不安全的,因为Intvar_log_event只能保存一个表的自动增量值。
INSERT延迟,因为插入的行可能与并发执行的语句交错。
使用LIMIT进行更新,因为没有指定检索行的顺序。
引用系统日志表的语句,因为这些表的内容在主和从之间可能不同。
非事务性读或写在事务中的事务性读或写之后执行(参见第19.4.3节,“记录事务”).
读取或写入自日志表,以及在同一事务中读取或写入自日志表后执行的所有语句。
以下措施尚未实施:
使用全文解析器插件的语句。错误# 48183)