#!/bin/bash
zhouji=$(date +"%w")
if ! ls /backup/perfect &>/dev/null
then
mkdir -p /backup/perfect
fi
if ! ls /backup1/perfect &> /dev/null
then
mkdir -p /backup1/perfect
fi
if ! ls /tmp/guocheng &> /dev/null
then
touch /tmp/guocheng
fi
caozuo1()
{
jieguo=$(cat /tmp/guocheng | tail -n -1 | awk '{print $3,$4}')
if [[ $jieguo = "completed OK!" ]]
then
echo "$(date +"%Y-%m-%d")日的备份已成功"|mail -s "备份" ch1yanzhi@163.com
echo "$(date +"%Y-%m-%d")日的备份已成功" >> /tmp/jieguo
else
echo "$(date +"%Y-%m-%d")日的备份失败,请查看原因"|mail -s "备份" ch1yanzhi@163.com
echo "$(date +"%Y-%m-%d")日的备份失败,请查看原因" >> /tmp/jieguo
exit 10
fi
}
caozuo2()
{
jieguo=$(cat /tmp/guocheng | tail -n -1 | awk '{print $3,$4}')
if [[ $jieguo = "completed OK!" ]]
then
echo "$(date +"%Y-%m-%d")日的备份已应用"|mail -s "应用" ch1yanzhi@163.com
echo "$(date +"%Y-%m-%d")日的备份已应用" >> /tmp/jieguo
else
echo "$(date +"%Y-%m-%d")日的备份应用失败,请查看原因"|mail -s "应用" ch1yanzhi@163.com
echo "$(date +"%Y-%m-%d")日的备份应用失败,请查看原因" >> /tmp/jieguo
exit 11
fi
}
beifen()
{
if (( $zhouji == 0 ))
then
innobackupex --no-timestamp --user=root --password=123 /$1/perfect &> /tmp/guocheng
caozuo1
sleep 2
innobackupex --apply-log --redo-only /$1/perfect &>> /tmp/guocheng
caozuo2
if ! ls /$1/ | grep "increment" &> /dev/null
then
mkdir /$1/increment
fi
if (( $(ls /$2 | wc -l ) != 0 ))
then
rm -rf /$2/*
fi
elif (( $zhouji == 1 ))
then
innobackupex --incremental --incremental-basedir=/$1/perfect/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
qidian1=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --apply-log --redo-only --incremental /$1/perfect/ --incremental-dir=/$1/increment/$qidian1/ &>> /tmp/guocheng
caozuo2
elif (( $zhouji == 6 ))
then
if (( $(ls /$1/increment/ | wc -l) ==0 ))
then
innobackupex --incremental --incremental-basedir=/$1/perfect/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
qidian1=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --apply-log --redo-only --incremental /$1/perfect/ --incremental-dir=/$1/increment/$qidian1/ &>> /tmp/guocheng
caozuo2
else
qidian2=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --incremental --incremental-basedir=/$1/increment/$qidian2/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
qidian3=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --apply-log --incremental /$1/perfect/ --incremental-dir=/$1/increment/$qidian3/ &>> /tmp/guocheng
caozuo2
fi
else
if (( $(ls /$1/increment/ | wc -l) ==0 ))
then
innobackupex --incremental --incremental-basedir=/$1/perfect/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
qidian1=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --apply-log --redo-only --incremental /$1/perfect/ --incremental-dir=/$1/increment/$qidian1/ &>> /tmp/guocheng
caozuo2
else
qidian2=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --incremental --incremental-basedir=/$1/increment/$qidian2/ --user=root --password=123 /$1/increment/ &> /tmp/guocheng
caozuo1
sleep 2
qidian3=$(ls -l /$1/increment/ | tail -n -1 | awk '{print $9}')
innobackupex --apply-log --redo-only --incremental /$1/perfect/ --incremental-dir=/$1/increment/$qidian3/ &>> /tmp/guocheng
caozuo2
fi
fi
}
if (( $(ls /backup/perfect/ | wc -l ) == 0 )) && (( $(ls /backup1/perfect/ | wc -l ) == 0 )) && (( $zhouji != 0 ))
then
innobackupex --no-timestamp --user=root --password=123 /backup/perfect &> /tmp/guocheng
caozuo1
sleep 2
innobackupex --apply-log --redo-only /backup/perfect &>> /tmp/guocheng
caozuo2
if ! ls /backup/ | grep "increment" &> /dev/null
then
mkdir /backup/increment
fi
elif (( $(ls /backup/perfect/ | wc -l ) == 0 )) && (( $zhouji == 0 ))
then
beifen backup backup1
elif (( $(ls /backup/perfect/ | wc -l ) != 0 )) && (( $zhouji != 0 ))
then
beifen backup backup1
elif (( $(ls /backup1/perfect/ | wc -l ) == 0 )) && (( $zhouji == 0 ))
then
beifen backup1 backup
elif (( $(ls /backup1/perfect/ | wc -l ) != 0 )) && (( $zhouji != 0 ))
then
beifen backup1 backup
else
echo "两个备份文件都不是空的,请至少清空一个"
echo "两个备份文件都不是空的,请至少清空一个" | mail -s "备份文件" ch1yanzhi@163.com
fi
[root@server jiaoben]
#!/bin/bash
huifu1()
{
if ls /backup/increment &> /dev/null
then
innobackupex ----defaults-file=/etc/my.cnf --copy-back /backup/perfect &> /tmp/guocheng
else
innobackupex ----defaults-file=/etc/my.cnf --copy-back /backup1/perfect &> /tmp/guocheng
fi
}
huifu2()
{
if (( $(ls /data | wc -l) == 0 ))
then
huifu1
elif ls /data/mysqlbinlog.* &> /dev/null
then
if ! ls /tmp/mysqlbinlog.bak &> /dev/null
then
mkdir /tmp/mysqlbinlog.bak
else
rm -rf /tmp/mysqlbinlog.bak/*
fi
mv /data/mysqlbinlog.* /tmp/mysqlbinlog.bak/
rm -rf /data/*
huifu1
else
rm -rf /data/*
huifu1
fi
}
zhuangtai=$(netstat -tnulp|grep 3306 | awk '{print $7}' | awk -F'/' '{print $2}')
mysql_pid=$(netstat -tnulp|grep 3306 | awk '{print $7}' | awk -F'/' '{print $1}')
if [[ -z $zhuangtai ]]
then
huifu2
else
kill -9 $mysql_pid
huifu2
fi
sleep 2
chown -R mysql:mysql /data/
service mysqld start &>> /tmp/guocheng
if netstat -tnulp|grep 3306 &>> /tmp/guocheng
then
echo "重启成功" >> /tmp/guocheng
else
echo "重启失败,请手动恢复数据库" >> /tmp/guocheng