MySQL主从同步延迟怎么解决

本文主要给大家简单讲讲MySQL主从同步延迟怎么解决,相关专业术语大家可以上网查查或者找一些相关书籍补充一下,这里就不涉猎了,我们就直奔主题吧,希望MySQL主从同步延迟怎么解决这篇文章可以给大家带来一些实际帮助又是;,,,,,,,,,,,,,,,,,,,,,,,,,,,,, MySQL主从同步延迟怎么解决

MySQL主从基本原理,主要形式以及主从同步延迟原理(读写分离)导致主库从库数据不一致问题的及解决方案

一、主从数据库的区别

从数据库(奴隶)是主数据库的备份,当主数据库(主)变化时从数据库要更新,这些数据库软件可以设计更新周期。这是提高信息安全的手段。主从数据库云服务器不在一个地理位置上,当发生意外时数据库可以保存。

(1)主从分工

其中主负责写操作的负载,也就是说一切写的操作都在掌握上进行,而读的操作则分摊到奴隶上进行。这样一来的可以大大提高读取的效率。在一般的互联网应用中,经过一些数据调查得出结论,读/写的比例大概在10:1左右,也就是说大量的数据操作是集中在读的操作,这也就是为什么我们会有多个奴隶的原因。但是为什么要分离读和写呢?熟悉DB的研发人员都知道,写操作涉及到锁的问题,不管是行锁还是表锁还是块锁,都是比较降低系统执行效率的事情。我们这样的分离是把写操作集中在一个节点上,而读操作其其他的N个节点上进行,从另一个方面有效的提高了读的效率,保证了系统的高可用性。

(2)基本过程
1), MySQL的主从同步就是当主人(主库)发生数据变化的时候,会实时同步到奴隶(从库)。
2),主从复制可以水平扩展数据库的负载能力,容错,高可用,数据备份。

3),不管是删除,更新,插入,还是创建函数,存储过程,都是在掌握上,当主人有操作的时候,奴隶会快速的接受到这些操作,从而做同步。

(3)用途和条件
1), MySQL主从复制用途
,●实时灾备,用于故障切换
,●读写分离,提供查询服务
,●备份,避免影响业务
2),主从部署必要条件:
,●主库开启binlog日志(设置log-bin参数)
,●主从服务器id不同
,●从库云服务器能连通主库

二、主从同步的粒度,原理和形式:

(1),三种主要实现粒度
详细的主从同步主要有三种形式:声明,行,混合
1),声明:会将对数据库操作的sql语句写道binlog中
2),行:会将每一条数据的变化写道binlog中。
,3),混合:声明与连续的混合.Mysql决定何时格写声明式的binlog,何时写行格式的binlog。

(2),主要的实现原理,具体操作,示意图

1),在主机器上的操作:
,当主人上的数据发生变化时,该事件变化会按照顺序写入bin-log中。当奴隶链接到主人的时候,主控机器会为奴隶开启binlog转储线程。当主人的binlog发生变化的时候,bin-log转储线程会通知奴隶,并将相应的binlog内容发送给奴隶。
2),在奴隶机器上操作:

,当主从同步开启的时候,奴隶上会创建两个线程:I/O线程。该线程连接到主控机器,主机器上的binlog转储线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的中继日志;sql线程。该线程读取到I/O线程写入的ralay日志。并且根据中继日志。并且根据中继日志的内容对奴隶数据库做相应的操作。

3), MySQL主从复制原理图如下:

从库生成两个线程,一个I/O线程,一个sql线程;
I/O线程去请求主库的binlog,并将得到的binlog日志写日志到继电器(中继日志)文件中,
主库会生成一个日志转储线程,用来给从库I/O线程传binlog;
sql线程,会读取中继日志文件中的日志,并解析成具体操作,来实现主从的操作一致,而最终数据一致。

(2),主从形式

MySQL主从复制灵活
,●一主一从
,●主主复制
,●一主多从- - -扩展系统读取的性能,因为读是在从库读取的;
,●多主一从- -5.7开始支持

●联级复制- - - - - -

三、主从同步的延迟等问题,原因及解决方案:

(1), MySQL数据库从库同步的延迟问题

1)相关参数:

首先在云服务器上执行显示奴隶平面;可以看到很多同步的参数:

Master_Log_File:,,,,,,,,,,中,奴隶的I/O线程当前正在读取的主云服务器二进制日志文件的名称
Read_Master_Log_Pos:,,,,在当前的主云服务器二进制日志中,奴隶中的I/O线程已经读取的位置
Relay_Log_File:,,,,,,,,,,,,SQL线程当前正在读取和执行的中继日志文件的名称

MySQL主从同步延迟怎么解决