sync_binlog
sync_binlog
Command-Line Format--sync-binlog=#System VariableNamesync_binlogVariable ScopeGlobalDynamic VariableYesPermitted Values(32-bit platforms)TypeintegerDefault0Min Value0Max Value4294967295Permitted Values(64-bit platforms)TypeintegerDefault0Min Value0Max Value4294967295If the value of this variable is greater than 0, the MySQL server synchronizes its binary log to disk (usingfdatasync()) aftersync_binlogcommit groups are written to the binary log. The default value ofsync_binlogis 0, which does no synchronizing to disk—in this case, the server relies on the operating system to flush the binary log's contents from time to time as for any other file. A value of 1 is the safest choice because in the event of a crash you lose at most one commit group from the binary log. However, it is also the slowest choice (unless the disk has a battery-backed cache, which makes synchronization very fast).
百度翻译:如果这个变量的值大于0,MySQL服务器同步二进制日志到磁盘(使用fdatasync())后sync_binlog犯组写入二进制日志。sync_binlog的默认值是0,并没有同步在这种情况下,磁盘,服务器依赖于操作系统的二进制日志的内容刷新时间为任何其他文件。一个1的值是最安全的选择,因为在一个崩溃的事件,你失去了最一个提交组从二进制日志。然而,它也是最慢的选择(除非磁盘具有电池备份的高速缓存,这使得同步非常快)。sync_binlog=1 or N This makes MySQL synchronize the binary log’s contents to disk each time it commits a transaction 默认情况下,并不是每次写入时都将binlog与硬盘同步。因此如果操作系统或机器(不仅仅是MySQL服务器)崩溃,有可能binlog中最后的语句丢 失了。要想防止这种情况,你可以使用sync_binlog全局变量(1是最安全的值,但也是最慢的),使binlog在每N次binlog写入后与硬盘 同步。即使sync_binlog设置为1,出现崩溃时,也有可能表内容和binlog内容之间存在不一致性。如果使用InnoDB表,MySQL服务器 处理COMMIT语句,它将整个事务写入binlog并将事务提交到InnoDB中。如果在两次操作之间出现崩溃,重启时,事务被InnoDB回滚,但仍 然存在binlog中。可以用--innodb-safe-binlog选项来增加InnoDB表内容和binlog之间的一致性。(注释:在MySQL 5.1中不需要--innodb-safe-binlog;由于引入了XA事务支持,该选项作废了),该选项可以提供更大程度的安全,使每个事务的 binlog(sync_binlog =1)和(默认情况为真)InnoDB日志与硬盘同步,该选项的效果是崩溃后重启时,在滚回事务后,MySQL服务器从binlog剪切回滚的 InnoDB事务。这样可以确保binlog反馈InnoDB表的确切数据等,并使从服务器保持与主服务器保持同步(不接收 回滚的语句)。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。