#!/bin/bash
dbuser='root'
dbpass='ssssss'
mysqldata='/home/wddata/var'
mycnf='/www/wdlinux/etc/my.cnf'
mysql_e='/www/wdlinux/mysql/bin/mysql'
mysqldump_e='/www/wdlinux/mysql/bin/mysqldump'
mysqlbakpath="/home/bkmysql/$(date +%Y%m%d%H%M%S)"
function stop_mysql(){
service mysqld stop
if [ $? -ne 0 ];then
ps -e|grep mysql|awk '{print $1}'|xargs kill -9
fi
}
mkdir -p $mysqlbakpath
sed -i -e '/\[mysqld\]/a innodb_force_recovery=3' $mycnf
stop_mysql
service mysqld start
#start dump innodb mysql
if [ $? -eq 0 ];then
cd $mysqldata
ls *\/*.ibd -h|awk -F'/' '{print $1}'|uniq|grep -v 'mysql' > $mysqlbakpath/l.txt
for i in `cat $mysqlbakpath/l.txt`
do
echo "dump $i"
$mysqldump_e -f -u$dbuser -p$dbpass $i > $mysqlbakpath/$i.sql
done
fi
#end dump innodb mysql
#start bkup innodb mysql
cd $mysqldata
stop_mysql
mv -f ibdata1 ib_logfile0 ib_logfile1 $mysqlbakpath
for i in `cat $mysqlbakpath/l.txt`
do
mv -f $i $mysqlbakpath
done
#end bkup innodb mysql
sed -i -e '/innodb_force_recovery=3/d' $mycnf
service mysqld start
#start Import mysql
if [ $? -eq 0 ];then
for i in `cat $mysqlbakpath/l.txt`
do
echo "recovey $i"
$mysql_e -u$dbuser -p$dbpass -e "create database $i;"
$mysql_e -u$dbuser -p$dbpass $i < $mysqlbakpath/$i.sql
done
fi
#end Import mysql
文章评论 本文章有个评论