一个脚本实现Mysql的备份

前端之家收集整理的这篇文章主要介绍了一个脚本实现Mysql的备份前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
对于数据库的备份和恢复是DBA的主要责任,而如何才能有效的备份数据库,并且能在数据库崩溃的时候及时恢复便变的相当重要了,如果在Linux上纯手动的备份数据库,将会带来很大的麻烦,所有我就写了个脚本,把脚本加入到定期任务列表中,定期执行数据备份,这就变得更加容易管理数据库了,我这里是一个简单的小脚本,当然在实际引用中还要修改,比如添加用户和密码,可以根据自己的需要在做修改。下面简单的介绍一下这个脚本,这个脚本执行的时候有四个参数:/PATH/MysqLbak.sh-f//完全备份,这个可以根据自己数据库变动的情况设置多长时间执行一次,加入一个月执行一次吧!/PATH/MysqLbak.sh-d//这个是从最后一次完全备份到目前的时间的一次差异备份,这样就减少了备份数据库的时间。/PATH/MysqLbak.sh-i//这个参数可以实现增量备份,也就是上一次备份和这次备份之间数据库的变动,这个时间可以短一点,这样可以在数据库崩溃的时候减少损失,可以一个小时一次。/PATH/MysqLbak.sh-h//这个是帮助信息把这些都加入到定期执行计划中,就可以实现自动执行脚本了,不用管理员手动进行备份了。#!/bin/bash
#functionHELPTXT{
echo"/PATH/MysqLbak.sh-f:Youcanbackupalldatabases"
echo"/PATH/MysqLbak.sh-i:Justbackuptheexterchangefromthelastbackup"
echo"/PATH/MysqLbak.sh-d:Backupfromthelastfull-backuptothecurrenttime"
}DATE=`date"+%F-%H-%M-%S"`
MysqL-e"FLUSHTABLESWITHREADLOCK;"
MysqL-e"SHOWMASTERSTATUS;">/dev/null
startfile=/tmp/startposition
exterfile=/tmp/exterpositionwhilegetopts"fdih"OPTS;do
case$OPTSin
f)
MysqLdump--all-databases>/mybackup/db.$DATE
STARTPOSITION=`MysqL-e"SHOWMASTERSTATUS;"|tail-1|awk'{print$2}'>$startfile`
ESTARTPOSITION=`MysqL-e"SHOWMASTERSTATUS;"|tail-1|awk'{print$2}'>$exterfile`
cd/mybackup
tar-cjf/root/bakMysqL/db.$DATE.tar.gz2db.$DATE>/dev/null
;;
d)
MysqL-e"FLUSHTABLESWITHREADLOCK;"
MysqL-e"SHOWMASTERSTATUS;">/dev/null
FILE=`MysqL-e"SHOWMASTERSTATUS;"|tail-1|awk'{print$1}'`
STARTPOSITION=`cat$startfile`
ENDPOSITION=`MysqL-e"SHOWMASTERSTATUS;"|tail-1|awk'{print$2}'`
MysqLbinlog--start-position$STARTPOSITION--stop-position$ENDPOSITION/mydata/data/$FILE>/mybackup/incre.$DATE
cd/mybackup
tar-cjf/root/bakMysqL/incre.$DATE.tar.gz2incre.$DATE>/dev/null
;;
i)
MysqL-e"FLUSHTABLESWITHREADLOCK;"
MysqL-e"SHOWMASTERSTATUS;">/dev/null
FILE=`MysqL-e"SHOWMASTERSTATUS;"|tail-1|awk'{print$1}'`
EENDPOSITION=`MysqL-e"SHOWMASTERSTATUS;"|tail-1|awk'{print$2}'>>$exterfile`
ESTARTPOSITION=`tail-n2$exterfile|head-n1`
Exendposition=`tail-n1$exterfile`
MysqLbinlog--start-position$ESTARTPOSITION--stop-position$Exendposition/mydata/data/$FILE>/mybackup/exter.$DATE
cd/mybackup
tar-cjf/root/bakMysqL/exter.$DATE.tar.gz2exter.$DATE>/dev/null
;;
h)
HELPTXT
;;
esac
done
在crontab-e中添加任务计划,就能实现自动备份数据库了!!希望这个小脚本能够让你更加便捷的管理MysqL数据库,如有问题,可以共同探讨!

猜你在找的Shell相关文章