什么是中继⽇志
从服务器I/O线程将主服务器的⼆进制⽇志读取过来记录到从服务器本地⽂件即relay-log⽇志中,
然后从服务器SQL线程会读取relay-log⽇志的内容并应⽤到从服务器,从⽽使从服务器和主服务器的数据保持⼀致1、slave服务器io线程---->读取---->master服务器⼆进制⽇志(binlog) 读取过来后,写⼊到从服务器的 relay-log⽇志 中保存
2、slave服务器sql线程---->读取----->slave服务器relay-log⽇志 读取后重新执⾏⼀遍sql.
[root os~]>show variables like '%relay%';
#结果
+---------------------------+----------------------------------+| Variable_name | Value |
+---------------------------+----------------------------------+| max_relay_log_size | 0 || relay_log | relay-mysql |
| relay_log_basename | /var/lib/mysql/relay-mysql || relay_log_index | /var/lib/mysql/relay-mysql.index || relay_log_info_file | relay-log.info || relay_log_info_repository | FILE || relay_log_purge | ON || relay_log_recovery | ON || relay_log_space_limit | 0 || sync_relay_log | 10000 |
| sync_relay_log_info | 10000 |
+---------------------------+----------------------------------+max_relay_log_size
relay log 允许的最⼤值,如果该值为0,则默认值为 max_binlog_size (1G);如果不为0,则 max_relay_log_size 则为最⼤的relay_log⽂件⼤⼩;relay_log
定义 relay_log 的位置和名称,如果值为空,则默认位置在数据⽂件的⽬录;
relay_log_index
定义 relay_log 索引的位置和名称,记录有⼏个 relay_log ⽂件,默认为2个cat /var/lib/mysql/relay-mysql.index#结果
./relay-mysql.000241./relay-mysql.000242relay_log_info_file
定义 relay-log.info 的位置和名称
relay-log.info 记录 master 主库的 binary_log 的恢复位置和 slave库 relay_log 的位置;[root@localhost ~]# cat /var/lib/mysql/relay-log.info#结果
./relay-mysql.00024219421766
mysql-bin.00009434300252
relay_log_purge
是否⾃动清空中继⽇志,默认值为1(启⽤);
relay_log_recovery
当slave从库宕机后,假如relay-log损坏了,导致⼀部分中继⽇志没有处理,则⾃动放弃所有未执⾏的relay-log,并且重新从master上获取⽇志,这样就保证了relay-log的完整性。默认情况下该功能是关闭的,将relay_log_recovery的值设置为 1时,可在slave从库上开启该功能,建议开启;
sync_relay_log
当设置为1时,slave的I/O线程每次接收到master发送过来的binlog⽇志都要写⼊系统缓冲区,然后刷⼊relay log中继⽇志⾥,这样是最安全的,因为在崩溃的时候,你最多会丢失⼀个事务,但会造成磁盘的⼤量I/O;
当设置为0时,并不是马上就刷⼊中继⽇志⾥,⽽是由操作系统决定何时来写⼊,虽然安全性降低了,但减少了⼤量的磁盘I/O操作。这个值默认是0,可动态修改;
sync_relay_log_info
这个参数和 sync_relay_log 参数⼀样。
因篇幅问题不能全部显示,请点此查看更多更全内容