mysql数据库完美增量备份脚本
2019/10/10/17:32:39 阅读:2318 来源:谷歌SEO算法 标签:
Google
增量备份的意思就是在以前数据上进行增加备份了,这样的数据备份无需大量的操作,只需要小小的变动就可以实现数据备份了,下面给各位整理了一段mysql数据库完美增量备份脚本,希望对大家有帮助.
是否因为mysql太大,来回备份浪费资源带宽而发愁,如果想解决这个麻烦就需要增量备份,下面是张小三资源网修改的一份mysql的增量备份脚本,我已做了相关注释,大家自行修改下就可以用了.
vi /etc/my.cnf开启日志及定期清理日志:
- log-bin=mysql-bin
- binlog_format=mixed
- //二进制日志自动删除的天数。默认值为0,表示“没有自动删除”
- expire_logs_days=5
全备份脚本:
- #!/bin/bash
- #Name:qbk全备份脚本
- #mysqlqbkscripts
- #Byzxsdw.com
- #LastModify:2015-01-21
- #定义脚本存放路径
- #scriptsDir=/usr/sbin
- #定义用户名及密码
- user=root
- userPWD=密码
- #定义要备份的数据库
- database=数据库
- #定义完全备份文件存放路径
- bakDir=/backup/mysql
- #eMailFile=$bakDir/email.txt
- #eMail=admin@zxsdw.com
- #定义日志文件
- LogFile=$bakDir/mysqlbak.log
- DATE=`date+%Y%m%d`
- echo"">>$LogFile
- echo"">>$LogFile
- echo"--------------------------">>$LogFile
- echo$(date+"%y-%m-%d%H:%M:%S")>>$LogFile
- echo"-----------------">>$LogFile
- cd$bakDir
- DumpFile=$DATE.sql.gz
- mysqldump--flush-logs-u$user-p$userPWD--quick$database|gzip>$DumpFile
- echo"DumpDone">>$LogFile
- echo"[$DumpFile]BackupSuccess!">>$LogFile
- daily_databakDir=$bakDir/daily_backup
- cd$bakDir/daily_backup
- find$daily_databakDir-name"daily*"-typef-mtime+35-execrm{}\;>/dev/null2>&1
- 增量备份脚本:
- #!/bin/bash
- #Name:zbk增量备份
- #mysqlzbkscripts
- #Byzxsdw.com
- #Lastmodify:2015-01-21
- #定义数据库用户名及密码
- user=root
- userPWD=密码
- #定义数据库
- database=数据库
- #生成一个新的mysql-bin.00000X文件,如果err日志被清除,则自动新建一个。
- /usr/local/mysql/bin/mysqladmin-u$user-p$userPWDflush-logs
- #定义增量备份位置
- daily_databakDir=/backup/mysql/daily_backup
- #定义MYSQL数据日志目录
- mysqlDataDir=/usr/local/mysql/var
- #定义增量日志及目录
- eMailFile=$daily_databakDir/email.txt
- #eMail=admin@zxsdw.com
- #定义变量DATE格式为20150127
- DATE=`date+%Y%m%d`
- #定义一个总的logFile日志
- logFile=$daily_databakDir/mysql$DATE.log
- #美化日志模板
- echo"">$eMailFile
- echo"-----------------------">>$eMailFile
- #时间格式为15-01-2701:06:17
- echo$(date+"%y-%m-%d%H:%M:%S")>>$eMailFile
- echo"-------------------------">>$eMailFile
- #定义删除bin日志的时间范围,格式为20150124010540
- TIME=$(date"-d3dayago"+%Y%m%d%H%M%S)
- #定义需要增量备份数据的时间范围,格式为2015-01-2601:04:11
- StartTime=$(date"-d1dayago"+"%Y-%m-%d%H:%M:%S")
- ###########开始删除操作美化日志标题##############
- echo"Delete3daysbeforethelog">>$eMailFile
- #删除三天前的bin文件,及更新index里的索引记录,美化日志标题
- mysql-u$user-p$userPWD-e"purgemasterlogsbefore${TIME}"&&echo"delete3daysbeforelog"|tee-a$eMailFile
- #查找index索引里的bin2进制文件并赋值给i。
- filename=`cat$mysqlDataDir/mysql-bin.index|awk-F"/"'{print$2}'`
- foriin$filename
- do
- #########开始增量备份操作,美化日志标题###########
- echo"$StartTimestartbackupbinlog">>$eMailFile
- #利用mysqlbinlog备份1天前增加的数据,并gzip压缩打包到增量备份目录
- /usr/local/mysql/bin/mysqlbinlog-u$user-p$userPWD-d$database--start-datetime="$StartTime"$mysqlDataDir/$i|gzip>>$daily_databakDir/daily$DATE.sql.gz|tee-a$eMailFile
- done
- #如果以上备份脚本执行成功,接着运行下面的删除脚本
- if[$?=0]
- then
- #删除mtime>32的增量日志备份文件
- find$daily_databakDir-name"*.log"-typef-mtime+32-execrm{}\;>/dev/null2>&1
- cd$daily_databakDir
- echo"Dailybackupsucceed">>$eMailFile
- else
- echo"Dailybackupfail">>$eMailFile
- #mail-s"MySQLBackup"$eMail<$eMailFile#备份失败之后发送邮件通知
- #fi结束IF判断
- fi
- #把变量eMailFile的内容替换logFile内容
- cat$eMailFile>$logFile
- #如果上面的IF判断失败,再次运行删除mtime>32的增量日志备份文件
- find$daily_databakDir-name"*.log"-typef-mtime+32-execrm{}\;>/dev/null2>&1--phpfensi.com
- rsync-vzrtopg--delete--progress--password-file=/usr/local/rsync/rsync.passwdroot@$ip:/zxs/allimg/$(date-d-1day+%y%m%d)/zxs/allimg/
- gunzip</backup/mysql/daily_backup/ceshi.sql.gz|/usr/local/mysql/bin/mysql-u用户名-p密码数据库名--force
- --force参数忽略错误
热门评论