一个脚本实现Mysql的备份
发布时间:2020-12-15 07:17:11 所属栏目:安全 来源:网络整理
导读:对于数据库的备份和恢复是DBA的主要责任,而如何才能有效的备份数据库,并且能在数据库崩溃的时候及时恢复便变的相当重要了,如果在Linux上纯手动的备份数据库,将会带来很大的麻烦,所有我就写了个脚本,把脚本加入到定期任务列表中,定期执行数据备份,这
对于数据库的备份和恢复是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数据库,如有问题,可以共同探讨! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |