在复制期间,从服务器会创建几个日志,以保存从主服务器中继到从属服务器的二进制日志事件,并记录有关中继日志中当前状态和位置的信息。在此过程中使用三种日志类型,在此处列出。
1、relay log
该中继日志包括的事件是从主的二进制日志读取的,中继日志中的事件由SQL线程在从属服务器上执行回放。
中继日志文件与二进制日志文件具有相同的格式,可以使用mysqlbinlog读取。
默认情况下,中继日志存在于从库的datadir目录下,且日志文件是以从库服务器主机名开头的连续序列号创建的,并通过索引文件来跟踪当前使用的中继日志文件。例如:
如果中继日志文件名使用默认的基于主机名命名的方式,在设置复制后又更改从服务器的主机名可能会导致复制失败。可能会出现如下报错信息:
Failed to open the relay log and Could not find target log during relay log initialization.
如果你预计到以后从服务器的主机名可能会更改,那么一开始你完全可以通过relay_log和relay_log_index参数来显式地指定中继日志的文件名,这样可不受服务器主机名的约束。
从库存在以下条件时,会触发中继日志文件的切换:
·每次启动IO线程;
·清除日志的操作:flush logs;
·当前中继日志文件过大,超过了max_relay_log_size或max_binlog_size参数指定的大小
2、master.info
该文件主要记录从库的状态以及连接到主库的配置信息,比如主机名,登录凭据和复制进度坐标的信息。以纯文本的形式存在,可直接cat查看。
该文件一般默认存在于从库的datadir目录下,也可以通过master_info_repository参数指定将日志信息写入到表中而不是文件中。
该文件记录的信息由slave的IO线程更新维护。
3、relay-log.info
该日志文件主要记录有关从服务器的中继日志中的执行点的状态信息。以纯文本的形式存在,可直接cat查看。
该文件一般默认存在于从库的datadir目录下,也可以通过relay_log_info_repository参数指定将日志信息写入到表中而不是文件中。
该文件记录的信息由slave的sql线程更新维护。
说明
master.info和relay-log.info这两个状态日志包含的信息类似于“show slave status”语句输出中所显示的信息。这两个文件记录的信息对于从库来说是十分重要的,由于状态日志存储在磁盘上,因此它们在从属服务器关闭后仍可生存。下次从属服务器启动时,它将读取两个日志,以确定复制进度:从主库读取二进制日志的进度以及处理自己的中继日志的进度。
有关master.info和relay-log.info文件中每一行代表的含义,可以阅读官方文档的第17.2.2.2节。