zoukankan      html  css  js  c++  java
  • MySQL主从复制

    主从复制是指的从MySQL的一个节点同步到数据到另外一个节点,默认异步复制机制,这样从节点不用一直访问主服务器 来 更新自己的数据,数据更新可以在远程连接上进行。

    原理  1  master 服务器将数据的改变存放到binlog日志中,当master上的数据发生改变时,则会修改到此二进制的文件中。

            2 slave 服务器 会在一定时间间隔内对master进行二进制进行探测是发生改变,如果发生改变则开始一个I/OThread请求master二进制事件。

            3 master节点为每个I/O线程开启一个dump线程,用户发送二进制事件,并保存到从节点的中继日志中。从节点将启动SQL线程从中继日志中读取二进制日志并执行,使得主节与从节点保持一致,最后I/Othread和SQlThread将保持休眠等待下次被唤醒

           另类解释

           从库会产生两个线程一个I/Othread与SQLThread,

           I/Othread会直接访问master的二进制日志文件binlog 并写到自己的relay-log(中继日志)中

          主库会产生一个log-dump线程给从库传输binlog日志

           SQLThread 会解析relay_log文件中的日志,并解析成SQL语句逐一执行

    binlog 归属MySQL server层

    redolog  undolog 归属MySQL的innodb引擎层,

           

           MySQL主从同步演示分析

          MySQL 的主从复制都是单线程操作,主库对所有的DDL 和DML 产生日志写进binlog中,出于binlog是顺序操作所以效率很高,slave的SQLthread 线程将主库的DDL和DML操作在slave中重放,DML和DDL的操作不是顺序的所以成本很高,另一方面处于SQLThread也是单线程当主库并发较高时产生的写数量超过了slave的SQLThread所能处理的速度,或者slave中有大型的query语句产生了锁等待,那么延时就产生了

         解决方案:

          1,MySQL服务可平行扩展,分散压力

          2,单个库读写分离,一主多从,主写从读,分散压力,

          3,服务的基础架构可以加入cache层(redis ,memcach,)降低读压力

          4 使用跟高的设备作为slave ,MySQL压力小延迟就会变小

    只是查找方便的总结
  • 相关阅读:
    线段树专辑—— pku 1436 Horizontally Visible Segments
    线段树专辑——pku 3667 Hotel
    线段树专辑——hdu 1540 Tunnel Warfare
    线段树专辑—— hdu 1828 Picture
    线段树专辑—— hdu 1542 Atlantis
    线段树专辑 —— pku 2482 Stars in Your Window
    线段树专辑 —— pku 3225 Help with Intervals
    线段树专辑—— hdu 1255 覆盖的面积
    线段树专辑—— hdu 3016 Man Down
    Ajax跨域访问
  • 原文地址:https://www.cnblogs.com/qutao125/p/13431947.html
Copyright © 2011-2022 走看看