MST

星途 面试题库

面试题:MySQL中二进制日志在复制中的作用是什么

请详细阐述MySQL二进制日志在主从复制架构里扮演的角色,以及主库和从库如何利用二进制日志来实现数据同步。
43.3万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试

MySQL二进制日志在主从复制架构里的角色

  1. 记录主库数据变更:MySQL二进制日志(Binlog)记录了主库上所有修改数据库数据的操作,包括数据定义语言(DDL)和数据操作语言(DML)语句。这些日志是主从复制的基础,从库通过读取和应用这些日志来同步数据。
  2. 数据备份与恢复:除了主从复制,二进制日志还用于数据备份和恢复。通过重放二进制日志,可以将数据库恢复到某个特定时间点的状态。

主库利用二进制日志实现数据同步

  1. 日志写入:当主库执行任何修改数据的操作时,MySQL会将这些操作记录到二进制日志中。二进制日志采用追加写的方式,不会覆盖已有的日志内容。
  2. 日志发送:主库开启二进制日志功能后,会有一个I/O线程负责将二进制日志发送给从库。从库会向主库发起连接请求,主库的I/O线程会根据从库传递过来的日志文件名和位置信息,从二进制日志中读取相应的日志内容并发送给从库。

从库利用二进制日志实现数据同步

  1. 日志接收:从库有一个I/O线程负责接收主库发送过来的二进制日志内容,并将其写入到从库的中继日志(Relay Log)中。中继日志是从库特有的一种日志,用于临时存储从主库接收到的二进制日志。
  2. 日志应用:从库还有一个SQL线程,它会读取中继日志中的内容,并按照日志记录的顺序在从库上重新执行这些操作,从而使从库的数据与主库保持同步。SQL线程应用中继日志的过程就像是在从库上重演主库上发生的数据变更。

通过主库记录并发送二进制日志,以及从库接收、应用二进制日志,MySQL实现了主从复制架构下的数据同步。