MySQL主从数据同步延时分析

一、MySQL数据库主从同步延迟                                                             

要了解MySQL数据库主从同步延迟原理,我们先从MySQL的数据库主从复制原理说起:

MySQL的主从复制都是单线程的操作,主库对所有DDL和DML产生的日志写进binlog,由于binlog是顺序写,所以效率很高。

Slave的IO Thread线程从主库中bin log中读取取日志。
Slave的SQL Thread线程将主库的DDL和DML操作事件在slave中重放。DML和DDL的IO操作是随即的,不是顺序的,成本高很多。

由于SQL  Thread也是单线程的,如果slave上的其他查询产生lock争用,又或者一个DML语句(大事务、大查询)执行了几分钟,那么所有之后的DML会等待这个DML执行完才会继续执行,这就导致了延时。

二、MySQL数据库主从同步延迟产生原因

1、Master负载

2、Slave负载

3、网络延迟

4、机器配置(cpu、内存、硬盘)

总之,当主库的并发较高时,产生的DML数量超过slave的SQL Thread所能处理的速度,或者当slave中有大型query语句产生了锁等待那么延时就产生了。

三、MySQL数据库主从同步延迟解决方案                                                  

1、salve较高的机器配置

2、Slave调整参数

我们从《MySQL数据丢失情况分析》中知道,为了保障较高的数据安全性,配置sync_binlog=1,innodb_flush_log_at_trx_commit
= 1 等设置。而Slave可以关闭binlog,innodb_flush_log_at_trx_commit也可以设置为0来提高sql的执行效率

3、并行复制
       各版本MySQL并行复制的实现及优缺点

MySQL 5.7 并行复制实现原理与调优

时间: 2024-10-05 03:06:49

MySQL主从数据同步延时分析的相关文章

MySQL 主从数据同步配置

1:需要两台MySQL服务器,如:master:192.168.1.120slave:192.168.1.121确定MySQL的版本是相同的,可以登录到MySQL CLI界面,输入:select version();此实验MySQL版本是5.6的 2:主服务器要授权从服务器,登录到master的MySQL CLI,输入:grant all on *.* to "test"@"%" identified by '123456'; 3:配置主从服务器的bin-log日志

MySQL主从数据库同步延迟问题解决(转)

最近在做MySQL主从数据库同步测试,发现了一些问题,其中主从同步延迟问题是其中之一,下面内容是从网上找到的一些讲解,记录下来以便自己学习: MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器. MySQL主从同步故障-Slave_SQL_Running: No http://www.linuxidc.com/Linux/2014-0

Mysql主从不同步问题处理案例

在使用Mysql的主从复制架构中,有两个比较头疼的问题: 1.主从数据不同步后如何处理 2.主从同步延迟问题如何解决 本文将根据实际案例来分析下问题1,至于问题2多数文档介绍的办法是启用多线程复制来解决,言归正传,这里的问题1还可以细分成两种情况. 1.Slave_IO_Running和Slave_SQL_Running在YES情况下,主从数据不同步如何处理? 2.Slave_SQL_Running在NO情况下,主从数据不同步如何处理? 出现第一种情况通常原因是手工去修改了从库的数据导致主从数据

解决MySQL主从不同步问题

解决mysql主从不同步 今天发现Mysql的主从数据库没有同步 先上Master库: mysql>show processlist;   查看下进程是否Sleep太多.发现很正常. show master status; 也正常. mysql> show master status; +-------------------+----------+--------------+-------------------------------+ | File              | Pos

MySQL主从说明详解、MySQL主从不同步处理方案

MySQL主从说明 同步问题 mysqldump:此工具适用于10G以下数据库或几个表percona-Xtrabackup备份工具:适用于100G-500GLVM快照:更大的数据量,或分库分表 主从复制目的 读写分离,减轻主库负载或数据分析: 数据安全,做备份恢复: 主从切换,做高可用: 常见主从结构: 一主一从:一个Master,一个Slave一主多从:一个Master,多个slave Master节点:负责所有的[写]请求Slave节点:负责大部分的[读]请求 主从复制步骤 A数据更新 A写

Goldengate完成Mysql到Mysql的数据同步

文档参考地址:http://blog.csdn.net/u010587433/article/details/49305019 需求: 使用Goldengate完成Mysql到Mysql的数据同步,源库的o2m-mc库同步到目标库的gmdc库,表名GMQDSJSP,换句话说,就是不同数据库之间表之间数据的同步 实验准备: 系统: CentOS 7.2 mysql版本 :  5.7-12 mysql-1 : 192.168.68.13     mysql-2:192.168.68.14 1.初始化

MYSQL主从不同步延迟原理分析及解决方案(摘自http://www.jb51.net/article/41545.htm)

1. MySQL数据库主从同步延迟原理.要说延时原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的操作,主 库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高,slave的Slave_IO_Running线程到主库取日志,效率很 比较高,下一步,问题来了,slave的Slave_SQL_Running线程将主库的DDL和DML操作在slave实施.DML和DDL的IO操作 是随即的,不是顺序的,成本高很多,还可能可slave上的其他查询产生lo

使用maatkit工具检查并同步mysql主从数据

Maatkit是一组开源工具包,为mysql的日常管理提供了帮助.其中mk-table-checksum可以用来检测master和slave的表结构和数据是否一致.同时,通过mk-table-sync工具,在发现主从数据不一致时,可以修复不同步的数据. 实验环境: Master:192.168.189.143:3306 Slave:192.168.189.144:3306 1:安装Maatikit工具. 安装perl环境:   #wget http://packages.sw.be/perl-T

MYSQL主从不同步延迟原理分析及解决方案

1.网络的延迟由于mysql主从复制是基于binlog的一种异步复制,通过网络传送binlog文件,理所当然网络延迟是主从不同步的绝大多数的原因,特别是跨机房的数据同步出现这种几率非常的大,所以做读写分离,注意从业务层进行前期设计.2.主从两台机器的负载不一致由于mysql主从复制是主数据库上面启动1个io线程,而从上面启动1个sql线程和1个io线程,当中任何一台机器的负载很高,忙不过来,导致其中的任何一个线程出现资源不足,都将出现主从不一致的情况.3.max_allowed_packet设置