面试题答案
一键面试主库操作步骤
- 记录Binlog:主库上执行的写操作(如
INSERT
、UPDATE
、DELETE
等)会被记录到二进制日志(Binlog)中。Binlog以追加的方式记录所有修改数据库数据的操作,记录格式有STATEMENT
(记录SQL语句)、ROW
(记录行数据的变化)、MIXED
(以上两种模式的混合)。 - 建立连接:当从库发起连接请求时,主库会创建一个线程专门用于与从库进行通信,这个线程被称为Binlog Dump Thread。
- 发送Binlog:Binlog Dump Thread根据从库传递过来的日志文件名和位置信息(通常称为
master_log_file
和master_log_pos
),从指定位置开始向从库发送Binlog内容。
从库操作步骤
- I/O线程工作:从库上有一个I/O线程,它负责与主库建立连接,并请求主库发送Binlog。I/O线程会将接收到的Binlog内容写入到本地的中继日志(Relay Log)中。在写入中继日志时,I/O线程会记录当前接收到的Binlog的文件名和位置,以便下次请求时能准确告知主库从何处继续发送。
- SQL线程工作:从库还有一个SQL线程,它负责读取中继日志中的内容,并按照日志记录的顺序在从库上重新执行这些操作,从而使从库的数据与主库保持一致。SQL线程执行完中继日志中的一部分内容后,会更新自身记录的中继日志位置信息。