一文搞懂MYSQL主从复制原理

597 篇文章 17 订阅
17 篇文章 1 订阅

一、概述

1、什么是主从复制?

概念 主从复制是用来建立一个和 主数据库完全一样的数据库环境称为从数据库;主数据库一般是准实时的业务数据库。

2、主从复制作用

我们来思考如果在企业网站中,后端MYSQL数据库只有一台时候,会有以下问题:

1、单点故障服务不可用
2、无法处理大量的并发数据请求
3、数据丢失

所以通过主从复制后,它的优点就很明显

1、如果主节点出现故障,那么我们就直接将服务切到从节点,来保证服务立马可用。

2、如果并发请求特别大的时候,我们可用进行读写分离操作,让主库负责写,从库负责读。

3、如果主库数据丢失,但从库还保存一份,减少数据丢失的风险。

二、主从复制原理

1、主从复制原理

这里先放一张图,这张图很好的诠释的主从复制的原理
在这里插入图片描述上面主要分成了三步,下面会详细说明。

(1) Master的更新事件(update、insert、delete)会按照顺序写入bin-log中。当Slave连接到Master的后,Master机器会为Slave开启

binlog dump线程,该线程会去读取bin-log日志

(2) Slave连接到Master后,Slave库有一个I/O线程 通过请求binlog dump thread读取bin-log日志,然后写入从库的relay log日志中。

(3) Slave还有一个 SQL线程,实时监控 relay-log日志内容是否有更新,解析文件中的SQL语句,在Slave数据库中去执行。

总结

(1) 既然是要把事件记录到bin-log日志,那么对于Master就必须开启bin-log功能。

(2) 整个Mysql主从复制一共开启了3个线程。Master开启 IO线程,Slave开启 IO线程 和 SQL线程。

(3) 这点也很重要那就是Master和Slave交互的时候,记住这里是Slave去请求Master,而不是Master主动推给Slave。Slave通过IO线程

连接Master后发起请求,Master服务器收到Slave IO线程发来的日志请求信息,io线程去将bin-log内容返回给slave IO线程。
2、MySQL主从复制同步方式

(1)异步复制

MySQL主从同步 默认是异步复制的。就是上面三步中,只有第一步是同步的(也就是Mater写入bin log日志),就是主库写入binlog日志后即可成功返回客户端,无须等待binlog

日志传递给从库的过程。Master 不关心 Slave 的数据有没有写入成功。因此如果Master和Slave之间有网络延迟,就会造成暂时的数据不一致的现象;如果Master出故障,而数据

还没有复制过去,则会造成数据丢失;但也有好处,效率较其他两种复制方式最高。

(2)同步复制

对于同步复制而言,Master主机将事件发送给Slave主机后会触发一个等待,直到所有Slave节点(如果有多个Slave)返回数据复制成功的信息给Master。这种复制方式最安

全,但是同时,效率也是最差的。

(3)半同步复制

对于半同步复制而言,Master主机将事件发送给Slave主机后会触发一个等待,直到其中一个Slave节点(如果有多个Slave)返回数据复制成功的信息给Master。由此增强了

数据的一致性,但是因为Master主机的确认开销,会损耗一部分的性能;另外,半同步复制除了不需要等待所有Slave主机确认事件的接收外,半同步数据复制并不要求那些事件

完全地执行,因此,仍有可能看到在Slave主机上数据复制延迟的发生,如果因为网络延迟等原因造成Slave迟迟没有返回复制成功的信息,超过了Master设置的超时时长,半同步

复制就降级为异步复制方式,而后继续数据复制。

三、Mysql主从同步延时

上面也说了,Mysql默认采用的异步操作,因为它的效率明显是最高的。因为只要写入bin log后事物就结束返回成功了。但由于从库从主库异步拷贝日志 以及

串行执行 SQL 的特点,所以从库的数据一定会比主库慢一些,是有延时的。所以经常出现,刚写入主库的数据可能是读不到的,要过几十毫秒,甚至几百毫秒才能

读取到。这就是主从同步延时问题。

1、如何查看主从延迟时间

通过监控 show slave status 命令输出的Seconds_Behind_Master参数的值来判断:

mysql> show slave status\G;
    // 状态一
    Seconds_Behind_Master: NULL
    // 状态二
    Seconds_Behind_Master: 0
    // 状态三
    Seconds_Behind_Master: 79

Seconds_Behind_Master=0: 表示主从复制良好;

Seconds_Behind_Master=NULL: 表示io_thread或是sql_thread有任何一个发生故障;

Seconds_Behind_Master=79: 数字越大表示从库延迟越严重。
2、影响延迟因素

这里整理了影响主从复制延迟大致有以下几个原因:

1)主节点如果执行一个很大的事务,那么就会对主从延迟产生较大的影响

