MST

星途 面试题库

面试题:MySQL延迟复制原理及如何保障基本数据一致性

请阐述MySQL延迟复制的基本原理,以及在延迟复制过程中,MySQL是如何保障数据的基本一致性的,结合日志机制说明。
41.2万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

MySQL延迟复制基本原理

  1. 复制架构:MySQL 采用主从复制架构,延迟复制是在此基础上实现。主库(Master)将数据库的更改操作记录到二进制日志(Binlog)中。
  2. 从库接收:从库(Slave)通过 I/O 线程连接到主库,读取主库的二进制日志,并将其写入到自己的中继日志(Relay Log)中。
  3. 延迟设置:在从库上可以设置一个延迟时间(以秒为单位),SQL 线程不会立即应用中继日志中的事件,而是等待设定的延迟时间过去后,才开始从中继日志中读取并应用事件,从而实现延迟复制。

数据一致性保障(结合日志机制)

  1. 二进制日志(Binlog):主库上所有影响数据的写操作都会记录到 Binlog 中,记录了数据库更改的逻辑操作,如 INSERT、UPDATE、DELETE 等语句。它是主从复制的数据来源,主库通过将 Binlog 发送给从库,确保从库能获取到主库的所有数据变更信息。
  2. 中继日志(Relay Log):从库的 I/O 线程将主库的 Binlog 内容读取并写入中继日志。中继日志保存了从主库接收到的数据变更信息,SQL 线程按顺序从中继日志中读取事件并应用到从库数据上。
  3. 事务持久性与一致性:MySQL 通过事务机制保证数据的一致性。在主库上,事务提交时,Binlog 会记录完整的事务信息。从库的 SQL 线程按照事务在中继日志中的顺序依次应用,由于延迟复制只是延迟了 SQL 线程应用中继日志的时间,在应用时依然遵循事务的顺序,所以能保障数据一致性。例如,若一个事务包含多个操作,在主库写入 Binlog 时是完整的,从库即使延迟应用,在应用时也是将整个事务完整应用,不会出现部分操作执行而部分不执行的情况,从而保障了数据的一致性。