MST

星途 面试题库

面试题:MariaDB 中relay - log的作用及工作流程

请阐述在MariaDB复制过程中,relay - log扮演着怎样的角色,以及它的具体工作流程是怎样的?
25.0万 热度难度
数据库MariaDB

知识考点

AI 面试

面试题答案

一键面试

relay - log在MariaDB复制中的角色

  1. 数据中转存储:relay - log(中继日志)在MariaDB复制架构中充当从库接收主库二进制日志(bin - log)事件的临时存储地。从库通过I/O线程从主库读取二进制日志事件,并将这些事件写入relay - log中。这使得即使在主从连接短暂中断等情况下,从库也不会丢失主库发送过来的更新信息,保证了数据的连续性和完整性。
  2. 解耦I/O与SQL应用:它将从主库接收日志事件(I/O操作)和在从库上应用这些事件(SQL操作)的过程分离开来。I/O线程专注于快速地从主库获取日志并写入relay - log,而SQL线程则从relay - log中读取日志事件并在从库上按顺序执行,这样可以提高复制的效率和稳定性。

relay - log的工作流程

  1. I/O线程读取
    • 从库的I/O线程建立与主库的连接,向主库请求二进制日志事件。
    • 主库的二进制日志转储线程开始向从库I/O线程发送二进制日志事件。
    • I/O线程接收这些事件,并将它们写入relay - log文件中。每个relay - log文件都有一个编号,如relay - log.000001relay - log.000002等,当一个文件写满时会自动切换到下一个文件。
    • I/O线程还会记录中继日志索引文件(relay - log.index),该文件记录了当前使用的所有relay - log文件的路径和文件名,便于SQL线程定位和读取。
  2. SQL线程应用
    • 从库的SQL线程监控relay - log,当检测到有新的日志事件写入relay - log后,SQL线程从relay - log中按顺序读取日志事件。
    • SQL线程根据读取到的日志事件,在从库上执行相应的SQL语句,从而使从库的数据状态与主库保持一致。
    • SQL线程在应用完relay - log中的一部分或全部事件后,会更新从库的复制位点信息(通过relay - master - info文件记录主库的二进制日志文件名和位置,以及从库当前读取和应用到的位置),以便在发生故障恢复时能够准确地继续复制。