MySQL主从复制的概述:

1MySQL replication 概述:

      mysql replication 俗称 mysql AB  复制,主从复制,主从同步,是mysql官方推荐的数据同步技术,数据同步基本过程为从数据库会实现去读取主数据库的二进制日志文件,按照日志中记录对从库进行同样的操作,已达到数据同步效果

1):  mysql replication 优点:

     通过增加从服务器来提高数据库平台的可靠性。在主服务器上执行写入和更新,在从服务器上向外提供读功能,可以动态地调整从服务器地数量,从而调整数据库平台地高性能。

     提高数据安全性,因为数据已复制到从服务器,主数据库异常时,可以将从服务器复制进程终止来达到保护数据完整性地特点。

在主服务器上生成实时数据,而在从服务器上分析这些数据,从而缓解主服务器地性能压力。

2MySQL复制类型

1):异步复制(Asynchronous repication

      MySQL默认地复制是异步地,主库在执行完客户端提交地事务后会立刻将结果返回给客户端,并不关心从库是否已经接受并处理了事务,这样就会有一个问题,主库如果down掉了,此时主上已经提交地事务可能没有传到从库服务器上,如果此时,强制将从提升为主,可能会导致新主上的数据不完整。默认情况下MySQL5.5/5.6/5.7和mariaDB10.0/10.1的复制功能是异步的。

 2):全同步复制(Fully synchronous replication

    指当主库执行完一个事务,所有的从库都执行了该事务才返回给客户端。因为需要等待所有从库执行完该事务才能返回,所以全同步复制的性能必然会收到严重的影响,返回客户端的响应速度也会被拖慢。

 3):半同步复制(Semisynchronous replication

    MySQL由Google贡献的补丁才开始支持半同步复制模式,介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接受到并写到relay log中才返回给客户端。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。所以,半同步复制最好在低延时的网络中使用。当出现超时情况时,源主服务器会暂时切换到异步复制模式,直到至少有一台设置为半同步复制模式的从服务器及时收到信息为止。

    半同步复制模式在主服务器和从服务器同时启用,否则主服务器默认使用异步复制模式

3MySQL支持的复制方式

1):基于SQL语句的复制(statement-based replication,SBR):在主服务器上执行的SQL语句,在从服务器上执行同样的SQL语句,效率比较高。

2):基于行的复制(row-based replicationRBR)主服务器把表的行变化作为事件写入到二进制日志中,主服务器把代表了行变化的事件复制到从服务器中。

3):混合模式复制(mixed-based replicationMBR):先采用基于语句的复制,一旦发现基于语句无法精确复制时,再采用行。 

    在mysql5.1.4 之前的版本都只能使用基于SQL语句的复制方式,mysql5.6.5 和往后的版本是基于global transaction identifiers(GTIDS)来进行事务复制,当使用GTIDS 是可以大大简化复制过程,因为GTIDS 完全基于事务,只要在主服务器上提交了事务,那么从服务器就一定会执行该事务。、

     通过设置服务器的系统变量binlog format 来指定要使用的格式

4复制的工作过程

   1、在每个事务更新完成数据之前,Master会在二进制日志(Binary log,binlog)中记录这些改变数据的语句,当 MysQL将事务串行的写入二进制日志完成后,Master通知存储引擎提交事务并将数据写入磁盘。

   2.、Slave 开启一个I/O工作线程,在 Master之间建立一个连接,然后开始Binlog dump

process,Binlog dump process会从 Master的二进制日志中读取操作事件,如果已经跟Master达到一致状态,它会催眠并等待Master产生新的操作事件,l/O 线程将这些改变数据的事件写入自己的中继日志。

   3、SQL slave Thread (SQL工作线程)是处理MySQL Replication过程的最后一步。sQL线程从中继日志读取操作事件,重放其中的事件从而更新 slave服务器的数据,使 slave 与Master中的数据保持一致,只要该线程与l/o线程保持一致,中继日志通常会在os的缓存中,所以中继日志的开销很小。                                                                                               

   MySQL5.6 以前的版本复制过程有一个很重要的限制――复制在 slave上是串行化的,也就是说master 上的并行更新操作不能在 slave 上并行操作。MySQL5.6版本参数slave-parallel-workers=1表示启用多线程功能。(注:它是有延迟的。mysql版本:5.6 5.7 8.0,面试题:延迟怎么解决?他是解决不了的,因为他是架构的问题。)                                                                                               

   MySQL5.6开始,增加了一个新特性,是加入了全局事务ID(GTID)来强化数据库的主备一致性,故障恢复,以及容错能力。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BK_小小关

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值