mysql从库执行delete停止_MySQL主库大表执行delete语句,Ctrl+C具体发生了什么分析...

MySQL主库大表执行delete语句,Ctrl+C具体发生了什么分析

1、查看表结构

localhost.qt>show create table doctor_stats_backup\G

*************************** 1. row ***************************

Table: doctor_stats_backup

Create Table: CREATE TABLE `doctor_stats_backup` (

`id` int(10) unsigned NOT NULL DEFAULT '0',

`uid` int(10) unsigned NOT NULL DEFAULT '0',

`typeact` tinyint(3) unsigned NOT NULL DEFAULT '0',

`flag` tinyint(3) unsigned NOT NULL DEFAULT '1',

`intime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

`qid` int(10) unsigned NOT NULL DEFAULT '0',

`rid` int(10) unsigned NOT NULL DEFAULT '0',

KEY `intime` (`intime`)

) ENGINE=MyISAM DEFAULT CHARSET=latin1

1 row in set (0.00 sec)

2、查看行数

localhost.qt>select count(*) from doctor_stats_backup;

+-----------+

| count(*) |

+-----------+

| 174541079 |

+-----------+

1 row in set (0.00 sec)

3、在主库上执行delete然后CTRL+C

EE655142D3E0455289791B3ABDA22FA9

4、从库收到告警,主从已经中断

E755AAE0BAD14264BC69D1CB450071FF

5、再分别查看主从doctor_stats_backup的行数

主库

70917A64DB68406AAD41783F06614EA1

从库

F7B3C99DC4C54B7C99698617B077AA68

可以见主库上已经删除5499096行,而从库并没有进行删除操作;推断是主库的binglog没有传递到从库,造成了主从不一致,接下来分析下binlog查看原因。

6.查看binlog

主库

811945A857C148058C0B83F89323E459

可以看到,mysql对delete操作开启了一个事务

从库

5D8A68AF7D474FE4B9E9C5D8386FF483

Binlog里并没有看到delte操作;从库开启了log-slave-update,只有binglog回放后才会记录到binlog,现在查看从库的relay-log

3C2F74CFDB1742B787CE28FCC5B2E68A

在从库的relay-log里可以看到delete操作,但是为什么会不执行呢?

参照http://itlab.idcquan.com/linux/MYSQL/918702_3.html对CTRL+C源码的分析,MySQL客户端捕获信号后,向服务器端发送KILL /*!50000 QUERY */ 命令并执行,从而将Query处理kill。

DuringUPDATEorDELETEoperations, the kill flag is checked after each block read and after each updated or deleted row. If the kill flag is set, the statement is aborted. If you are not using transactions, the changes are not rolled back.

对于update、delete数据更新操作,CTRL+C会将执行的操作标记为KILLED状态,然后执行回滚操作。但是如果没有开启事务或者引擎不支持事务,则不会执行回滚。

这样就可以理解了,主库delete过程中执行CTRL+C操作,kill掉了query id而需要进行回滚;由于doctor_stats_backup表是MyISAM表,不能进行回滚--则mysql把binlog打上标记,从库接收主库传过来有标记的binlog也就不执行了,所以从库的relaylog里有delete语句而binlog里没有。

至于是什么标记呢?我们需要动手做实验找找了:

再次delete一次数据,不执行CTRL+C,观察binglog:

B652B21B140D4C0A8F1BA0EB99B674CC

对比发现执行了CTRL+C的delete操作的binlog里包含error_code=1317,而不执行CTRL+C的delete操作的binlog里包含error_code=0;答案出现了正是error_code=1317告诉从库不执行这条binlog,而弹出了

CC6B194277D84D099C21696C2FBA5A89

错误。

下面我们把doctor_stats_backup表的引擎修改为innodb,再重复上面的实验:

A93423050EE64EFA99360DF5C32ED0E3

Innodb可以正常的回滚,binlog里不留下一点痕迹,也就不存在主从不同步了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340236.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...

有时候,有些网页不方便在电脑或者手机QQ打开,比如:想创建一个微信活动页面,在电脑或者QQ打开会导致某些功能失效,页面错版等情况,为了避免出现这种情况,其实我们只需让它只能在微信打开就可以了…

我的世界服务器设置op显示,我的世界设置op权限 | 手游网游页游攻略大全

发布时间:2017-08-19导读:不少我的世界腐竹都会收留一些OP帮助自己管理服务器,那么如果想取消OP的权限该如何操作呢?下面小编就来教教大家如何取消OP权限. 问:我的世界如何取消OP权限? 答:/deop 用户名,就是取消OP,/op 用户名 ...标签:我的世界 问答帮…

mysql 从库重新同步_mysql从库删除数据重新同步

1、查看slave状态show slave status\G2、停止slave状态,清除从库主从信息stop slave;reset slave;reset master;3、将从库已同步主库数据库删除DROP DATATBASE DBNAME;4、备份主数据库数据reset master; //先重置主库,再导出mysqldump -uuser…

Mockito“ thenReturn” vs Mockito“ thenAnswer”

在编写代码测试用例时,Mockito是开发人员最常见的选择之一。 然后我们面对的问题是,如何使用Mockito的thenReturn()和thenAnswer()方法? 如果您也面临这个问题,请不要担心每个人都面…

python turtle画彩虹的代码_如何用python海龟库画彩虹

python生成的彩虹效果,大家可以参考:使用的python版本:3.7.0 ,以下为源代码:# rainbow.py from turtle import * from random import * def HSB2RGB(hues): hues hues * 3.59 #100转成359范围 rgb [0.0,0.0,0.0] i …

vsphere虚拟克隆虚拟服务器,vSphere实战攻略2:虚拟机模板与克隆

【IT168 专稿】 (接上篇)"模板"是VMware为虚拟机提供的一项功能,可以让用户在其中一台虚拟机的基础上,很方便的"派生"或"克隆"出多台虚拟机,这减轻了管理员的负担。1.1 创建模板虚拟机在使用模板之前&#xff…

mysql parameter_C#MySqlParameter问题

(int)faultsGroup是0或1但我总是得到这个错误:列’FaultGroup’不能为null有人告诉我为什么吗?语法看起来不错.MySqlCommand cmdAdd new MySqlCommand("INSERT INTO Faults (" " FaultGroup, Text, Date, IP" ") VALUES (&quo…

python数据写入表格生成图片_python带表格图片生成封装

#!/usr/bin/python3#-*- coding: utf-8 -*-## author:qianqiu from prettytable importPrettyTablefrom PIL importImage, ImageDraw, ImageFontdef create_table_img(data,img_name, **kwargs):img_name 图片名称 D:/project/pythonwork/12306/t.png 或 t.png data 表格内容&a…

java ee maven_针对新手的Java EE7和Maven项目–第6部分

java ee maven从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5部分 在上一篇文章(第5部分)中,我们发现了如何使用Arquillian(我们的EJB服务)进行单元…

mysql数据库优化教程_mysql数据库索引优化学习教程

MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。打个比方,如果合理的设计且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。拿汉语字典的目录页(索引)打比方&#x…

windows系统git服务器启动,windowsServer服务器上搭建GIt服务器

十年河东,十年河西,莫欺少年穷学无止境,精益求精摸索了一天,终于把服务器端Git搭建完毕。记录下来,省的以后踩坑。如下:在官网搜索框中输入:download 搜索下载型选择为Java选择开发版然后下载下…

python程序设计题答案_《Python程序设计》习题与答案

第3章 选择结构与循环结构 3.1 分析逻辑运算符“or”的短路求值特性。 答: 假设有表达式“表达式1 or 表达式2”,如果表达式1的值等价于True,那么无论表达式2的值是什么,整个表达式的值总是等价于True。因此,不需要再计…

Linux普通玩家,熟悉这些高频命令就行了

回想当时入门Linux时抱着鸟叔的私房菜啃,看了没几页就放弃了 如果主要从事算法相关工作,其实高频使用的命令就那么些,一起看看吧 用户相关 id – 显示用户的详细信息(uid、gid和group)last – 列出有关最近登录的信…

如何在黄瓜中进行后端测试

黄瓜是一种规范语言的执行框架。 它并不是要成为测试语言,而是用于创建测试自动化。 黄瓜最适合出现一些现实世界中的参与者互动并取得某种成果的情况。 当可以从用户的角度编写它时,它特别有用。 Given Sarah is a premium club member When Sarah lo…

mysql权限层级体系_MySQL权限体系介绍

官方手册:https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.htmlMySQL是一个多用户的数据库,MySQL的用户可以分为两大类:(1)超级管理员用户(root),拥有全部权限(2)普通用户,由root创建,普通用…

云服务器 生物信息学,云服务器 生物信息学

云服务器 生物信息学 内容精选换一换挂载有NVMe SSD盘的Linux弹性云服务器(如P1型云服务器)发生故障时,需联系管理员通过异地重建的方式进行恢复,新建故障弹性云服务器。如果故障弹性云服务器在/etc/fstab中设置了NVMe SSD盘的开机自动挂载功能&#xff…

python图像转字符画_python图像处理-字符画风格图片

前言 字符画图片,顾名思义就是由一个个字符组成的图片,下面这张图片很容易帮助你理解,如果我们可以将字符排列好,让他看上去像一个物体的形状,那么最后再将它输出保存为一张图片就可以实现了。下面的这些形状同样可以使…

在mybatis用mysql的代码块_mybatis plus与mysql分库组件mycat的结合

之前的文章简单介绍了一下mybatis plus:《使用Mybatis-plus代替原生Mybatis》。截止目前在项目中使用了一段时间的mybatis plus,再也没有写过sql,都用mp的Wrapper封装查询条件了。这里先简单介绍一下mp的用法(抱歉,上一篇里面讲得…

响应服务器535.5.7.0AUTH,javax.mail.AuthenticationFailedException:535 5.7.3无法发送邮件

我遇到了错误javax.mail.AuthenticationFailedException:535 5.7.3尝试发送电子邮件时的身份验证。我尝试使用两个不同的电子邮件帐户。一个使用Office365服务器详细信息,另一个使用Gmail服务器详细信息。在两种情况下,我都会遇到相同的错误。…

react生命周期函数_如何优雅的消灭掉react生命周期函数

开源不易,感谢你的支持,❤ star concent^_^序言在react应用里,存在一个顶层组件,该组件的生命周期很长,除了人为的调用unmountComponentAtNode接口来卸载掉它和用户关闭掉浏览器tab页窗口,该顶层组件是不会…