MySQL复制延迟优化的方法论

一、MySQL为什么会延迟

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

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

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

1.1 MySQL复制的架构

MySQL复制延迟优化的方法论_第1张图片

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

1.2 大事务导致的延迟

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

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

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

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

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

原文链接

你可能感兴趣的:(MySQL复制延迟优化的方法论)