【原创】MySQL复制slave服务器死锁案例
MySQL复制刚刚触发了一个bug,该bug的触发条件是slave上Xtrabackup备份的时候执行flushs tables with read lock和show slave status有可能和SQL Thread形成死锁。
该bug在MySQL5.6.23上已修复, https://bugs.mysql.com/bug.php?id=70307
15:24分开始收到报警,这台slave上发生阻塞,并发线程升高,下面描述下死锁和阻塞是如何形成的
1、slave上sql thread执行SQL,还未提交
这是当时抓取到的事务信息,63就是sql thread,活动的事务运行了479S,可以计算出这个事务开始的时间约在2018-06-08 15:15:42

2、Xtrabackup进程执行flush tables with read lock

3、sql thread执行commit,被blocked,Waiting for commit lock (holding rli->data_lock, waiting for MDL_COMMIT)
4、Xtrabackup进程执行show slave status被block (holding LOCK_active_mi and mi->data_lock, waiting for rli->data_lock),形成死锁

5、其他大部分事务都在等待Waiting for global read lock,形成阻塞,并发线程数升高
6、kill掉sql thread后,阻塞消失


【原创】MySQL复制slave服务器死锁案例的更多相关文章
- MySQL复制slave服务器死锁案例
原文:MySQL复制slave服务器死锁案例 MySQL复制刚刚触发了一个bug,该bug的触发条件是slave上Xtrabackup备份的时候执行flushs tables with read lo ...
- Mysql复制-Slave库设置复制延迟
mysql> stop slave; mysql> change master to master_delay=10;#单位是秒 mysql> start slave; mysql& ...
- MySQL复制同一个服务器的表结构和表数据
例如,现在服务器上有数据库 dbx 和 dby,dbx中有很多表,要把dbx中的表全部复制到dby,如下操作: 首先: use dby; [复制表结构] CREATE TABLE user LIKE ...
- MySQL死锁案例分析与解决方案
MySQL死锁案例分析与解决方案 现象: 数据库查询: SQL语句分析: mysql. 并发delete同一行记录,偶发死锁. delete from x_table where id=? ...
- MySQL GTID复制Slave跳过错误事务Id以及复制排错问题总结
GTID复制典型的复制错误有两种:1,数据对象级别的错误,包括主库上update的数据在从库上不存在,主从逐渐冲突,库表索引等对象的冲突等等, 如果是纯粹的跳过错误的话,这一类的错误需要跳过思路是 ...
- 解读show slave status 命令判断MySQL复制同步状态
解读show slave status 命令判断MySQL复制同步状态 1. show slave status命令可以显示主从同步的状态 MySQL> show slave status \G ...
- MySQL 5.6.35 索引优化导致的死锁案例解析
一.背景 随着公司业务的发展,商品库存从商品中心独立出来成为一个独立的系统,承接主站商品库存校验.订单库存扣减.售后库存释放等业务.在上线之前我们对于核心接口进行了压测,压测过程中出现了 MySQL ...
- MySQL复制报错(Slave failed to initialize relay log info structure from the repository)
机器重启以后,主从出现了问题,具体报错信息: Slave failed to initialize relay log info structure from the repository 解决方案: ...
- show slave status 命令判断MySQL复制同步状态
1. show slave status命令可以显示主从同步的状态 MySQL> show slave status \G; *************************** 1. row ...
随机推荐
- 通过xshell/securecrt连接linux上传/下载文件
通过ssh等客户端连接远程linux总会有上传下载的需求,这里分别用Ubuntu和centos展示安装lrzsz软件的命令,使用命令是一致的,这里简单写 1.安装: centos:(注:参数-y中的意 ...
- spring boot使用自定义配置的线程池执行Async异步任务
一.增加配置属性类 package com.chhliu.springboot.async.configuration; import org.springframework.boot.context ...
- SpringCloud之Eureka(注册中心集群篇)
一:集群环境搭建 第一步:我们新建两个注册中心工程一个叫eureka_register_service_master,另一个叫eureka_register_service_backup eureka ...
- 《区块链100问》第85集:资产代币化之对标美元USDT
USDT是Tether公司推出的对标美元(USD)的代币Tether USD.1USDT=1美元,用户可以随时使用USDT与USD进行1:1兑换.Tether公司执行1:1准备金保证制度,即每个USD ...
- layui-laypage模块代码详解
/** layui-v2.4.0 MIT License By https://www.layui.com */;layui.define(function(e) { "use strict ...
- sparse coding
Deep Learning(深度学习)学习笔记整理系列 zouxy09@qq.com http://blog.csdn.net/zouxy09 作者:Zouxy version 1.0 2013-04 ...
- 初涉sqlmap
1.基本注入(这个工具kali或者bt下面有集成的,这里附加一个window免py版,提取码:3ldv) sqlmap -u http://url/xx.php?id=1 判断注入 sqlmap - ...
- python 元组分组并排序
# -*- coding: utf-8 -*- # @Time : 2018/8/31 14:32 # @Author : cxa # @File : glomtest.py # @Software: ...
- 使用Cache缓存
存放位置:服务器内存,用于频繁访问且不轻易更改的内容缓存. string CacheKey = "CT1"; //检索指定项, object objModel = Cache.Ge ...
- Python 使用 Redis 操作
1.redis简介 redis是一款开源免费的高性能key-value数据库,redis特点: 支持更多的数据类型:字符串(String).列表(List).哈希(Map).数字(Int).集合(Se ...