• mysql 读写分离,主从同步 理论


    mysql主从复制中:
    第一步:master记录二进制日志。在每个事务更新数据完成之前,master在二进制日志记录这些改变。MySQL将事务写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,master通知存储引擎提交事务。
    第二步:slave将master的binary log拷贝到它自己的中继日志。首先,slave开始一个工作线程——I/O线程。I/O线程在master上打开一个普通的连接,然后开始binlog dump process。Binlog dump process从master的二进制日志中读取事件,如果已经执行完master产生的所有文件,它会睡眠并等待master产生新的事件。I/O线程将这些事件写入中继日志。
    第三步:SQL slave thread(SQL从线程)处理该过程的最后一步。SQL线程从中继日志读取事件,并重新执行其中的事件而更新slave的数据,使其与master中的数据一致。

    此外,在master中也有一个工作线程和其它MySQL的连接一样,slave在master中打开一个连接也会使得master开始一个线程。复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。

    1.一主多备:一般用来做读写分离的,master写,其他slave读,Master :I/O压力集中

     

    2.M-S-S

    使用一台slave作为中继,分担Master的压力,slave中继需要开启bin-log,并配置log-slave-updates

    中继不存数据,只做转发:Slave中继可使用Black-hole存储引擎,不会把数据存储到磁盘,只记录二进制日志

    3、M-M  双主互备

    很多人误以为这样可以做到MySQL负载均衡,实际什么没什么好处,每个服务器需要做同样的同步更新,破坏了事物的隔离性和数据的一致性

    4、M-M-M

    监控三台机器互相做对方的master,互相为主从。

    天生的缺陷:复制延迟,slave上同步要慢于master,如果大并发的情况那延迟更严重

    Mysql在5.6已经自身可以实现fail over

    5、One slave Muti master  一从对多主

    好处:节省成本,将多个master数据自动化整合

    缺陷:对库和表数据的修改较多

  • 相关阅读:
    记一次简单的正则表达式匹配实践
    使用readlines()读取文件时出现/n及其解决办法
    浅谈http和https
    JVM GC回收原理的认识
    Mysql中语言分类和区别
    关于storm程序性能压测记录及总结
    Java 集合框架
    MySQL binlog底层主从同步原理
    Docker-Compose安装
    gcc手动安装
  • 原文地址:https://www.cnblogs.com/yuguangyuan/p/5984972.html
Copyright © 2020-2023  润新知