浅谈 MySQL 主从复制

1、三个线程

        实际上主从同步的原理就是基于binlog进行数据同步的。在主从复制过程中,会基于3个线程来操作,一个主库线程,两个从库线程

浅谈 MySQL 主从复制_第1张图片

二进制日志转储线程(Binlog dump thread):

        是一个主库线程。当从库线程连接的时候, 主库可以将二进制日志发送给从库,当主库读取事件(Event)的时候,会在 Binlog 上加锁,读取完成之后,再将锁释放掉。

从库 I/O 线程:

        会连接到主库,向主库发送请求更新 Binlog。这时从库的 I/O 线程就可以读取到主库的二进制日志转储线程发送的 Binlog 更新部分,并且拷贝到本地的中继日志 (Relay log)。

从库 SQL 线程:

会读取从库中的中继日志,并且执行日志中的事件,将从库中的数据与主库保持同步。


2、复制三步骤

步骤1:Master将写操作记录到二进制日志(binlog)。这些记录叫做二进制日志事件(binary log events);

步骤2:Slave 将 Master 的 binary log events 拷贝到它的中继日志(relay log);

步骤3:Slave重做中继日志中的事件,将改变应用到自己的数据库中。 MySQL复制是异步的且是串行化的,而且重启后从接入点开始复制。

串行化:对象通过描述自己状态的数值,来记录自己,这个过程叫串行化

复制存在的问题:

       那就是  “ 延时 ”因为写的时候是写入主库,而查询的的时候是查从库,进行同步是需要时间的,所以就可能出现问题

复制的基本原则:

  • 每个Slave只有一个Master
  • 每个Slave只能有一个唯一的服务器ID
  • 每个Master可以有多个Slave

一主一从架构搭建

一台主机 用于处理所有写请求,一台从机负责所有读请求:

浅谈 MySQL 主从复制_第2张图片

你可能感兴趣的:(mysql,mysql,数据库)