2018年(273)
分类: Mysql/postgreSQL
2018-08-03 13:34:34
数据延迟: 是指master执行了N个事务,slave却只执行了N-M个事务,说明master和slave之间产生了延迟
延迟原因:延迟的原因很多种,大部分情况下是 slave的处理能力跟不上master导致
接下来,我们从各种角度分析下延迟的原因
通过架构图,可以直观的看到数据延迟的点有哪些,当然也就可以知道如何优化了
大家都知道,binlog的写入时机是在commit的时候,redo的写入时机是在事务执行阶段就开始。
Oracle是通过物理复制,我们姑且认为是redo的复制,因为redo是事务执行阶段就开始写入的,所以,oracle的复制几乎没有延迟
MySQL是基于binlog复制的,如果有一个非常大的事务,如果需要1个小时,那么master在1小时候后才会生成binlog,而此时,slave就比master慢了至少1个小时,还不算是binlog传输时间
这是第一种延迟原因,破解方法后面说
PS: DDL虽然不是事务,但是特性跟大事务一样,都是在master上执行了一个巨大无比的操作才写的binlog