当前位置: 首页 > news >正文

一次性搞定 `SHOW SLAVE STATUS` 的解读

一次性搞定 SHOW SLAVE STATUS 的解读

解析日志文件的位置

诚然, GTID(全局事务标识符)已经在 MySQL 5.6中得到支持, 此外,还可以通过 Tungsten replicator 软件来实现(2009年以后一直有谷歌在维护,不是吗?)。

但有一部分人还在使用MySQL 5.5的标准副本方式, 那么这些二进制日志文件在哪儿呢? SHOW SLAVE STATUS命令输出的的结果经常混淆我们, 而且是一次又一次。

本文尝试用可视化的方式来解读 SHOW SLAVE STATUS。

关于 binary logs 和 relay logs

主库(master)将日志写入二进制文件。 典型的日志文件是 mysql-bin.##### 或者 mysqld-bin.#####(其中 ##### 代表一串数字)。

从节点(slave, 从库) 连接到对应的主节点(master, 主库), 从主库的二进制日志中读取条目。 从节点将这些条目写入自己的中继日志(relay logs)。 典型的中继日志文件是 mysql-relay.##### 或者 mysqld-relay.#####(其中 ##### 代表一串数字)。

从节点的中继日志,与主节点的二进制日志并没有名称或者数量上的对应关系。 中继日志的存储位置, 和主节点二进制日志的存储位置也没有任何关系。 文件会自动刷入磁盘并滚动; 根据配置可以有不同大小。 当然, 从节点追踪当前的 relay-log 条目: 知道它匹配主节点的哪个二进制条目。

这是一个很重要的知识点。

从节点(通过 IO_THREAD 线程)获取条目并写入中继日志, 读取中继日志, 并通过 SQL_THREAD 线程重放这些条目)。

所以在每个时间点上, 我们都对以下这些“坐标”感兴趣:

  • 通过主节点的哪些地方获取数据? 从哪个文件, 哪个位置获取。
  • 将信息写到哪里? (这里隐含使用最新的中继日志文件, 以及它的大小决定)
  • 当前执行的 slave 查询的位置, 在 relay-log 中的坐标。 从节点读取的位置, 要远比写入位置小。
  • 当前执行的 slave 查询的位置, 在主节点 binary-log 中的坐标。 这个信息告诉我们, 主从同步之间的距离有多远。

SHOW SLAVE STATUS 的输出内容中, 我们如何解读上面这些信息?

下面以两张图片为示例。

第一张图片, 演示了跟上主节点的slave状态。

在这里插入图片描述

下面这张图片, 演示了落后的 slave 状态。

在这里插入图片描述

希望这对你有所帮助。

原文链接: The “once and for all” SHOW SLAVE STATUS log files & positions explained

原文日期: 2014年03月06日

翻译日期: 2014年10月17日

翻译人员: 铁锚: http://blog.csdn.net/renfufei

http://www.lryc.cn/news/23936.html

相关文章:

  • 【代码随想录训练营】【Day25】第七章|回溯算法 |216.组合总和III|17.电话号码的字母组合
  • docker使用
  • 手把手docker registry配置登录名/密码
  • 一步打通多渠道服务场景 中电金信源启移动开发平台MADP功能“上新”
  • Kubernetes06:Controller (Deployment无状态应用)
  • 低代码开发平台选型必看指南
  • OVN:ovn20.03.1/ovs2.13.0编译rpm过程
  • Shell管道
  • Zynq UltraScale系列使用MIPI CSI-2 RX Subsystem 解码MIPI视频PD输出 提供2套工程源码和技术支持
  • C++:详解C++11 线程休眠函数
  • TryHackMe-The Great Escape(Docker)
  • 这么强才给我28k,我头都不回,转身拿下40k~
  • 【Python学习笔记】第二十一节 Python Lambda 函数
  • Nginx学习整理
  • 阿里面试之Hr面,这个套路把我坑惨了......
  • 域基础和基本环境搭建
  • Java Map集合体系(HashMap、LinkedHashMap、TreeMap、集合嵌套)
  • 使用邮箱验证实现登录功能(发送邮件,redis)
  • 【Linux】网卡的7种bond模式
  • AQS抽象队列同步器
  • springBoot对REST支持源码解析
  • 6 集成学习及Python实现
  • 如何编程实现从多数据库操作数据
  • LeetCode 147. 对链表进行插入排序 | C/C++版
  • 【QT进阶】第五章 QT绘图之自定义控件--仪表盘绘制
  • Java代码弱点与修复之——URL manipulation(URL操纵)
  • Sharding Sphere学习
  • 粗心小编被云拯救,那云上数据谁来拯救?
  • [git可视化软件]gitkraken平替:GitAhead
  • CentOS8基础篇8:使用systemctl管理NFS服务