1、什么是MySQL主从复制

  MySQL主从复制:数据从一个主节点数据库复制到至少一个从节点数据库。MySQL采用异步复制方式同步数据,从节点不需要一直访问主数据库更新自身数据。

2、为什么需要MySQL主从复制

2.1、保证系统的高可用

  在复杂业务系统中,某些频繁的操作会导致MySQL锁表,影响业务的正常进行。使用主从复制,进行读写分离,主库写、从库读,主库的锁表不会影响从库的读取,提高系统的可用性。

2.2、保证系统的高性能

  数据库的I/O处理往往是系统的瓶颈,当I/O的访问频率过高,单机无法满足性能要求,使用主从复制进行多库存储,降低磁盘I/O访问的频率,可提高单个机器的I/O性能。

3、MySQL主从复制原理

  主从复制原理图:

  

  1、Master主服务器将应用程序的DML操作记录到二进制文件binlog中,即将数据的改变记录到二进制文件中;

  2、Slave周期探测Master中二进制binlog文件是否发生改变,若发生改变,Slave服务器则创建I/O Thread请求Master主库发生变化的二进制binlog文件文件;

  3、Master主库在接收到Slave的I/O请求,为每个I/O请求对应的开启dump线程,同步主库的binlog文件至Slave服务器;

  4、Slave从库服务器通过I/O Thread接收主库的二进制文件,保存至Slave的中继日志relay-log文件中;

  5、Slave节点开启一个SQL线程,从relay-log中继日志中读取数据持久化至从节点,使得主从节点数据保持一致;

  6、Slave从节点数据同步完成,I/OThread和SQLThread进入休眠状态,等待Schedule Thread探测主库的binlog发生改变后被唤醒。

从节点有两个线程:I/O Thread、SQL Thread,这一点从从节点的日志中就可以发现: