MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合。与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少。

MySQL的Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),它是从一个Mysql instance(instance英文为实例)(我们称之为Master)复制到另一个Mysql instance(我们称之slave)。在master与slave之间实现整个复制过程主要由三个线程来完成,其中两个线程(SQL线程和IO线程)在slave端,另外一个线程(IO线程)在master端。

要实现MySQL的Replication,首先必须打开master端的binlog (mysql-bin.xxxxxx)日志功能,否则无法实现mysql的主从复制。因为mysql的整个主从复制过程实际上就是:slave端从master端获取binlog日志,然后再在自己身上完全顺序的执行该日志中所记录的各种SQL操作。

有关具体如何开启mysql的binlog日志功能,可以查看这篇文章《烂泥:学习mysql的binlog配置》。

MySQL主从复制的基本交互过程,如下:

1、slave端的IO线程连接上master端,并请求从指定binlog日志文件的指定pos节点位置(或者从最开始的日志)开始复制之后的日志内容。

2、master端在接收到来自slave端的IO线程请求后,通知负责复制进程的IO线程,根据slave端IO线程的请求信息,读取指定binlog日志指定pos节点位置之后的日志信息,然后返回给slave端的IO线程。该返回信息中除了binlog日志所包含的信息之外,还包括本次返回的信息在master端的binlog文件名以及在该binlog日志中的pos节点位置。

3、slave端的IO线程在接收到master端IO返回的信息后,将接收到的binlog日志内容依次写入到slave端的relaylog文件(mysql-relay-bin.xxxxxx)的最末端,并将读取到的master端的binlog文件名和pos节点位置记录到master-info(该文件存在slave端)文件中,以便在下一次读取的时候能够清楚的告诉master“我需要从哪个binlog文件的哪个pos节点位置开始,请把此节点以后的日志内容发给我”。

4、slave端的SQL线程在检测到relaylog文件中新增内容后,会马上解析该log文件中的内容。然后还原成在master端真实执行的那些SQL语句,并在自身按顺丰依次执行这些SQL语句。这样,实际上就是在master端和slave端执行了同样的SQL语句,所以master端和slave端的数据是完全一样的。

以上mysql主从复制交互过程比较拗口,理解起来也比较麻烦,我简化了该交互过程。如下:

1、master在执行sql之后,记录二进制log文件(bin-log)。

2、slave连接master,并从master获取binlog,存于本地relay-log中,然后从上次记住的位置起执行SQL语句,一旦遇到错误则停止同步。

从以上mysql的Replication原理可以看出:

* 主从间的数据库不是实时同步,就算网络连接正常,也存在瞬间主从数据不一致的情况。

* 如果主从的网络断开,则从库会在网络恢复正常后,批量进行同步。

* 如果对从库进行修改数据,那么如果此时从库正在在执行主库的bin-log时,则会出现错误而停止同步,这个是很危险的操作。所以一般情况下,我们要非常小心的修改从库上的数据。

* 一个衍生的配置是双主、互为主从配置,只要双方的修改不冲突,则可以工作良好。

* 如果需要多主库的话,可以用环形配置,这样任意一个节点的修改都可以同步到所有节点。

