17.1.2.3 Determination of Safe and Unsafe Statements in Binary Logging 确定安全和不安全的语句在Binary logging里
语句的”安全” 在MySQL 复制,值得是语句以及它的影响是否可以被复制正确的使用基于语句的格式,
如果语句是正确的,我们指的的是语句是安全的,否则我们认为是不安全的。
在一般情况下, 一个语句是安全的如果确定的话, 如果不是就是吧u安全的。
然而,某些不确定的函数可以导致不安全(see Nondeterministic functions not considered unsafe, later in this section)
此外,使用浮点数据类型函数是依赖硬件的 总是认为不安全的。
安全和不安全语句的处理,一个语句是不同的处理依赖语句是否安全,相对于2进制的格式。
当使用基于行的记录时,对待安全或者不安全的语句没有区别。
当使用混合格式记录时,语句比较作为安全是记录的使用基于行的格式,语句被认为是安全的是使用基于语句格式的记录。
当使用基于语句记录时, 语句标记为不安全的 会产生警告的效果,安全的语句通常被记录:
每个语句标记为不安全产生一个警告,以前,如果大量的这样的语句被执行在Master上,
这个会导致产生大量的错误日志,为了防止这种情况,MySQL 提供一个告警的抑制机制 (introduced in MySQL 5.6.7),
主要表现如下:
最近50个ER_BINLOG_UNSAFE_STATEMENT 警告