show slave status中的log_file / log_pos

摘要:
在MySQL主从或双主架构中,我们通常使用showslavestaus命令来查看复制状态。以下是几个重要的日志文件和位置:Master_log_File、Read_Master_log_Pos:记录IOthread读取的当前主binlog文件和位置,对应于主binlog的文件和位置。Relay_Log_文件,Relay_Log_P

在MySQL的master-slave或dual master的架构中,我们经常使用show slave status命令来查看复制状态。

show slave status中的log_file / log_pos第1张

这里涉及几个重要的日志文件和位置:

  • Master_Log_File,Read_Master_Log_Pos: 记录了IO thread读到的当前master binlog文件和位置,对应master的binlog文件和位置。
  • Relay_Log_File,Relay_Log_Pos: 记录了SQL thread执行到relay log的那个文件和位置,对应的是slave上的relay log文件和位置。
  • Relay_Master_Log_File,Exec_Master_Log_Pos: 记录的是SQL thread执行到master binlog的文件和位置,对应的master上binlog的文件和位置。

 

binlog的event语句开始位置就是二进制binlog文件的字节偏移位置。而且根据上一个event的end_log_pos可以找到下一个event开始的位置,如下图所示。

show slave status中的log_file / log_pos第2张

 

下图是一个mysqlbinlog解析普通的relay log文件出来的文本文件:

show slave status中的log_file / log_pos第3张

 

relay log和binlog记录方式基本相同,最大的不同就是end_log_pos记录的是master的binlog文件中event的位置,而不是relay log自己event的位置。如图所示,上一个event的end_log_pos和下一个relay log event开始的位置不一样。为什么需要这样设置?就是为了方便找到master binlog的位置。在slave上,记录relay log 下一个event的开始偏移意义不大,但是如果记录了master binlog的偏移量,我们就可以在SQL thread中明确我们执行到master的某个binlog的哪个位置了。每个relay log开头都有这么一个rotate event,也就是当前master的binlog文件名。

  • IO thread 把所有从master读到的binlog记录到本地的binlog中,所以relay log的最后一个event的end log_pos就是Read_Master_Log_Pos
  • SQL thread 按照transaction来执行,所以Exec_Master_Log_Pos对应relay log中最后一个事务event的end_log_pos,这个位置对应的是master的binlog的位置。
  • Relay_Log_Pos 记录的是SQL thread执行的event在relay log中结束位置,这个才是relay log的偏移量。

 

MySQL的slave端是通过2个线程实现复制的,一个是I/O Thread负责连接到master接收binlog信息,在从服务器端这部分信息叫做relay log。另一个SQL Thread负责读取relay log并执行其中的event(在statement format的时候其实就是SQL语句)。当遇到一些I/O Thread或SQL Thread的报错时,我们可以通过change master to命令修改连接参数和复制起始点,其中重要的MASTER_LOG_FILE和MASTER_LOG_POS参数,这两个参数对应的是IO线程生成relay log的信息,因此和Relay_Master_Log_File和Exec_Master_Log_Pos是对应的。

 

 

免责声明:文章转载自《show slave status中的log_file / log_pos》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇python实现同时给多个变量赋值的方法 Simultaneous AssignmentsFTP操作(FTPClient)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

adb logcat 基本用法

入门android ,至少需要了解 adb 吧,那么打 log 也是必不可少的了。 下面简单介绍一下 adb logcat 基本用法: Usage: logcat [options] [filterspecs]options include:  -s              Set default filter to silent.           ...

1-rocketmq简介-部署

简介 基于java开发,高可用 应用场景 1、应用解耦 2、流量销峰 3、异步处理 4、消息分发(邮件、短信、日志、数据处理) 延时队列场景:需要延时单次延迟执行的场景,比如订单取消 常见问题 1、如何保证高可用 集群部署 2、如何保证消息不丢失(消息的可靠性传输) 生产者丢失数据 开启生产者确认模式,确认发送成功了才对消费者可见 消息队列丢失数据...

Python log() 函数

描述 log() 方法返回x的自然对数,x > 0。 语法 以下是 log() 方法的语法: import math math.log( x ) 注意:log()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。 参数 x -- 数值表达式。 返回值 返回x的自然对数,x>0。 实例 以下展示了使用 log()...

git usage:常用git命令

最近在改TV media相关的测试用例,需要在git上维护相关的脚本,把常用命令总结如下,方便以后使用. 1. 从已有git服务器上clone到本地, 首先进入用户根目录: cd ~ 然后进行clone: git clone littledrop@IP:/automation my-master 注: 这里littlerop@IP:/automation是...

c++ 开源日志库选择

liblogger 待选为 glog、log4cplus、log4cpp、log4cxx 目前准备使用glog,使用方便,性能也不错,待进一步试验,如果有不能满足的功能就转用 log4cplus,功能很全面,不过稍复杂些。 其它两个都是三年前就没更新,没好感,暂不准备使用。 1.log4cplus 最新版本:1.1.0 2012-03-11 下载地址:ht...

Sourcetree 代码管理

1. 点击克隆/新建 2. 点击“克隆”,等待项目克隆完成,完成后,左侧只有一个分支master  3 克隆完成后,得到的是发布后的master源码,如果想要获取最新的正在开发中的源码,需要对项目流进行初始化,点击“Git工作流“    直接点“确定”,获取dev分支源码 开发任务都是在dev分支上完成的 4. 分支共有5种类型 master,最终...