2)网络延迟,日志较大,slave数量过多

3)主上多线程写入,从节点只有单线程同步

4)机器性能问题,从节点是否使用了“烂机器”

5)锁冲突问题也可能导致从机的SQL线程执行慢
3、优化主从复制延迟

这个没有说去完全解决,要想解决那么就只能采用同步复制策略。不过,一般不建议使用这种同步模式。显而易见,如果写操作必须等待更新同步完成,肯定会

极大地影响性能,除非你不在乎性能。

1)大事务:将大事务分为小事务,分批更新数据

2)减少Slave的数量,不要超过5个,减少单次事务的大小

3)MySQL 5.7之后,可以使用多线程复制,使用MGR复制架构

4)在磁盘、raid卡、调度策略有问题的情况下可能会出现单个IO延迟很高的情况,可用iostat命令查看DB数据盘的IO情况,再进一步判断

5)针对锁问题可以通过抓去processlist以及查看information_schema下面和锁以及事务相关的表来查看

总结

主机与从机之间的物理延迟是无法避免的,既然无法避免就可以考虑尝试通过缓存等方式,降低新修改数据被立即读取的概率。

在这里插入图片描述
希望本文对你有所帮助~~如果对接口测试、自动化测试、面试经验交流感兴趣可以加入我们。642830685,免费领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!技术大牛解惑答疑,同行一起交流。

### 回答1: PMSM电机是三相无刷直流电机,它的转子由永磁体构成。PMSM电机的控制主要包括三个环:速度环、电流环和位置环。 在速度环控制中,通过测量电机的实际转速与指令转速的差值来计算出控制器需要提供的转矩大小。其中,电机的实际转速可以通过编码器或霍尔传感器测量,指令转速可以由用户通过控制系统设定。然后通过调节电机的电流大小来控制电机输出的转矩大小,让实际转速逐渐趋近于指令转速。 在电流环控制中,根据速度环控制输出的控制量,控制器需要通过PI控制器调节电机的电流大小,来实现对电机输出转矩的控制。 在位置环控制中,通过测量电机转子的位置信息,反馈到控制器中,用来控制电机输出转矩的相位和大小。 总的来说,PMSM电机的控制原理就是通过控制器对电机的速度、电流和位置进行调节控制,实现对电机输出的转矩大小和相位的掌控,从而达到精准控制电机转速和运动轨迹的目的。 ### 回答2: 永磁同步电机(PMSM)是一种高效的电机类型,它的控制技术在近年来得到了广泛应用。其核心控制原理是通过控制电机的电流来实现对转矩和速度的精准控制。在PMSM的控制过程中,需要使用矢量控制技术以及逆变器来实现电机的驱动。 在矢量控制技术中,通过将电机控制转变为D轴和Q轴的电流控制,来实现对电机的控制。通过控制D轴和Q轴的电流,可以实现精准的转矩和角速度控制。此外,逆变器通常是用于将直流电源转换为交流电源,以便提供给PMSM所需的电力。逆变器通常使用PWM(脉宽调制)来控制输出电压,并使电机产生所需要的转矩和速度。 在实际应用中,矢量控制技术和逆变器经常和PID控制器等控制策略组合使用。PID控制器可用于改进控制电机转速,电流和位置的性能。 总之,PMSM电机控制原理涉及矢量控制技术和逆变器的使用。用这种技术实现对PMSM电机的精准控制,并结合PID控制器等控制策略,PMSM电机得到了广泛的应用。 ### 回答3: PMSM电机(Permanet Magnet Synchronous Motor,永磁同步电机)是一种使用永磁体作为转子的同步电机,具有高效率、高功率密度和稳定性好的特点,因而在现代工业生产中广泛使用。其控制原理是通过控制电机的电流和电压来实现转子和电磁场之间的同步。 PMSM电机的控制需求可以分为速度控制、转矩控制和位置控制三个方面。速度控制可以通过控制电机供电频率和电压来实现,同时需要对电流进行监测以保持电机运行的稳定性。转矩控制则需要根据机械负载调节电机转矩以达到所需的工作效果。位置控制则需要通过对电机转子位置进行反馈控制,使得电机能够准确地按照所需位置运转。 在PMSM电机控制中,使用了电机反馈控制系统和电机控制器。反馈控制系统通过传感器实时监测电机运转的转速、转矩和位置等参数,并将这些参数实时反馈给电机控制器。电机控制器根据反馈的参数来控制电机的电流和电压,实现对电机的控制。同时在电机控制中,还需要对电流进行磁场定向控制,以确保电机的正常运行。 总之,PMSM电机控制原理是通过对电机的电流、电压和位置等参数进行实时控制和反馈,以实现电机转子和电磁场之间的同步,从而实现电机的稳定运行和精确控制。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值