sync_relay_log

sync_relay_log :

If the value of this variable is greater than 0, the MySQL server synchronizes its relay log to disk (using fdatasync()) after every sync_relay_log events are written to the 

relay log.

Setting sync_relay_log to 0 causes no synchronization to be done to disk; in this case, the server relies on the operating system to flush the relay log's contents from time to 

time as for any other file.

Prior to MySQL 5.6.6, 0 was the default for this variable. In MySQL 5.6. and later, the default is 10000.

A value of 1 is the safest choice because in the event of a crash you lose at most one event from the relay log. However, it is also the slowest choice (unless the disk has a 

battery-backed cache, which makes synchronization very fast).


如果值>0, MySQL SERVER 同步它的relay log 到磁盘(写入中继日志,使用fdatasync())  在every sync_relay_log events are written to the relay log.)



设置sync_relay_log to 0 导致不同步到磁盘,在这种情况下,server 依赖OS来刷新


当设置为1时,slave的I/O线程每次接收到master发送过来的binlog日志都要写入系统缓冲区,然后刷入relay log中继日志里,这样是最安全的,因为在崩溃的时候,你最多会丢失一个事务,但会造成

磁盘的大量I/O。当设置为0时,并不是马上就刷入中继日志里,而是由操作系统决定何时来写入,虽然安全性降低了,但减少了大量的磁盘I/O操作。

原文地址:https://www.cnblogs.com/hzcya1995/p/13351556.html