zoukankan      html  css  js  c++  java
  • MySQL 主从复制原理及过程讲解

    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 的 复制机制也包含一些特殊的情况,具体请参考官方的说明,大多数情况下,大家是不用 担心的 。

  • 相关阅读:
    【LCT维护基环内向树森林】BZOJ4764 弹飞大爷
    【LCT】BZOJ3091 城市旅行
    【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版
    【最大权闭合子图】bzoj4873 [Shoi2017]寿司餐厅
    【LCT】BZOJ2049 [SDOI2008]Cave 洞穴勘测
    【有上下界的网络流】ZOJ2341 Reactor Cooling(有上下界可行流)
    【费用流】BZOJ1061: [Noi2008]志愿者招募(这题超好)
    从输入url到页面加载的过程
    forEach和map的区别
    理解 JavaScript 对象原型、原型链如何工作、如何向 prototype 属性添加新的方法。
  • 原文地址:https://www.cnblogs.com/linux123/p/11829278.html
Copyright © 2011-2022 走看看