• 欢迎访问www.xadocker.cn QQ群
  • 时间不在于你拥有多少,而在于你们如何使用。-----艾克
  • 自立自主总胜过俯首为奴!-----卡密尔
  • 每个人都有一副面具,我只是自制了一副。-----戏命师
  • 真正的大师,永远怀着一颗学徒的心。-----剑圣
  • 世间万物表里如一者,又有几何?-----婕拉

Mysql-主从结构

DB xadocker.cn 8个月前 (03-10) 138次浏览 0个评论 扫描二维码
文章目录[隐藏]

Mysql-主从结构概述

简介

    基于二进制日志的复制
    主库的修改操作会记录二进制日志
    从库会请求新的二进制日志,并回复,最终达到主从数据同步

前提

    两台实例
    主库需开启二进制日志
    主从复制需要专用的用户
    主从复制之前需要保证 主从库的数据是一致的
    从库上需要配置连接主库的信息
    三个重要的线程:Dump thread IO thread SQL thread

主从复制原理

主从涉及的文件和线程

涉及的文件

    mysql-bin.000002 在主库上,该文件记录了主库上的二进制日志
    db01-relay-bin.000002 在从库上,该文件记录了从库的中继日志
    master.info 在从库上,该文件记录的从库IO线程连接主库时使用的认证等信息
    relay-log.info 在从库上,记录了SQL线程已经读取中继日志的位置

线程

    DUMP THREAD 在主库上,用来导出和发送二进制日志并发送给从库的IO THREAD
    IO THREAD 向主库获取二进制日志
    SQL THREAD 将中继日志回放为SQL语句并在从库上执行

拓扑及流程

Mysql-主从结构
1. Slave 节点,通过IO线程,读取master.info 的信息(IP port user,passwd,file+position ),然后IO Thread 通过连接信息,连接上主库,主库会生成 DUMP THREAD
2. IO THREAD 通过 master.info 提供的 file+position,找主库请求比这个新的二进制日志事件
3. Master DUMP thread 截取全新的二进制日志”事件”,按照事件为单元,串行传送给 SLAVE IO THREAD
4. SLAVE IO THREAD收到发过来的二进制日志事件,缓存到 TCP/IP cache中,立即返回ACK 给MASTER.
5. SLAVE IO线程,更新master.info中二进制日志信息(你已经获取过的二进制日志信息),并且会将TCP/IP缓存数据写入relay-log日志中
6. SLAVE SQL 线程,读取relay-log.info ,获取到上次已经执行过的relaylog 位置号
7. SQL 线程根据relay log历史记录,往后继续(串行)执行relaylog,执行完成后,再次更新relay-log.info信息
8. relay-log被应用完成后,会定时自动清理

主从复制部署

Step 1 主库开启二进制日志

Step 2 查看每个实例的server id

Step 3 主库创建复制用户

Step 4 导出此时主库的数据来同步到slave

Step 5 从库上设置连接master的信息,然后开启同步

注: 关键参数状态

    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

以上两个参数为Yes则为主从复制状态正确

Step 6 主库上测试写数据

Step 7 从库上检测数据是否同步


xadocker, 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mysql-主从结构
喜欢 (1)
[]
分享 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址