(5.2)mysql高可用系列——mysql主从复制

关键词:mysql主从复制,mysql复制

【1】mysql支持的复制类型

  基于binlog的3种模式(详情参考:binlog的3种日志记录模式),oracle在mysql5.5版本收购

  【1.1】statement:基于语句的复制(5.5.6之前默认),主服务器执行的SQL语句,在从服务器执行同样的语句

  【1.2】row:基于行的复制(5.5.7之后默认),把改变的内容复制到从库,而不是把SQL命令在从库重新执行一遍。mysql5.0就开始支持

  【1.3】mixed:混合类型的复制,默认是使用 statement 语句方式复制,一旦发现基于语句无法精确复制时(比如now() 因为主从有延迟导致数据不一致)就会采用基于 row 行的方式复制。

  

【2】mysql的4种同步方式介绍

      以下图片均引用自《深入浅出mysql开发、优化与管理维护》

扫描二维码关注公众号,回复: 6948247 查看本文章

       

        

  【2.1】异步复制:

       主库只管binlog dump数据到从库,不保证主从完全一致,断电、崩溃等情况会丢失数据。(和MSSQL的高性能模式镜像一样)   

      

   【2.2】全同步复制:

      主库事务写入redo log和 binlog 文件后,binlog dump线程提取binlog数据给IO线程,IO线程把数据加载回从库的relay log文件。

      从库SQL线程开启事务重做应用relay log数据操作,等从库提交完后,返回ACK确认标识,主库才会提交。

  【2.3】传统半同步复制:

      主库事务写入redo log和 binlog 文件后,binlog dump线程提取binlog数据给IO线程,IO线程把数据加载回从库的relay log文件。

      只要IO线程-》relay log已经flush disk 磁盘落地,就返回ACK确认标识。(不需要等SQL线程重做应用relay log,这里就和MSSQL高安全模式镜像一样

      注意:这里的commit主库上是已经在 binlog、redo log 中提交了的,其他session都可以看到。

      但需要等待从库返回ACK确认标识才会把事务提交到存储引擎持久化(即 ibdata、ibd等磁盘数据文件)且返回到client一个commit成功的指令。

      

      

  【2.4】增强半同步复制

猜你喜欢

转载自www.cnblogs.com/gered/p/11299168.html