17.2.2.1 The Slave Relay Log Slave中继日志中继日志, 像binary log,有一组文件组成包含events 描述数据库的修改,和一个index文件包含所有使用过的relay log文件的名字术语"relay log file"通常表示一个但都数字文件包含数据库events.Relay log 文件有相同的格式和binary log 文件可以使用mysqlbinlog读取默认情况下,relay log 文件名格式为host_name-relay-bin.nnnnnn 在数据目录,host_name 是slave server host的名字 nnnnnn 是一个序列号。slave 使用一个index file 来跟踪 relay log files 当前在使用的默认的 relay log index file 名字是 host_name-relay-bin.index在数据目录下默认的relay log 文件和relay log index 名字可以覆盖如果一个slave 使用默认的基于主机名的relay log file names,改变一个slave的host name 在复制已经被设置后会导致复制失败由于打开relay log文件失败,不能找到目标日志如果你预期 一个slave的host name 可能将来被改变,你可以避免这个问题通过使用 --relay-log and --relay-log-index options 来指定relay log文件名 当你在初始化设置slave的时候这样会让名字于server hostname 无关如果你遇到的问题在复制已经开始,一种方式是停止server,谋划旧的日志到新的relay log index file,然后重启slave 在一个Unix 系统,可以这么做:shell> cat new_relay_log_name.index >> old_relay_log_name.indexshell> mv old_relay_log_name.index new_relay_log_name.indexA slave server creates a new relay log file under the following conditions: 一个slave server 创建一个新的relay log 在下面的条件:1. 每次 I/O thread 启动2. 当日志被刷新,比如 FLUSH LOGS or mysqladmin flush-logs. 3.当当前的relay logfile的大小变的太大,mysql> show variables like '%max_relay_log_size%';+--------------------+-------+| Variable_name | Value |+--------------------+-------+| max_relay_log_size | 0 |+--------------------+-------+1 row in set (0.00 sec)1.如果 max_relay_log_size 值是大于0, 那是最大的relay log file size2.如果值为0,max_binlog_size 决定了relay log files的最大值mysql> show variables like '%max_binlog_size%';+-----------------+-----------+| Variable_name | Value |+-----------------+-----------+| max_binlog_size | 536870912 |+-----------------+-----------+1 row in set (0.00 sec)mysql> exitByeVsftp:/data01/mysql# cat /etc/my.cnf | grep max_binlog_sizemax_binlog_size = 512MVsftp:/data01/mysql#SQL thread 自动删除每个relay log文件一旦他已经执行了所有的events 不再被需要。这里没有机制对于删除relay log 因为SQL thread 做这个事情