前言

MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。

MySQL主从复制架构图

  • 一主一从

master-slave-replication-01

  • 一主多从

master-slave-replication-02

  • 级联

master-slave-replication-03

  • 双主一从

master-slave-replication-04

  • 互为主从

master-slave-replication-05

  • 环状

master-slave-replication-06

主从复制原理

MySQL的主从复制是一个异步的复制过程,数据库从一个Master复制到Slave数据库,在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的,其中有两个线程(SQL线程和IO线程)在Slave端,另一个线程(IO线程)在Master端。

主从复制流程图

流程说明:

MySQL主从复制之前我们需要先启动Master数据库然后再启动Salve数据库,然后在Salve数据库中执行start slave;,执行完成之后,流程就如下了:

  1. Salve的IO线程会读取mastr.info文件中配置好的主库信息,比如说存放的有:Master数据库的用户名、密码、端口、还有Master的binlog索引位置;
  2. 拿到信息之后就带着信息去链接Master的主库IO线程
  3. 当主库的IO线程先检查SLave传过来的配置信息是否正确,如果正确,就拿着Slave传过来的binlog索引位置和Master库的binlog文件中最后一个索引位置进行对比,如果一致就陷入等待状态,等待Master的binlog索引位置更新;
  4. 如果不一致就把Slave传过来的binlog索引位置往后的所有SQL语句包括最后一条SQL语句的索引位置发送个给Slave的IO线程;
  5. Slave的IO线程拿到信息之后,先把Master传过来的binlog索引在Slave的master.info文件中进行更新;
  6. 然后再把Master传过来的SQL语句写入到relay文件中,然后继续循环执行第二个步骤;
  7. Slave的SQL线程会一直持续的观察relay日志文件中是否有改动,如果没有就继续监听;
  8. 如果发现relay中有变动,那么就获取变动的内容转换为SQL语句,并且把SQL语句在Salve的数据库中进行执行

mysql的主从复制是如何实现的相关推荐

  1. mysql的主从复制原理与实现

    关于mysql的主从复制,之前一直在听说这个话题,一直没有实现,昨天学习了下,原来是这么回事: 既然是主从复制,那么肯定有主有从,也就说一个主数据库(一般为写库),一个从数据库(读库).主数据库更新了 ...

  2. php mysql 主从复制_Windows 环境下,MySQL 的主从复制和主主复制

    Mysql的主从配置 1.找到配置文件 找到配置文件是主从复制的第一个难点.很多新手都容易找错配置文件,一般my.ini配置文件所在的位置都是隐藏的. 一般人都以为配置文件为 C:\Program F ...

  3. MySQL Replication 主从复制全方位解决方案

    MySQL Replication 主从复制全方位解决方案 参考文章: (1)MySQL Replication 主从复制全方位解决方案 (2)https://www.cnblogs.com/clsn ...

  4. MyCat学习:使用MySQL搭建主从复制(一主一从模式)

    首先使用MyCat登录需要一个前提,那就是有MySQL的主从复制 开始搭建MySQL主从复制(一主一从) 一.配置文件修改 主机配置文件修改 server-id=1 # 定义服务器唯一ID log-b ...

  5. Mysql 8主从复制配置图解

    Mysql 8主从复制配置图解 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理.本文主要介绍mysql的主从的配置. 注:1 当前主服务 ...

  6. MySQL搭建主从复制 读写分离 分库分表 MyCat高可用

    主从演示 读写演示 分表演示 主从复制 环境的介绍 系统环境:centos7.0 客户端连接工具:xshell 远程文件传输工具:xftp 服务器: 192.168.126.138(主) 192.16 ...

  7. 基于mysql的主从复制之Mycat简单配置和高可用

    what-mycat 1.Mycat就是MySQL Server,而Mycat后面连接的MySQL Server,就好象是MySQL的存储引擎,如InnoDB,MyISAM等. 因此,Mycat本身并 ...

  8. 利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复。

    利用percona-toolkit工具检查MySQL数据库主从复制数据的一致性,以及修复. 一.pt-table-checksum检查主从库数据的一致性 pt-table-checksum在MASTE ...

  9. 怎样解决MySQL数据库主从复制延迟的问题?

    1.网络超时 2.慢查询 3.流量 问题一:主库的从库太多,导致复制延迟 从库数据以3-5个为宜,要复制的从节点数量过多,会导致复制延迟 问题二:从库硬件比主库差,导致复制延迟 查看Master和Sl ...

最新文章

  1. jstl:sql标签介绍
  2. linux 查找进程 删除进程 命令
  3. 一个SAP开发人员的2018年终总结
  4. [转]总结:Apache/Tomcat/JBOSS/Jetty/Nginx区别 .
  5. 【Java】jdk和eclipse下载安装
  6. linux内核的I2C子系统详解4——i2c-s3c2410.c文件中的adapter、algorithm
  7. mac hosts文件已锁定无法修改怎么办?hosts修改权限设置教程
  8. 软工第二次结对作业---部门录取方案实现
  9. java ftp遍历所有子文件_Java 遍历指定文件夹及子文件夹下的文件
  10. python网站服务器好麻烦_python写的网站,云服务器经常无法访问
  11. chrome浏览器不展示地址栏的完整路径解决
  12. ISO27001信息安全管理体系
  13. Keytool命令详解
  14. VS2015 还是VS2017 好用_如何卸载清理vs2017前vs2015,vs2013等版本
  15. 一个可以免费下载英文书籍的网站
  16. Rxjava(Subject)-BehaviorSubject--代码分析
  17. vue移动端网页微信分享
  18. FortiGate常用命令
  19. Java learn lambda的方法引用
  20. 就是美女,怎么了!!!

热门文章

  1. Mybatis逆向工程过程中出现targetRuntime in context mybatisGenerator is invalid
  2. VR技术怎么落地,行业应用怎么挖掘,来江苏虚拟现实发展大会侃侃
  3. 为Linux上的Tomcat安装apr支持
  4. 《Java工程师修炼之道》内容概览
  5. pro*c 倒出数据库数据
  6. HTTP Slow Attack测试工具SlowHTTPTest
  7. 程序员看过来!高通漏洞赏金最高1.5万美金
  8. 精益业务分析宣言解读
  9. uikit框架开发前期配置及定制主题方法。
  10. centos6.5用memcached 来作PHP 的session.save_handler