zoukankan      html  css  js  c++  java
  • MySQL主从复制延迟解决方案

    第1章 MySQL主从复制延迟解决方案

    1.1主从复制原理:

    Mysql主从复制是单线程操作的,io线程读取binlog日志,效率会比较高,但是SQL线程将主库的DDLDML操作早slave端实施,DMLDDLio操作是随机的,不是顺序的,成本会比较高,还可能salve端有查询操作导致lock争抢,SQL线程也是单线成的,一个DDL卡住了,需要时间执行,所有DDL就会等待那个DDL,问题就来了,主从复制就会有延迟了。

    1.1.1DDLDML是什么?

     SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL

    1.1.2为什 么slave会延时?

    master是并发的,SQL线程却不可以

    1.2导致主从复制延迟的原因:

    1. 当主库的TPS并发较高时,产生的DDL数量超过slave一个sql线程所能承受的范围,那么延时就产生了。
    2. 当然还有就是可能与slave的大型query语句产生了锁等待。
    3. 服务器硬件太差。
    4. 负载过高(masterslave),大量的查询操作。
    5. 网络延迟

    1.3如何解决主从复制延迟问题:

    1.3.1方案一:读写分离

    1.3.2方案二:半同步

    1.3.3.方案三:修改配置文件,尽量让主库的DDL快速执行

    比如 sync_binlog=1innodb_flush_log_at_trx_commit = 1 之类的设置,而slave则不需要这么高的数据安全,完全可以讲sync_binlog设置为0或者关闭binloginnodb_flushlog也 可以设置为0来提高sql的执行效率

    1.3.4方案四:提升slave端硬件设备

    使用比主库更好的硬件设备作为slave

  • 相关阅读:
    小米范工具系列之二:小米范 web目录扫描器
    小米范工具系列之一:小米范 web查找器
    Layer子域名挖掘机
    unity第一人称
    浏览器的兼容大坑
    java掉系統进程
    java写的服务器,处理多个请求
    java网络练习一
    javaWeb开发原理
    unity传统GUI学习一.
  • 原文地址:https://www.cnblogs.com/A121/p/10471895.html
Copyright © 2011-2022 走看看