http://blog.csdn.net/barfoo/article/details/2711305

mysql同步__slave状态标识

分类: MYSQL 791人阅读 评论(1) 收藏 举报

     在MySQL的主从配置中,在slave上执行show slave status可以看到slave的状态,今天突然发现了输出中含有Relay_Master_Log_File和Exec_Master_Log_Pos 这两项,印象中以前没有过( 也许是没注意到:( ).觉得甚是奇怪,一顿搜查,总算明白了其中含义。

 

     看看MySQL的Manual中是怎么解释的:

 

     Exec_Master_Log_Pos: The position of the last event executed by the SQL thread from the master's binary log (Relay_Master_Log_File). (Relay_Master_Log_File, Exec_Master_Log_Pos) in the master's binary log corresponds to (Relay_Log_File, Relay_Log_Pos) in the relay log.

 

     从字面意思看, (Relay_Master_Log_File, Exec_Master_Log_Pos)和(Relay_Log_File, Relay_Log_Pos)是对应的,它们表示的是Slave中的SQL进程中正在执行的语句的位置,表明的是Slave和Master之间的同步状 态。当Slave中Relay_Master_Log_File和Master_Log_File相同且Read_Master_Log_Pos和 Exec_Master_Log_Pos完全相同时,表明Slave和Master处于完全同步的状态。

 

    

 

      既然有了(Relay_Master_Log_File, Exec_Master_Log_Pos)能够表明同步状态,还要(Relay_Log_File, Relay_Log_Pos)做什么呢? 我感觉(Relay_Log_File, Relay_Log_Pos) 是给程序看的,记录Relay log中的执行点, 而(Relay_Master_Log_File, Exec_Master_Log_Pos)可以给人看,能够清楚的表明Master和Slave之间的同步状态。

 

 

********************************

xtrabackup_binlog_pos_innodb 和 xtrabackup_binlog_info

用过 xtrabackup 工具的 innobackupex 脚本备份数据的人可能会注意到,–apply-log 处理过的备份数据里有两个文件说明该备份数据对应的 binlog 的文件名和位置。但有时这俩文件说明的位置可能会不同。
经过实验和询问 Percona 公司,结论如下:
1 对于纯 InnoDB 操作,备份出来的数据中上述两个文件的内容是一致的
2 对于 InnoDB 和非事务存储引擎混合操作,xtrabackup_binlog_info 中所示的 position 应该会比 xtrabackup_pos_innodb 所示的数值大。此时应以 xtrabackup_binlog_info 为准;而后者和 apply-log 时 InnoDB recovery log 中显示的内容是一致的,只针对 InnoDB 这部分数据

另外,今天发现 InnoBASE/MySQL/Oracle 公司出品的 MySQL Enterprise Backup(原 InnoDB Hot Backup)中 innobackup 脚本备份出来的数据也有类似的问题。这其实是由于热拷贝时 InnoDB 表和非事务表分别复制的时间差引起的。