mysql从库Retrieved_Gtid_Set事务数比Executed_Gtid_Set事务数少的异常情况

今天从库crash重启后出现很有趣的现象:

可以发现:

Retrieved_Gtid_Set值显示从库没有接收到部分事务,丢失了部分事务。但是从Executed_Gtid_Set显示从库没有丢失事务。

错误日志:

2017-03-08 10:41:12 118393 [ERROR] /usr/local/mysql/bin/mysqld: Sort aborted: Query execution was interrupted
170308 10:55:38 mysqld_safe Number of processes running now: 0
170308 10:55:38 mysqld_safe mysqld restarted
2017-03-08 10:55:39 0 [Note] /usr/local/mysql/bin/mysqld (mysqld 5.6.29-log) starting as process 131069 ...

从中可以看到,mysql crash后由mysqld_safe重新拉起来,应该是IO彪增导致数据库crash重启。CPU和剩余内存并无瓶颈现象。

为了确认从库是否真的因为少接收到事务而漏了部分数据,特意去解析了从库的binlog日志。

可以发现,其实从库后续有接收到事务号:77d12988-29c1-11e6-a323-fa163ea5bbe1:334314693的事务,只是事务号次序被打乱,没有依次递增的情况。

这是主库的binlog日志记录:

注意:由于mysql的主从数据一致是以从库必须严格同主库按照相同sql执行次序为前提的,这种情况虽然从库也接收所有的事务并执行完成,但是主从库的执行次序并不一致。谨慎来说,从库仍然存在数据不一致的风险。需要使用pt工具包对主从库的数据做数据校验为好!

时间: 2024-12-25 06:52:18

mysql从库Retrieved_Gtid_Set事务数比Executed_Gtid_Set事务数少的异常情况的相关文章

MySQL生产库开发规范

MySQL开发规范 文件状态:[  ] 草稿[√] 正式发布[  ] 正在修改 文件标识:  当前版本: V1.0 作    者: 贺磊 完成日期: 2016-05-24 变更记录序号 修改日期 修改内容 修改人 审核人 批准人 批准日期1 2016-05-24 MySQL开发规范 贺磊 MySQL开发规范1. 简介持续借鉴.收集并整理一些开发规范和技巧,期望能更充分利用MySQL的特性,得到更好的性能.规范是死的,人是活的.现在定义的规范,是为以后推翻准备的.1.1 目的提供给开发人员参考,方

mysql从库Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Could not find first log file name in binary log index file'报错处理

年后回来查看mysql运行状况与备份情况,登录mysql从库查看主从同步状态 1 mysql> show slave status\G; 2 *************************** 1. row *************************** 3 Slave_IO_State: 4 Master_Host: 101.200.*.* 5 Master_User: backup 6 Master_Port: 3306 7 Connect_Retry: 60 8 Master_

mysql 生产库大表delete

mysql 生产库大表删除 一般线上业务增长较快,造成某些表达到分表的临界值,表行数超过2000w且查询频繁,如表业务没有较多的聚合查询的话,可以考虑按时间归档部分历史数据.现推荐2种本人之前使用过的删除方式. 按照主键或者索引拆分后分段执行,使用存储过程 需要注意这种大表删除,如果是在主库执行,尽量把会话改成语句格式,以保证不会出现复制延迟 语句如下:set session binlog_format='STATEMENT'; CREATE PROCEDURE sp_delete_data()

史上最全mysql删库跑路必会姿势

基础篇:MySql架构与存储引擎 逻辑架构图: 连接层: mysql启动后(可以把mysql类比为一个后台的服务器),等待客户端请求,当请求到来后,mysql建立一个一个线程处理(线程池则分配一个空线程,当然也可使用nio线程模型.),每个线程独立,拥有独自内存空间.当请求为select请求则没有关系,但是请求为update时,多线程同时修改一块内存,就会引发一系列问题,由此引出 "锁"的概念. 查看mysql当前连接数: show VARIABLES like '%max_conne

PHP mysql 扩展库 操作mysql数据库步骤

1.和mysql扩展库的区别: (1   安全性.稳定性更高 (2  提供了面向对象和面向过程两种风格 2.php.ini  中的  extension=php_mysqli.dll 解除封印 3.面向对象:查询列表 <?php //mysqli 操作数据(面向对象风格) #1.创建Mysql对象 $mysqli=new MySQLi("127.0.0.1","root","daomul","test"); if(!$m

重新理解mysql的锁、事务隔离级别及事务传播行为

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行.ACID,是指在可靠数据库管理系统(DBMS)中,事务(Transaction)所应该具有的四个特性:原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability). 原子性原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生.如,A向B转钱,在事务中的扣款和加款两条语句,要么

php总结8——mysql函数库、增删改

8.1 mysql函数库 php的函数   .php中用来操作mysql函数库的函数 常用函数 mysql_connect("主机名称/ip","用户名","密码")--->建立php到mysql的连接,返回资源----> mysql_error()  返回上一个mysql操作的文本错误信息 @ 错误抑制符 一般来说,mysql_connect和mysql_error() 一起使用,用如下方式表示: <?php $link[em

mysql 函数库

函数库 mysql存储过程基本函数包括:字符串类型,数值类型,日期类型 一.字符串类 CHARSET(str) //返回字串字符集 CONCAT (string2 [,… ]) //连接字串 INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0 LCASE (string2 ) //转换成小写 LEFT (string2 ,length ) //从string2中的左边起取length个字符 LENGTH (string )

MySQL函数库

MySQL函数库,这个函数库是一个外部函数库!这个函数提供了对于MySQL数据库进行操作的常用函数,如连接MySQL服务器.打开数据库.执行SQL语句等.所以这个函数库的功能对于我们来说是非常重要的! 其实,MySQL数据库是整个程序开发的最底层,我们在程序开发时,就必须为其添加一层漂亮的外衣,这层漂亮的外衣就是图形化用户界面(Graphical User Interface,简称GUI,又称图形用户接口),也就是使用者只需要具体基本的计算机知识,然后通过鼠标,就可以实现某些复杂的功能!其实,我