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

猜你喜欢

转载自www.cnblogs.com/linux123/p/11829278.html
今日推荐