MST

星途 面试题库

面试题:MySQL复制中主从服务器之间数据同步的关键步骤有哪些

请详细阐述MySQL复制过程中,主服务器和从服务器是如何一步步实现数据同步的,包含涉及到的日志及相关线程的作用。
18.0万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

主服务器(Master)

  1. 二进制日志(Binary Log):主服务器在执行数据修改操作(如 INSERTUPDATEDELETE 等)时,会将这些操作记录到二进制日志中。二进制日志记录了数据库的所有更改,用于数据备份和主从复制。
  2. 主服务器线程
    • I/O线程(Master_IO_Thread):当从服务器连接到主服务器时,主服务器会创建一个I/O线程专门用于与从服务器进行通信。该线程负责读取二进制日志,并将日志内容发送给从服务器。

从服务器(Slave)

  1. I/O线程(Slave_IO_Thread):从服务器启动复制时,会创建一个I/O线程。该线程连接到主服务器,请求主服务器发送二进制日志内容。它接收主服务器I/O线程发送的二进制日志,并将其写入到本地的中继日志(Relay Log)中。
  2. 中继日志(Relay Log):用于暂存从主服务器接收到的二进制日志内容。从服务器的I/O线程将主服务器发送的日志写入中继日志,然后由SQL线程来读取和执行这些日志中的操作。
  3. SQL线程(Slave_SQL_Thread):SQL线程负责读取中继日志中的内容,并按照日志记录的顺序在从服务器上重新执行这些操作,从而使从服务器的数据与主服务器保持同步。

数据同步步骤

  1. 连接建立:从服务器配置主服务器的连接信息(如主服务器的IP、端口、用户名、密码等),并启动复制。从服务器的I/O线程连接到主服务器,主服务器创建对应的I/O线程。
  2. 日志发送与接收:主服务器的I/O线程开始读取二进制日志,并将日志内容发送给从服务器的I/O线程。从服务器的I/O线程接收日志并写入中继日志。
  3. 日志执行:从服务器的SQL线程读取中继日志,执行其中记录的操作,将数据修改应用到从服务器的数据库中,完成数据同步。
  4. 心跳检测与持续同步:在复制过程中,主从服务器之间会定期进行心跳检测,以确保连接的有效性。如果出现网络故障或其他问题导致连接中断,从服务器会尝试重新连接主服务器,并根据记录的位置继续同步未完成的日志内容。