面试题答案
一键面试- relay - log.info文件内容变化
- 主从切换前:该文件记录着从库当前读取主库二进制日志(binlog)的位置信息,即读取到主库哪个日志文件以及该文件内的偏移量,同时也记录着从库自身中继日志(relay log)的相关信息,如当前正在使用的中继日志文件名及偏移量等。例如,记录类似
Master_log_name=mysql-bin.000003
和Read_master_log_pos=154
等信息,表示从库正在读取主库的mysql-bin.000003
日志文件,读取位置为154字节处。 - 主从切换后:如果原从库晋升为主库,relay - log.info文件中的主库相关信息(如主库地址、端口等)不再有意义,而从库相关的中继日志信息会随着角色转变不再用于中继主库日志。若原主库变为从库,新从库的relay - log.info文件会重新记录新主库的二进制日志位置信息,以及自身新的中继日志相关信息,开始从新主库指定位置拉取日志并应用。
- 主从切换前:该文件记录着从库当前读取主库二进制日志(binlog)的位置信息,即读取到主库哪个日志文件以及该文件内的偏移量,同时也记录着从库自身中继日志(relay log)的相关信息,如当前正在使用的中继日志文件名及偏移量等。例如,记录类似
- 作用机制
- 正常主从复制时:从库的I/O线程从主库拉取二进制日志并写入中继日志,SQL线程则从中继日志中读取日志并应用到从库数据中。relay - log.info文件用于记录这两个线程的进度,确保在从库重启等情况下,能够从中断的位置继续复制。例如,当从库重启后,I/O线程可以根据relay - log.info中记录的主库日志位置继续拉取日志,SQL线程可以根据记录的中继日志位置继续应用日志。
- 主从切换时:对于新晋升的主库,虽然relay - log.info文件不再用于中继功能,但它记录的原复制状态信息可以作为参考,了解在切换前的复制进度。对于新成为从库的节点,需要重新初始化relay - log.info文件,以指向新主库,开始新的复制过程。
- 保障数据一致性
- 故障恢复场景:在主从切换可能由于主库故障等原因触发。当原主库故障,原从库晋升为主库时,relay - log.info文件记录的原从库复制进度确保了在故障发生前已经拉取并部分应用的日志不会丢失。新从库可以基于此准确地从新主库获取后续日志,避免数据重复或遗漏应用,从而保障数据一致性。
- 切换过程中的一致性:在主从切换过程中,新从库通过relay - log.info记录新主库的日志位置,以同步新主库的最新数据状态。同时,原主库(新从库)停止写入自身binlog并切换到从新主库拉取日志,基于relay - log.info的正确初始化,能够使新的主从架构快速同步数据,达到一致性状态。例如,新从库的I/O线程按照relay - log.info中记录的新主库日志起始位置拉取日志,SQL线程应用这些日志,保证与新主库数据一致。