mysql系列之(3)——mysql主从同步介绍

1、mysql同步原理


(1)、master记录二进制日志。在每个事务更新数据完成之前,master在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。

(2)、slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经跟上master,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。(slave在master中打开一个连接也会使得master开始一个线程。复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。)

(3)、SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重放其中的事件而更新slave的数据,使其与master中的数据一致。中继日志通常会位于OS的缓存中,所以中继日志的开销很小。

2、同步方式

主从复制--异步复制原理


半同步复制原理:降低了主从延迟可能,但是影响主库性能


并行复制(mysql 5.7之后)

并行是指从库多线程apply binlog,库级别并行应用binlog,同一个库数据更改还是串行的(5.7版并行复制基于事务组)。

set global slave_parallel_workers=10; 设置sql线程数为10

3、主从复制延迟处理

主从延迟原因:当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了,当然还有就是可能与slave的大型query语句产生了锁等待。

方法一:插入后,更新缓存服务如redis,其他节点需先读缓存中的数据。然后再写入从mysql。

方法二:基于binlog单线程从主库到从库,主库添加时间戳做同步标记,读从库前检查同步时间戳标记是否同步。

方法三:采用并行复制机制,减缓延迟

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 复制概念 Mysql内建的复制功能是构建大型,高性能应用程序的基础。 将Mysql的数据分布到多个系统上去,这种分...
    jiangmo阅读 3,919评论 0 0
  • 1、复制概述: MySQL内建的复制功能是构建大型,高性能应用程序的基础。将mysql的数据分布到多个系统上去,这...
    魔法师_阅读 10,937评论 0 5
  • 环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6....
    思梦PHP阅读 6,208评论 0 12
  • 这是一股躁动的能量…… 其实我已经很习惯了,就像熟络的老朋友,从小就是在这股能量的“眷顾”下过来的…… 它集中在腹...
    圆零阅读 1,432评论 1 1
  • 从人群中挤到前台,在住宿表中寻找着自己的名字。 看到我旁边是何鑫,心里很失落,不该是我和自己区域的人在一起吗?为什...
    夏晴风阅读 2,953评论 0 1

友情链接更多精彩内容