mysql检查备份_mysql 状态检查,备份,修复

这是一个用于检查MySQL服务状态、检测并修复表错误、执行数据库备份以及通过FTP上传备份数据的自动化脚本。脚本包含了对MySQL服务的健康检查、使用mysqlcheck进行表检查与修复、定期删除旧备份、以及通过Python脚本实现FTP数据上传等功能。
摘要由CSDN通过智能技术生成

#!/bin/env bash

##############################################################################

# NOTE:

# The test system is Ubuntu12.04

# This Scripts all rights reserved deserved by MickeyZZC

# Copyright 2013

#

#############################################################################

#设置环境变量

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

clear

######全局变量配置#######

username=root

passwd=215036

mysqlhost=127.0.0.1

backuppath="/home/dragonriver/shell"

#########################

#MYSQL存活状态检测

mysqllive(){

num=0

#pidof mysqld 查看mysqld服务的进程号,也就是看是否mysqld服务开启

while [[ `pidof mysqld` == "" ]]

do

#将信息写入日志文件

echo "$(date +%Y%m%d%H%M),MYSQL IS DOWN" >> /var/log/mysqlstat.log

#注意执行此条命令时,要在超级用户权限下执行

service mysql start

num=`expr $num + 1`

if [ $num -gt 11 ] ;then

echo "$(date +%Y%m%d%H%M),MYSQL NO UP" >> /var/log/mysqlstat.log

exit 1

fi

sleep 10

done

#把生产线上的数据库赋值给数组变量

mysqldata=`mysql -h$mysqlhost -u$username -p$passwd -e "show databases"|grep -vE "mysql|information_schema|performance_schema|Database"`

if [ $num -gt 0 ] ;then

mysqlsamchk

fi

}

#MYSQL表检测和修复

mysqlsamchk(){

#MYSQL存活状态检测

mysqllive

if [[ `which mysqlcheck` == "" ]] ;then

for i in ${mysqldata[@]} ; do

mytables=`mysql -h$mysqlhost -u$username -p$passwd -e "use $i;show tables;"|grep -vE "Tables_in_"`

for j in ${mytables[@]} ; do

table_status=`mysql -h$mysqlhost -u$username -p$passwd -e "check table $i.$j"|awk 'BEGIN{IFS='\t'}{print $3}'|grep "error"`

if [[ ! "$table_status" == "" ]] ; then

mysql -h$mysqlhost -u$username -p$passwd -e "repair table $i.$j"

echo "$(date +%Y%m%d%H%M),$i.$j be repair" >> /var/log/mysqlstat.log

fi

done

done

else

mysqlcheck --all-databases --auto-repair -u$username -p$passwd |awk '!/OK/ {printf "datetime,%s\n",$1}'|sed "s/datetime/$(date +%Y%m%d%H%M)/g" >> /var/log/mysqlstat.log

fi

}

#备份数据库

mysqlbackup()

{

#MYSQL存活状态检测

mysqllive

[ ! -d $backuppath ] && mkdir $backuppath

for i in ${mysqldata[@]}

do

#先清理空间后在备份会比较稳当一点

find $backuppath -name $i\_*.zip -type f -mtime +7 -exec rm {} \;

#备份后压缩保存

mysqldump --opt -h$mysqlhost -u$username -p$passwd $i |gzip > $backuppath/$i\_$(date +%Y%m%d%H%M).zip

done

}

#FTP上传数据备份

dataftp()

{

######变量配置#######

ftphost=''

ftpusr=''

ftpd=''

ftpcmd=''

###################

#生成备份数据包的MD5文件排错

tmp="/tmp/$(date +%Y%m%d)"

[ ! -f $tmp ] && touch $tmp

for j in $(ls $backuppath/*$(date +%Y%m%d)* ); do

cd $backuppath ; md5sum `basename $j` >> $tmp

#调用PYTHON写的FTP脚本上传数据,代码地址:http://www.oschina.net/code/snippet_217347_25497

python $ftpcmd -t upload -H $ftphost -u $ftpusr -p $ftpd -l $j -r "/${j##*/}"

done

python $ftpcmd -t upload -H $ftphost -u $ftpusr -p $ftpd -l $tmp -r $(date +%Y%m%d)

rm $tmp

}

case $1 in

'check')

mysqlsamchk ;;

'backup')

mysqlbackup

dataftp ;;

*)

mysqllive ;;

esac

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值