• Mysql 45讲学习笔记(二十四)MYSQL主从一致


    一.MySQL 主备的基本原理

    主备切换流程:

         

    • 客户端的读写直接访问节点A,而节点B是A备库,只是将A的更新都同步过来,到本地执行,这样保持节点B和A的数据时相同的
    • 切换到状态2,客户端读写访问的都是节点B,而节点A是B的备库

    将节点B(备库)设置成只读(readonly)模式

    1. 一些运营类的查询语句会被放到备库上去查,设置只读防止误操作
    2. 防止切换逻辑有bug。切换过程中出现双写,造成主备不一致
    3. readonly状态,来判断节点的角色

    备库设置成只读,跟主库保持同步更新

    因为 readonly 设置对超级 (super) 权限用户是无效的,而用于同步更新的线程,就拥有超级权限

    二.UPDATE语句在节点A执行同步到节点B上的步骤:

          

    • 主库接收客户端的跟心请求后,执行内部事务的更新逻辑,同时写binlog
    • 备库B跟主库A之间维持了一个长连接。主库A内部有专门线程来服务备库B的长连接

    三.事务日志同步的完整过程:

    • 在备库B上通过change master命令,设置主库A的IP。端口,用户名,密码以及哪个位置开始请求binlog,这个位置包含文件名和日志偏移量
    • 在备库B上执行start slave命令,这时候备库会启动两个线程,就是图中的 io_thread 和 sql_thread。其中 io_thread 负责与主库建立连接
    • 主库A校验完用户名,密码后,开始按照备库B传过来的位置,从本地读取binlog,发给B
    • 备库B拿到binlog后,写到本地文件,称为中转日志(relay log)
    • sql_thread读取中专日志,解析出日志中的命令,并执行。

  • 相关阅读:
    VCS(DVE)仿真波形的存储和打开.vpd
    【Linux】线程池
    java稀疏数组(含稀疏数组代码展示)
    Go语言入门【8】函数
    掌动智能信创测试服务内容是什么
    318. 最大单词长度乘积
    【自学开发之旅】Flask-会话保持-API授权-注册登录
    SpringBoot集成OpenPDF导出pdf
    mysql的高阶语句
    [附源码]Java计算机毕业设计SSM东北鹿产品售卖网站
  • 原文地址:https://blog.csdn.net/weixin_42369687/article/details/126043170