使用Linux的Shell脚本定时处理MySQL超时
最近一段时间,我刚刚进入一家新公司,并接手了这里的一个站点,由于这个站点的架构设计不太合理,导致MySQL的压力始终很大,经常出现超时的Locked进程,于是编写了一段Linux的Shell脚本来定时kill掉这些进程。
脚本如下:
代码如下:
#!/bin/bash
mysql_pwd="xxxxxx" #mysql的root密码
mysql_exec="/usr/local/mysql/bin/mysql"
tmp_dir="/tmp"
file_sh="$tmp_dir/mysql_kill_locked.sh"
file_tmp="$tmp_dir/mysql_kill_locked.tmp"
file_log="$tmp_dir/mysql_kill_locked.log" #日志
$mysql_exec -uroot -p$mysql_pwd -e "show processlist" | grep -i "Locked" > $file_tmp
cat $file_tmp >> $file_log
for line in `cat $file_tmp | awk '{print $1}'`
do
echo "$mysql_exec -uroot -p$mysql_pwd -e "kill $line"" >> $file_sh
done
chmod +x $file_sh
sh $file_sh #执行临时脚本
> $file_sh #清空临时脚本
最后,将这段脚本加入到crontab,定时执行即可。
相关推荐
-
定时导出mysql本地数据替换远程数据库数据脚本分享
复制代码 代码如下: 需求在每天的5点将192.168.3.5上ser_a库中的tb_a表导入到192.168.3.6上的ser_b库中,表名还叫tb_a服务端脚本/usr/shell_clubs/auto_sql/server.sh#!/bin/sh#code by scpman/usr/bin/find /usr/shell_clubs/auto_sql/ -name "*.sql" -mtime +3|xargs rm #del old sql#get new sqltime=`
-
CentOS下mysql定时备份Shell脚本分享
1.备份语句 复制代码 代码如下: # /usr/local/mysql/bin/mysqldump -utest -ptest test --socket=/tmp/mysql.3306.sock > /usr/local/mysql_backup/3306/test-`date +%Y%m%d`.sql.gz 语句说明: /usr/local/mysql/bin/mysqldump:MySql安装目录下 -utest:分为两块,一块为-u一块为test:其中-u表示其为用户名,test表
-
MySQL定时执行脚本(计划任务)命令实例
查看event是否开启 复制代码 代码如下: show variables like '%sche%'; 将事件计划开启 复制代码 代码如下: set global event_scheduler =1; 创建存储过程test 复制代码 代码如下: CREATE PROCEDURE test () BEGIN update examinfo SET endtime = now() WHERE id = 14; END; 创建event e_test 复制代码 代码如下: create event
-
MySQL定时备份之使用Linux下的crontab定时备份实例
1. Mysql备份某个数据库的命令 复制代码 代码如下: ################################################################## # 备份某个数据库 ################################################################## # root 用户,创建备份目录 mkdir -p /usr/local/cncounter/mysql_dump cd /usr/local/
-
windows下实现定时重启Apache与MySQL方法
采用at命令添加计划任务.有关使用语法可以到window->"开始"->运行"cmd"->执行命令"at /",这样界面中就会显示at命令的语法.下面我们讲解下如何让服务器定时启动apache与mysql: 1.在c:盘根目录新建一个autostartserver.bat文件,然后右键编辑,将文件内容设为如下后保存: 复制代码 代码如下: @ECHO OFF net stop apache2 net start apache2
-
逐步讲解MySQL中定时事件计划的创建
一.使用过程 1.查看当前是否已开启事件计划(调度器)有3种方法: SHOW VARIABLES LIKE 'event_scheduler'; SELECT @@event_scheduler; SHOW PROCESSLIST; 2. 开启事件计划(调度器)开关有4种方法: SET GLOBAL event_scheduler = 1; SET @@global.event_scheduler = 1; SET GLOBAL event_scheduler = ON; SET @@globa
-
使用Python发送邮件附件以定时备份MySQL的教程
最近迁移了wordpress,系统升级为CentOS 6,很奇怪的一个问题,在原来CentOS 5.8下用的很正常的定时备份数据库并通过邮件发送的脚本不能发送附件,其他都正常,邮件内容也是uuencode生成的文件编码,但是就是不产生附件.而且找不出原因,望有知道的不吝赐教. 为了解决这一问题,我用Python写了一个mail客户端,可以发送附件,是一个命令行程序.废话不多说.贴代码: #!/usr/bin/env python #-*- coding: utf8 -*- ''' #======
-
MySQL定时器EVENT学习笔记
要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1 -- 查看是否开启定时器 SHOW VARIABLES LIKE '%sche%'; -- 开启定时器 0:off 1:on SET GLOBAL event_scheduler = 1; -- 创建事件 --每隔一秒自动调用e_test()存储过程 CREATE EVENT IF NOT EXISTS event_test ON SCHEDULE EVERY 1 SECOND ON COMPLETI
-
定时备份mysql, 定时切割nginx access log的方法
定时备份mysql 放入 /etc/cron.hourly/ 复制代码 代码如下: #!/bin/bash DUMP=/usr/local/webserver/mysql/bin/mysqldump OUT_DIR=/data1/backup/ DB_NAME=数据库名 DB_USER=数据库用户 DB_PASS=数据库密码 #How much days backup most DAYS=3 #12 hours ago MINS=720 #Core of script cd $OUT_DIR D
-
实现MySQL定时批量检查表repair和优化表optimize table的shell脚本
本文介绍mysql定时批量检查表repair和优化表optimize table的shell脚本,对于MySQL数据库的定期维护相当有用!如下所示: #!/bin/bash host_name=192.168.0.123 user_name=jincon.com user_pwd=jincon.com database=my_db_name need_optmize_table=true tables=$(mysql -h$host_name -u$user_name -p$user_pwd $
-
MySQL定时器开启、调用实现代码
创建测试表 复制代码 代码如下: CREATE TABLE t ( v VARCHAR(100) NOT NULL ) ENGINE INNODB DEFAULT CHARSET=utf8; 创建定时器 调用的存储过程 DELIMITER $$ DROP PROCEDURE IF EXISTS e_test $$ CREATE PROCEDURE e_test() BEGIN INSERT INTO t VALUES('1'); END $$ DELIMITER ; 要使定时起作用 MySQL的
-
mysql 让一个存储过程定时作业的代码
1.在mysql 中建立一个数据库 test1 语句:create database test1 2.创建表examinfo create table examinfo( id int auto_increment not null, endtime datetime, primary key(id) ); 3 插入数据: insert into examinfo values('1','2011-4-23 23:26:50'); 4 创建存储过程test CREATE PROCEDURE te
-
使用mysql事件调度器定时删除binlog
MySQL的事件调度器可以精确到每秒钟执行一个任务,对于一些对数据实时性要求比较高的应用(例如:股票.赔率.比分等)就非常适合.先查看是否启动这个功能: 复制代码 代码如下: SELECT @@event_scheduler; 在使用这个功能之前必须确保 event_scheduler已开启,可执行: 复制代码 代码如下: SET GLOBAL event_scheduler = 1; 或我们可以在配置my.cnf文件 中加上event_scheduler = 1然后来对 binlog 的删除写
-
Linux shell实现每天定时备份mysql数据库
每天定时备份mysql数据库任务,删除指定天数前的数据,保留指定天的数据: 需求: 1,每天4点备份mysql数据: 2,为节省空间,删除超过3个月的所有备份数据: 3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据: #创建shell文件 vim backup_mysql.sh mysqldump -uroot -p123456 --all-databases > /data/dbdata/mysqlbak/`date +%Y%m%d`.sql find
随机推荐
- 推荐4款傻瓜型的ASP服务器软件(asp运行环境一键搭建工具)
- VB实现的16位和32位md5加密代码分享
- SWT(JFace) 图片浏览器 实现代码
- JSP 2.1和JSF 1.2规范发布预览版本
- 分享别人写的一个小型js框架
- 学习javascript面向对象 javascript实现继承的方式
- python 合并文件的具体实例
- asp.net 纯真ip库取得所在地实现代码
- asp.NET中实现文件的压缩和解压(3种方式)
- JavaScript异步调用定时方法并停止该方法实现代码
- 详解js几个绕不开的事件兼容写法
- JS组件Bootstrap实现图片轮播效果
- xss防御之php利用httponly防xss攻击
- nodejs利用ajax实现网页无刷新上传图片实例代码
- 发现四种在网页中使用CSS样式表的方法
- 批处理操作注册表完全攻略(读取注册表/写入注册表等)
- 浅谈数据库优化方案
- jQuery中多个元素的Hover事件解决方案
- 微信小程序之获取当前位置经纬度以及地图显示详解
- Android使用Handler和Message更新UI