【MySql】mysql之主从复制和读写分离搭建

概述
在企业应用中,成熟的业务通常数据量都比较大。

单台mysql在安全性、高可用性和高并发方面都无法满足实际的需求。

配置多台主从数据服务器以实现读写分离。

一、主从复制原理


1、MySql支持从复制类型


基于语句的复制(statement)

在煮服务器上执行的sql语句,在从服务器执行同样的语句。
mysql默认采用的方式。效率高。
基于行的复制

把改变的内容复制过去。
基于混合类型复制

默认采用基于语句的复制,一旦发现基于语句无法精确复制时,就会采用基于行的复制。


2、主从复制的原理❤


两日志

二进制文件: 记录数据库变动的信息(语句、变动记录)
中继日志文件: 用于临时存放二进制文件内容。
三线程

dump线程: ①监听I/O线程请求。②将二进制日志文件更新的数据发送给slave的I/O线程。
I/O线程: ①监听master主机的二进制文件。②向master的dump线程发出同步请求
SQL线程: 读取中继日志中的文件,更新到本机的数据库。
1、首先client端(tomcat)将数据写入到master节点的数据库中,master节点会通知存储引擎提交事务,同时会将数据以(基于行、基于SQL、基于混合)的方式保存在二进制文件中。

2、slave节点会开启 I/O 线程,用于监听master的二进制日志的更新,一旦发生更新内容,则向master的dump线程发出同步请求。

3、master的dump线程在接收到salve的I/O请求后,会读取二进制日志文件中更新的数据,并发送给slave的I/O线程。

4、slave的I/O线程接收到数据后,会保存在slave节点的中继日志中。

5、同时,slave节点中的SQL线程,会读取中继日志中的数据,更新在本地的mysql数据库中

6、最终,完成slave---> 复制master数据,达到主从同步的效果。

中继日志通常会位于OS缓存中,所以中继日志的开销很小。
复制过程有一个很重要的限制,即复制在slave上时串行化的,也就是说,master上的并行更新操作不能再slave上并行操作。

3、主从复制的架构

架构一:一主多备的原理

  • 一般用来读写分离,master写,其它的slave读,这种架构最大的问题时I/O压力集中,在master上多台同步影响IO

 

架构二:M-S-S

  • 为中继代理,来分担master的压力,slave中继需要开启bin-log,并配置log-slave-updates。
  • slave中继可使用Black-hole存储引擎,不会把数据存储到磁盘,只记录二进制日志

 

架构三:M-M/双主互为主备(互为主从)

  • 很多人误以为这样可以做到mysql负载均衡,实际没什么好处,每个服务器需要同样的同步更新,破坏事务的隔离性和数据的一致性。

架构四:M-M-M,监控三台机器互为对方的master

  • 天生的缺陷:复制延迟,slave上同步要慢于master,如果打并发的情况那么延迟更严重,mysql在5.6以及自身可实现fail over故障切换。

4、mysql主从复制延迟


master服务器高并发,形成大量事务
网络延迟
主从硬件设备导致(cpu主频、内存io、硬盘io)
mysql默认使用异步复制。 可以优化mysql参数。 比如增大innodb_buffer_pool_size,让更多操作在mysql内存中完成。 从库还可以使用高性能主机 ,包括cpu强悍、内存加大,避免使用虚拟云主机,使用物理主机,这样升级了I/O方面性。 还可以将从库使用SSD磁盘。 网络优化,。避免跨机房使用。
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值