首页 > 数据库 >mysql死锁检查

mysql死锁检查

时间:2023-06-05 18:36:44浏览次数:43  
标签:sessions 检查 mysql echo 死锁 session MYSQL

描述

以下是一个shell脚本,用于检查MySQL死锁会话并杀死它们。它还将记录所有被杀死的会话及其相关的SQL到一个文件中。

解决方案

#!/bin/bash

# 设置MySQL连接参数
MYSQL_USER="your_mysql_username"
MYSQL_PASSWORD="your_mysql_password"
MYSQL_HOST="localhost"
MYSQL_PORT="3306"

# 设置日志文件路径
LOG_FILE="/var/log/mysql_deadlock.log"

# 获取所有死锁会话的ID和相关SQL
deadlock_sessions=$(mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST -P $MYSQL_PORT -e "SELECT GROUP_CONCAT(id SEPARATOR ',') AS session_ids, GROUP_CONCAT(query SEPARATOR ';') AS session_queries FROM INFORMATION_SCHEMA.INNODB_LOCKS WHERE lock_trx_id IN (SELECT DISTINCT blocking_trx_id FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS) GROUP BY blocking_trx_id")

# 如果没有死锁会话,则退出脚本
if [ -z "$deadlock_sessions" ]; then
  echo "No deadlock sessions found."
  exit 0
fi

# 将死锁会话ID和相关SQL记录到日志文件中
echo "Deadlock sessions found:" >> $LOG_FILE
echo "$deadlock_sessions" >> $LOG_FILE

# 循环杀死每个死锁会话
for session_info in $(echo $deadlock_sessions); do
  session_id=$(echo $session_info | cut -d',' -f1)
  session_query=$(echo $session_info | cut -d',' -f2)
  mysql -u $MYSQL_USER -p$MYSQL_PASSWORD -h $MYSQL_HOST -P $MYSQL_PORT -e "KILL $session_id"
  echo "Session $session_id killed. Related SQL: $session_query" >> $LOG_FILE
done

echo "All deadlock sessions killed."

请注意,此脚本需要在具有足够权限的MySQL用户下运行。您需要将MYSQL_USER和MYSQL_PASSWORD变量设置为具有足够权限的MySQL用户的凭据。此外,您需要将MYSQL_HOST和MYSQL_PORT变量设置为您的MySQL服务器的主机名和端口号。最后,您需要将LOG_FILE变量设置为您想要记录死锁会话及其相关SQL的文件路径。

标签:sessions,检查,mysql,echo,死锁,session,MYSQL
From: https://www.cnblogs.com/lkj371/p/17458660.html

相关文章

  • 亿级 GPS 数据处理用 NoSQL、MySQL 还是 HBase?数据库选型看这里
    在车联网场景下,GPS产生的时序数据量级通常都达到了亿级,高效写入、存储和快速查询是最基本的数据处理要求,但在具体实践上这却不是一件容易实现的事情。最近某企业就遇到了这样一个问题:服务端接收存储GPS相关数据,按1次/30秒的上传频率,一天的数据条数估计在1.2亿条,其想要实......
  • pymysql,pymongo链接实例
    pymysqlconn=pymysql.connect(host=dbhost,#数据库地址port=3306,#数据库端口号user='testpymysql',#数据库账号password='afk!cTRnDnVq*bvZ'#数据库密码)cursor=conn.cursor(cursor=pymysql.cursors.DictCursor)#字典形式sql=......
  • ALLEGRO布线完成后进行DRC检查
    DRC:SMDPINtoroutekeepoutspacing间距错误 第二步:将Designmodes中的pintoroutekeepout关闭 ......
  • 最新Mysql与Navicat下载安装教程
    MySQL安装步骤1、下载MySQL2、安装MySQL3、MySQL的基本使用1、下载MySQL我们先进入MySQL官网,下载MySQL的官方安装包。(网址:http://www.mysql.com)官网首页:点击downloads点击“MySQLCommunity(GPL)Downloads»”点击“MySQLInstallerforWindows”。(我们这里讲的是windows......
  • mysql substring_index
    1.substring_index函数的语法及其用法(1)语法:substring_index(string,sep,num)即substring_index(字符串,分隔符,序号)参数说明string:用于截取目标字符串的字符串。可为字段,表达式等。sep:分隔符,string存在且用于分割的字符,比如“,”、“.”等。num:序号,为非0整数......
  • Mysql:事务
    事务特性事务的特性:acid。原子性(重要)事务内的一组操作为原子操作,要么全部成功,要么全部失败。在实际业务如转账,就必须保证一方数目多了一方少了,数目平衡。一致性(面试常问)事务成功或失败的结果必须符合业务逻辑。还是以转账为例,A转给B100块,成功就A少100,B多100,失败就双方金额该......
  • pymysql.err.DataError: (1366, “Incorrect string value: ‘\\xF0\\x9F\\x92
    原因是字符串中有emoji数据。原因:字符串中有emoji字符,数据库是utf8无法识别解决方法:安装emoji库pipinstallemoji处理字符串:importemojis=emoji.demojize('......
  • mysql数据自动备份脚本
    #!/bin/bash#日期date=$(date'+%Y%m%d')#设置备份目录和保留天数backup_dir="/opt/dbback"retention_days=7#数据库账密muser=mpasswd=mhost=#创建备份目录(如果不存在)mkdir-p$backup_dir#获取当前时间戳now=$(date+%s)#备份MySQL数据库到备份目......
  • MySQL数据库表结构优化方式详解
    前言从今天开始本系列文章就带各位小伙伴学习数据库技术。数据库技术是Java开发中必不可少的一部分知识内容。也是非常重要的技术。本系列教程由浅入深,全面讲解数据库体系。非常适合零基础的小伙伴来学习。全文大约【2083】字,不说废话,只讲可以让你学到技术、明白原理的纯干......
  • Mysql 主从备份 Last_Errno: 1146 Last_Error: Error executing row event: 错误问题
    本人在做主从备份的时候发现了此问题! 1主数据库是已经把这个表删除了丛数据库也是没有备份这个表但是一直报这个错原因是bin-log日志有这个表 但是没记录到已经把这个表删除了 主从表同步实际从库是根据主库的bin-log二进制的SQL进行执行的 这是Mysql的一个BUG1......