【mysql 主从复制】掌握MySQL主从复制

1、主从复制原理

Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置。从服务器接收从那时起发生的任何更新,然后封锁并等待主服务器通知新的更新。

请注意当你进行复制时,所有对复制中的表的更新必须在主服务器上进行。否则,你必须要小心,以避免用户对主服务器上的表进行的更新与对从服务器上的表所进行的更新之间的冲突。

主服务器将更新写入二进制日志,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送到从服务器的更新。当一个从服务器连接主服务器时,它通知主服务器从服务器在日志中读取的最后一次成功更新的位置,从服务器接收从那时起发生的任何更新,然后封锁等等主服务器通知新的更新。

【mysql 主从复制】掌握MySQL主从复制_第1张图片

2. MySQL支持的复制类型

(1):基于语句的复制:  在主服务器上执行的SQL语句,在从服务器上执行同样的语句。**MySQL默认采用基于语句的复制,效率比较高。**  
一旦发现没法精确复制时,   会自动选着基于行的复制。    
(2):基于行的复制:把改变的内容复制过去,而不是把命令在从服务器上执行一遍. 从mysql5.0开始支持
(3):混合类型的复制: 默认采用基于语句的复制,一旦发现基于语句的无法精确的复制时,就会采用基于行的复制。

3. mysql复制解决的问题

  • 数据分布
  • 负载平衡
  • 备份
  • 高可用性和容错行

4. 复制是如何工作的

可以简化为三个步骤(如下图):

  • Master 将改变记录到二进制日志中。
  • Slave 将 Master 的二进制日志拷贝到它的中继日志( Relay_log )
  • Slave 重做中继日志中的事件,将改变反映它自己的数据

5、一主多从复制架构

场景:在主库读取请求压力非常大的场景下,可以通过配置一主多从复制架构实现读写分离,把大量对实时性要求不是特别高的读请求通过负载均衡到多个从库上,降低主库的读取压力。在主库出现异常宕机的情况下,可以把一个从库切换为主库继续提供服务;
建议:

当 Slave 增加到一定数量时,Slave 对 Master 的负载以及网络带宽都会成为一个严重的问题。
不同的 Slave 扮演不同的作用(例如使用不同的索引,或者不同的存储引擎)
用一个 Slave 作为备用 Master,只进行复制
用一个远程的 Slave,用于灾难恢复。

6、MySQL主从复制配置步骤
教程:https://www.toutiao.com/i6497011873018282509/
视频:
https://www.ixigua.com/i6497232485435310606/?utm_source=toutiao&utm_medium=feed_stream#mid=60959158180

你可能感兴趣的:(数据开发-mysql)