(八) 初入MySQL 【主从复制】

案例概况

在企业应用中,成熟的业务通常数据量都比较大 单台MySQL在安全性、 高可用性和高并发方面都无法满足实际的需求 ,所以需要配置多台主从数据库服务器以实现读写分离来满足需求


一、主从复制原理

1.1、 MySQL的复制类型

  • 基于语句的复制(STATEMENT, MySQL默认类型)
  • 基于行的复制(ROW)
  • 混合类型的复制(MIXED)

1.2、MySQL主从复制的工作过程

其中最重要的是:两个日志三个线程

1.2.1、过程

Master端的操作

  1. 记录变更到二进制日志(Binary Log)
    • 在每个事务更新数据完成之前,Master会在其二进制日志中记录这些改变。这些改变包括数据修改、结构变更等所有会影响数据库状态的操作。
    • 写入二进制日志的操作完成后,Master会通知存储引擎提交事务。这一步确保了事务的完整性和数据的一致性。

Slave端的操作

  1. 复制二进制日志到中继日志(Relay Log)
    • Slave会启动一个I/O线程,该线程在Master上打开一个普通的连接,并启动Binlog dump process。
    • Binlog dump process负责从Master的二进制日志中读取事件。如果Slave已经跟上Master的进度,它会进入睡眠状态等待Master产生新的事件。
    • I/O线程将这些从Master读取到的事件写入到Slave的中继日志中。中继日志是Slave端用于暂存从Master接收到的变更事件的日志。
  2. 应用变更到Slave数据库
    • 接下来,SQL从线程(SQL slave thread)会处理中继日志中的事件。它从中继日志中读取事件,并重新执行这些事件,以此来更新Slave数据库中的数据,使其与Master数据库中的数据保持一致。
    • 只要SQL线程与I/O线程保持一致,中继日志通常会位于操作系统的缓存中,这大大减少了磁盘I/O的开销。

复制的限制

  • 串行化操作:复制过程在Slave上是串行化的,这意味着在Master上并行执行的更新操作在Slave上必须串行执行。这可能导致Slave上的复制延迟,特别是当Master上的更新操作非常频繁时。

性能优化和问题解决

  • 优化硬件和网络:确保Master和Slave服务器的硬件资源充足,并优化网络延迟以减少数据传输的时间。
  • 使用并行复制:在MySQL 5.7及以上版本中,可以使用并行复制来加速Slave的复制速度。并行复制允许多个SQL线程同时处理中继日志中的不同事件,但需要注意事务的依赖性和冲突。
  • 分析和优化SQL查询:定期分析并优化查询,确保没有慢查询影响复制性能。
  • 处理复制延迟:监控复制状态,如果发现延迟,需要分析原因并采取相应措施,如增加Slave服务器的数量、优化查询等。

二、MySQL主从复制延迟

1、网络延迟

2、master服务器高并发,形成大量事务

3、主从硬件设备导致 cpu主频、内存io、硬盘io

4、本来就不是同步复制、而是异步复制从库优化Mysql参数。

比如增大innodb_buffer_pool_size,让更多操作在Mysql内存中完成,减少磁盘 操作。 从库使用高性能主机。包括cpu强悍、内存加大。避免使用虚拟云主机,使用物理主机,这样提升了i/o 方面性。 从库使用SSD磁盘 网络优化,避免跨机房实现同步 问题解决方法 半同步复制- 解决数据丢失的问题 并行复制---解决从库复制延迟的问题

三、MySQL 有几种同步方式

三种(加扩展一种)

1、异步复制(Async Replication)

2、同步复制(sync Replication)

3、半同步复制(Async Replication)

4、增强半同步复制(lossless Semi-Sync Replication)、无损复制

3.1、异步复制(Async Replication)

主完成之后就返回客户端,不关系从是否同步,主挂之后,从可能会只有原来数据。

都不等

主库将更新写入Binlog日志文件后,不需要等待数据更新是否已经复制到从库中,就可以继续处理更多 的请求。Master将事件写入binlog,但并不知道Slave是否

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值