我正在浏览sync_binlog 参数的文档,发现sync_binlog 参数文档中存在差异。
这里的文档http://dev.mysql.com/doc/refman/5.6/en/replication-options-binary-log.html#sysvar_sync_binlog说:
值 1 是最安全的选择,因为在发生崩溃时,您最多会从二进制日志中丢失一个提交组。
这本质上意味着数据将被更新,但可能不在二进制日志中。
但是,在这里的二进制日志文档http://dev.mysql.com/doc/refman/5.6/en/binary-log.html说:
例如,如果您使用 InnoDB 表,并且 MySQL 服务器处理一个COMMIT
语句,它会按顺序将许多准备好的事务写入二进制日志,同步二进制日志,然后将该事务提交到 InnoDB。如果服务器在这两个操作之间崩溃,事务会在重启时被 InnoDB 回滚,但仍然存在于二进制日志中。
这实质上意味着事务首先写入 binlog,然后提交到 InnoDB,因此在发生崩溃的情况下,该行有可能在 binlog 中但在数据库中不存在。
我已经在 MySQL 论坛中提出了这个问题并等待回复,但如果使用过此参数的人能详细说明以下两种行为中哪一种是正确的,我将不胜感激?