美文网首页
Mysql主从复制

Mysql主从复制

作者: zfh_51d2 | 来源:发表于2020-11-16 00:25 被阅读0次

MySQL 主从复制概念

MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。一般主服务器负责写,而从服务器负责读,Mysql的主从复制的过程是一个异步的过程。

MySQL 主从复制作用

1.读写分离

在开发工作中,有时候会遇见某个sql 语句需要锁表,导致暂时不能使用读的服务,这样就会影响现有业务,使用主从复制,让主库负责写,从库负责读,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作。

2.高可用

当系统中某个节点发生故障时,可以方便的故障切换。

3.提高读写性能

有了主从复制,增加多个数据存储节点,将负载分布在多个从节点上,这样可以提高系统的读写性能。

MySQL 主从形式

1.一主一从
2.一主多从,提高系统的读性能

一主一从和一主多从是最常见的主从架构,实施起来简单并且有效,
优点:不仅可以实现高可用,而且还能读写分离,进而提升集群的并发能力。
缺点:主库更新的数据到从库更新数据有一定的延迟。

3.多主一从

多主一从可以将多个mysql数据库备份到一台存储性能比较好的服务器上

4.双主复制

双主复制,也就是互做主从复制,每个master既是master,又是另外一台服务器的slave。这样任何一方所做的变更,都会通过复制应用到另外一方的数据库中。

5.级联复制

如果太多从库从主库同步数据,会对主库有一点压力,所以可以让一部分从库从连接主库的从库上同步数据。

主从复制的原理

例如一主一从的情况下,从库 B 跟主库 A 之间维持了一个长连接:
1.在从库 B 上通过 change master 命令,设置主库 A 的 IP、端口、用户名、密码,以及要从哪个位置开始请求 binlog,这个位置包含文件名和日志偏移量。
2.在从库 B 上执行 start slave 命令,这时候从库会启动两个线程,就是图中的 io_thread 和 sql_thread。其中 io_thread 负责与主库建立连接。
3.主库 A 校验完用户名、密码后,开始按照从库 B 传过来的位置,从本地读取 binlog,发给 B。
4.从库 B 拿到 binlog 后,写到本地文件,称为中转日志(relay log)。
5.sql_thread 读取中转日志,解析出日志里的命令,并执行。

循环复制问题


在双主复制的情况下A、B库都为主库,会互相发送更新语句,所以为了避免循环执行的情况,要求两个库的 server id 必须不同,如果相同,则它们之间不能设定为主备关系。MySQL 在 binlog 中记录了这个命令第一次执行时所在实例的 server id。每个库在收到从自己的主库发过来的日志后,先判断 server id,如果跟自己的相同,表示这个日志是自己生成的,就直接丢弃这个日志。

读写分离的问题及解决办法

问题:主库更新数据到从库更新数据会存在延迟,客户端执行完一个更新事务后马上发起查询,如果查询选择的是从库的话,就有可能读到刚刚的事务更新之前的状态。
解决方案:
  • 强制走主库方案
    1.对于必须要拿到最新结果的请求,强制将其发到主库上。比如,在一个交易平台上,卖家发布商品以后,马上要返回主页面,看商品是否发布成功。那么,这个请求需要拿到最新的结果,就必须走主库。
    2.对于可以读到旧数据的请求,才将其发到从库上。在这个交易平台上,买家来逛商铺页面,就算晚几秒看到最新发布的商品,也是可以接受的。那么,这类请求就可以走从库。
  • sleep 方案
    主库更新后,读从库之前先 sleep 一下。
  • 判断主备无延迟方案
    show slave status 结果里的 seconds_behind_master 参数的值,可以用来衡量主备延迟时间的长短。每次从库执行查询请求前,先判断 seconds_behind_master 是否已经等于 0。如果还不等于 0 ,那就必须等到这个参数变为 0 才能执行查询请求。
  • 用redis之类的做缓存
    主库更新成功之后更新进redis,下次读也就直接读redis了。

相关文章

  • MySQL如何配置主从复制,如何修复主从复制出现的异常?

    MySQL如何配置主从复制,如何修复主从复制出现的异常? 一、什么是Mysql主从复制 MySQL主从复制是其最重...

  • MySQL-主从复制&读写分离

    零、本文纲要 一、MySQL主从复制 主从复制 主从复制过程 配置主从复制 二、MySQL读写分离 读写分离 Sh...

  • Mysql 主从复制

    Mysql 主从复制 MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据...

  • 主从复制 & MHA

    一,mysql主从复制 (1)场景一(主从复制 _ 全新环境下) (2)场景二(主从复制 _ mysql已经使用一...

  • mysql主从复制

    构建MySQL主从复制 MySQL的主从复制和mysql的读写分离两者有着紧密联系,数据的读写分离实在主从复制的基...

  • Spring Data JPA 使用主从数据源

    Mysql 配置主从复制 参考:Mysql主从复制-半同步复制[https://www.jianshu.com/p...

  • MySQL集群篇

    1 集群之主从复制 1.1 主从复制概述 MySQL主从复制也可以称为MySQL主从同步,它是构建数据库高可用集群...

  • 深度探索MySQL主从复制原理

    概要 MySQL Replication (MySQL 主从复制) 是什么? 为什么要主从复制以及它的实现原理是什...

  • 【转】MySQL 8.0复制改进

    1 - MySQL主从复制模型 我们从最基本的主从复制模型开始说起,下图是最经典的MySQL主从复制架构图: My...

  • mysql主从代理

    mysql主从复制+读写分离 环境: mysql主:193.168.1.1 mysql从:193.168.1.2 ...

网友评论

      本文标题:Mysql主从复制

      本文链接:https://www.haomeiwen.com/subject/sifobktx.html