mysql主从原理描述,摘自老男孩。

下面简 单描述下 MySQL Replication 复制的原理及过程 。

1.在 Slave 服务器上执行 start slave 命令开启主从复制开关,主从复制开始进行 。 2)此时, Slave服务器的 I/O线程会通过在 Master上已经授权的复制用户权限请求

2.此时, Slave服务器的 I/O线程会通过在 Master上已经授权的复制用户权限请求连接 Master 服务器 ,并请求从指定 binlog 日志文件的指定位 置(日志文件名 和位置就是 在配置主从复制服务时执行 change master 命令指定的)之后开始发送 binlog 日志内容 。

3.Master服务器接收到来自 Slave服务器的 I/O线程的请求之后,其上负责复制的 binlog dump 线程会根据 Slave 服务器的 I/O 线程请求的信息,分批读取指定 binlog 日 志文件所指定位置之后的 binlog 日志信息,然后返回给 Slave 端的 I/O 线程 。 返回的信 息中除了 binlog 日 志内容之外,还包括在 Master 服务器端记录的新的 binlog 文件名称, 以及在新的 binlog 中的下一个指定的更新位置 。

4.当 Slave服务器的 I/O线程获取到 Master服务器上 I/O线程发送的日志内容及 日志文件和位置点之后 ,会将 binlog 日志内容依次写入到 Slave 端自身的 Relay Log (即 中继日志)文件(MySQL-relay-bin.xxxxxx)的最末端,并将新的 binlog文件名和位置记录到 master-info 文件中,以便下 一 次读取 Master 端新 binlog 日志时,能够告诉 Master 服务器需要从新 binlog 日志的指定文件及位置开始请求新的 binlog 日志内容 。

5.slave服务器端的 SQL线程会实时地检测本地 Relay Log 中 I/O线程新增加的日 志内容,然后及时地把 Relay Log 文件中的内 容解析成 SQL 语句, 并在自身 Slave 服务 器上按解析 SQL 语句的位置顺序执行和应用这些 SQL 语句,并将当前应用中继日志的 文件名及位置点记录在 relay-log.info 中 。

经过了上面的过程,就可以确保在 Master端和 Slave端执行了同样的 SQL 语句 。 在复制状态正常的情况下, Master 端和 Slave 端的数据 是完全一样 的 。 当然, MySQL 的 复制机制也包含一些特殊的情况,具体请参考官方的说明,大多数情况下,大家是不用 担心的 。

最新文章

  1. 从express源码中探析其路由机制
  2. java访问修饰符
  3. eclipse报错“Undefined variable from import: ...”解决方案
  4. 互联网+下PDA移动智能手持POS超市收银开单软件
  5. 非常简单的数据,支持excel表格下载功能
  6. C# Socket系列二 简单的创建 socket 通信
  7. u3d_Shader_effects笔记5 第二章 通过UV,进行纹理移动
  8. Windows下Faster-RCNN的使用
  9. ASP.NET MVC中实现多个按钮提交的几种方法
  10. struts2中各种值栈问题
  11. ASP.NET MVC+Bootstrap个人博客之praise.js点赞特效插件(二)
  12. _CrtSetBreakAlloc简单内存泄漏检测方法,解决Detected memory leaks!问题
  13. 【 D3.js 入门系列 — 2 】 绑定数据和选择元素
  14. THINKPHP 5.0目录结构
  15. 【BZOJ2733】【HNOI2012】永无乡
  16. Android高效率编码-第三方SDK详解系列(一)——百度地图,绘制,覆盖物,导航,定位,细腻分解!
  17. 你必须知道的 SmartSql !
  18. 自动化部署-Jenkins+SVN+MSBuild
  19. 简单的socket编程
  20. WindowsServer2003双网卡配置

热门文章

  1. Spring5:事务管理【整合Mybatis】
  2. centos 部署 vue项目
  3. 负载均衡服务之HAProxy基础配置(四)
  4. 一个令人兴奋的ES6星特性-结构赋值
  5. SpringBoot【新手学习记录篇】
  6. 今天,VS Code 五岁了。
  7. netcore 下的policy授权自定义返回结果
  8. json格式的相互转化
  9. Libra教程之:数据结构和存储
  10. JS基础入门篇(十)— 数组方法