Chinaunix首页 | 论坛 | 博客
  • 博客访问: 368931
  • 博文数量: 273
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1430
  • 用 户 组: 普通用户
  • 注册时间: 2018-02-02 15:57
文章分类

全部博文(273)

文章存档

2018年(273)

我的朋友

分类: Mysql/postgreSQL

2018-08-03 13:34:34

一、MySQL为什么会延迟

数据延迟: 是指master执行了N个事务,slave却只执行了N-M个事务,说明master和slave之间产生了延迟

延迟原因:延迟的原因很多种,大部分情况下是 slave的处理能力跟不上master导致

接下来,我们从各种角度分析下延迟的原因

1.1 MySQL复制的架构

delay_1

通过架构图,可以直观的看到数据延迟的点有哪些,当然也就可以知道如何优化了

1.2 大事务导致的延迟

大家都知道,binlog的写入时机是在commit的时候,redo的写入时机是在事务执行阶段就开始。

Oracle是通过物理复制,我们姑且认为是redo的复制,因为redo是事务执行阶段就开始写入的,所以,oracle的复制几乎没有延迟

MySQL是基于binlog复制的,如果有一个非常大的事务,如果需要1个小时,那么master在1小时候后才会生成binlog,而此时,slave就比master慢了至少1个小时,还不算是binlog传输时间

这是第一种延迟原因,破解方法后面说

PS: DDL虽然不是事务,但是特性跟大事务一样,都是在master上执行了一个巨大无比的操作才写的binlog


阅读(1012) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~