mysql主从同步问题_MySQL主从不同步问题分析与处理思路

之前部署了Mysql主从复制环境(MySQL主从复制环境部署【http://blog.itpub.net/31015730/viewspace-2153251/】)以及总结了mysql主从复制的原理和相关知识(MySQL主从复制原理及必备知识总结【http://blog.itpub.net/31015730/viewspace-2154408/】),但是在mysql主从同步过程中会出现很多问题,导致数据同步异常,主要有两个比较头疼的问题:

1、主从数据不同步后如何处理?

2、主从同步延迟问题如何解决?

以下内容梳理了几种主从同步中可能存在的问题以及解决思路:

(1)slave运行过慢不能与master同步,也就是MySQL数据库主从同步延迟

MySQL数据库slave服务器延迟的现象是非常普遍的,MySQL复制允许从机进行SELECT操作,但是在实际生产环境下,由于从机延迟的关系,很难将读取操作转向到从机。这就导致了有了以下一些潜规则:“实时性要求不高的读取操作可以放到slave服务器,实时性要求高的读取操作放到master服务器”,“从机仅能做前一天的统计类查询”。

slave滞后即slave不能快速执行来自于master的所有事件,从而不能避免更新slave数据延迟。

mysql的master-slave架构中master仅做写入、更新、删除操作,slave做select操作。造成slave滞后的原因有很多。

slave同步延迟的原理

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执行完才会继续执行,这就导致了延时。也许有人会质疑:主库上那个相同的DDL也会执行几分钟,为什么slave会延时?原因是master可以并发执行,而Slave_SQL_Running线程却不可以。

slave同步延迟的可能原因

1--slave的I/O线程推迟读取日志中的事件信息;最常见原因是slave是在单线程中执行所有事务,而master有很多线程可以并行执行事务。

2--带来低效连接的长查询、磁盘读取的I/O限制、锁竞争和innodb线程同步启动等。

3--Master负载;Slave负载

4--网络延迟

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

(主从同步延迟怎么产生的?)总之

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值