MySQL 主从复制

x33g5p2x  于6个月前 转载在 Mysql  
字(0.6k)|赞(0)|评价(0)|浏览(223)

概述

在主从复制中,一般有一个主数据库(Master)和一个或多个从数据库(Slave),主数据库负责接收和处理写操作,从数据库复制主数据库的日志文件,将写操作在自身的数据库重演,从而实现数据的同步

复制类型

  • STATEMENT:把主数据库执行的 sql 复制到从数据库,是默认类型
  • ROW:直接把数据行复制过去
  • MIXED:默认复制 sql 语句,如果发现无法精确复制,就会复制行数据

工作过程

  1. 主库数据更新,写入二进制日志文件
  2. 从库监听到主库的二进制日志文件发生改变,开启 I/O 线程向主库请求二进制日志记录;
  3. 主库为每个 I/O 线程开启 dump 线程,向从库发送二进制日志记录
  4. 从库的 I/O 线程将主库的二进制日志记录保存到本地的中继日志
  5. 从库启动 SQL 线程从中继日志读取二进制日志记录,在本地重新执行,使数据和主库保持一致
  6. I/O 线程和 SQL 线程进入睡眠状态,等待下一次被唤醒

同步类型

  1. 异步复制:主库执行完事务,立即将结果返回客户端,并不关心从库是否已经接收并处理。此时如果主库挂掉,而从库又未完成同步,会导致数据不一致,MySQL 默认采用此类型
  2. 全同步复制:主库执行完事务,所有的从库也都执行了该事务,完成数据同步,才将结果返回客户端,性能会收到一定影响
  3. 半同步复制:在异步复制的基础上,确保主库返回结果前,至少有一个从库已经收到该事务并记录到中继日志,但并不保证执行

实例配置

待补充

相关文章