mysql数据库主从同步的原理_mysql数据库主从同步复制原理相关推荐

  1. mysql r和n的区别_mysql数据库 r n

    mysql集群的备份与还原 应用场景 当使用mysql集群数据库的时候,有时候会误删一些数据,那么数据就缺失了完整性,现在需要将数据进行备份,将误删的数据还原出来,这样保证数据的完整性. 操作步骤 注 ...

  2. mysql数据库基础 博客园_MySQL数据库基础

    数据库的一些概念题: DB DBMS 和DBS三者之间的关系 DBS(数据库系统) 包含DB(数据库)和DBMS(数据库管理系统) DB:是指datebase(数据库) DBS:是指datebase ...

  3. mysql数据库中插入表信息_mysql数据库中插入表

    通过binlog恢复mysql数据库 在上一篇文章,我们讲解了有关mysql的binlog日志的基础知识.这篇文章,我们来讲解如何通过mysql的binlog日志来恢复数据库. 在使用binlog日志 ...

  4. mysql版本升级对数据的影响_MySQL数据库升级的一些坑

    对于商业数据库而言,数据库升级是一个优先级很高的事情,有版本升级路线图,有相应的补丁,而且对于方案还有一系列的演练,陷入是一场硬仗.而在MySQL方向上,升级这件事情就被淡化了许多,好像只能证明它的存 ...

  5. mysql数据库驱动的类全名_mysql数据库全称

    PHP面试干货 1.进程和线程 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性.进程和线程的区别在于: 简而言之,一个程序至少有一个进程,一个进程至少有一 ...

  6. mysql数据库初识实训总结_MySQL数据库初识(基础语句)

    初识Mysql 认知 数据库:DB 所有的数据存放的仓库 每一个文件夹也是数据库 数据库管理员:DBA 管理数据库软件 数据库服务器:一台跑着一个数据库管理软件的机器 表:文件,一张存储了数据的表 数 ...

  7. mysql数据库怎么安装建表_mysql数据库安装及建表注意事项

    在使用mysql数据库的时候,难免会遇到插入中文出现"data too long for....."的错误,这个其实不是字段值设置太小的原因,而恰恰是数据库编码和创建数据库实例时设 ...

  8. mysql数据意外删了怎么办_MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办...

    MySQL数据库意外崩溃导致表数据文件损坏无法启动怎么办 发布时间:2020-07-20 13:45:46 来源:亿速云 阅读:57 作者:小猪 这篇文章主要为大家展示了MySQL数据库意外崩溃导致表 ...

  9. mysql数据库任务驱动教程答案_MySQL数据库任务驱动式教程

    项目一 认识数据库 任务1 认识数据库 1.1 了解数据库的基本应用 1.2 了解数据库的几个概念 1.3 认识关系型数据库 1.4 关系数据库设计 1.5 数据库应用系统体系结构 1.6 认识一个真 ...

最新文章

  1. Kafka配置SASL/PLAIN认证
  2. 【iCore组合式双核心开发板教程】通过STM32 FSMC 读写FPGA Verilog 例子
  3. Kotlin代码检查在美团的探索与实践
  4. html网页设计大赛_HTML5网页设计大赛 || 决赛名单公布
  5. jpa级联添加_JPA中的一对多双向关联与级联操作
  6. [转] Agile Software Development 敏捷软件开发
  7. 一键清理windows系统垃圾|临时文件bat脚本
  8. 进入加密的QQ空间方法
  9. 计算机文件丢失不能正常启动,电脑说文件丢失或损坏开不了机怎么办?
  10. 9 行 javascript 代码获取 QQ 群成员
  11. 微信如何群发消息给好友和群:一键群发
  12. [云原生专题-24]:K8S - Kubernetes(K8S)Master集群构建与安装过程详细解读 - 初始控制节点的安装
  13. OSError: Unable to create file (unable to open file: name = ‘../working/best.hdf5 No such file or di
  14. 科学计算机常用按键,电脑计算器里面的“科学型”的里面所有的按键的功能
  15. 测试个人禀赋的软件,中医体质自测,个人体质测试,体质健康测试,测试自己的体质...
  16. 关于Linux的介绍与安装
  17. 【数据结构】——顺序表介绍(独家介绍,小白必看!!)
  18. 专题10:如何应对面试官的拷问—你了解python的装饰器吗?
  19. 醇香即刻到手,Barsetto百胜图BAV02自助咖啡机
  20. 华为模拟器eNSP练习题 - VRRP、STP

热门文章

  1. 嘉年华专访 | 我有故事,你有酒吗?
  2. KubeEdge在国家工业互联网大数据中心的架构设计与应用
  3. 面试必问:如何实现Redis分布式锁
  4. 让你的产品更懂世界:如何提升场景文本识别中的语言模型
  5. 【5G科普】华为码chine姐姐聊5G 第1期:5G究竟是个啥?
  6. Presto性能调优的五大技巧
  7. 【华为云技术分享】气象模拟WRF容器化操作实践
  8. 【鲲鹏来了】华为云鲲鹏弹性云服务器 KC1一文全掌握(4)
  9. 高性能Web动画和渲染原理系列(5)合成层的生成条件和陷阱
  10. 【Python3网络爬虫开发实战】1.3.4-tesserocr的安装