本篇内容介绍了“mysql的备份脚本分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

#!/bin/bash####################################################################Purpose:MySQLbackups##Thisscriptdoesafullorincrementalbackup##Thefullisdoneviamysqldump##Theincrementalisdoneviaflush-logsoption##withmysqladmin####Thescriptisalsosetuptoemailifa##failureoccurs####Assumptions:##1.DatabaseisinBinaryUpdateLogmode##2.Thevariablesaresetcorrectly####Usage:mysql_backup[full|incremental]########################################################################################################################################INITILIAZEVARIABLES###################################################################Setthemode,full|incremental#parameterispassedinMODE=$1#settheusernametoconnecttomysqlforthebackupMYSQLUSER=backup#setthepasswordtoconnecttomysqlforthebackupMYSQLUSERPW=password#settheBinaryUpdateLogsPathBINLOGPATH=/mysql/logs/emds01/mysql#SetthebinaryUpdateLogsnameBINLOGNAME=viper2-bin#setthebackuppathBACKUPPATH=/export/home/mysql/backups#settheemailaddressforerrorstobeemailedtoEMAIL_ADDR=shenandoah.speers@cicadacorp.com#setthelogfileLOGFILE=$BACKUPPATH/logs/$HOSTNAME_$RUNDATE.log#settheerrorlogfileLOGERR=$BACKUPPATH/logs/ERRORS_$HOSTNAME_$RUNDATE.log#setthenumberofdaystokeepthebackupsDAYSTOKEEP=5#setRundateRUNDATE=`date+%Y%m%d%s`#sethostnameHOSTNAME=`uname-n`##################################################################GLOBALFUNCTIONS##################################################################copyBinlogs(){#copybinlogstobackupdirecho"Copyingbinlogs"forFILEin`cat$BINLOGPATH/$BINLOGNAME.index`doSFILE=(${FILE/*//})echo"-binlog$SFILE"cp$FILE$BACKUPPATH/$SFILE_$RUNDATEgzip$BACKUPPATH/$SFILE_$RUNDATEdone}removeOldBackups(){#removeoldbackupsecho"Removingoldbackupsgreaterthen$DAYSTOKEEPdays"find$BACKUPPATH-typef-mtime+$DAYSTOKEEP-name*.gz-print-execrm{};find$BACKUPPATH/logs-typef-mtime+$DAYSTOKEEP-name*.log-print-execrm{};}startlog(){#IOredirectionforloggingtouch$LOGFILEexec6>&1#Linkfiledescriptor#6withstdout.#Savesstdout.exec>$LOGFILE#stdoutreplacedwithfile$LOGFILE.touch$LOGERRexec7>&2#Linkfiledescriptor#7withstderr.#Savesstderr.exec2>$LOGERR#stderrreplacedwithfile$LOGERR.}stoplog(){#CleanupIOredirectionexec1>&66>&-#Restorestdoutandclosefiledescriptor#6.exec1>&77>&-#Restorestdoutandclosefiledescriptor#7.}##################################################################STARTOFMAIN##################################################################case"$MODE"in'full')#Dailybackup#-copyallbinlogstobackupdirectory#-removeoldbackupsandlogsstartlog;echo"StartMysqlDailybackup`date+%c`"mysqldump-u$MYSQLUSER-p$MYSQLUSERPW--single-transaction--flush-logs--master-data=2--all-databases--delete-master-logs|gzip>$BACKUPPATH/$HOSTNAME_full_$RUNDATE.sql.gzcopyBinlogs;removeOldBackups;echo"FinishMysqlDailybackup`date+%c`"stoplog;email;;;'incremental')#hourlybackup#-flushlogs#-copyallbinlogstobackupdirectoryifnotalreadydoneecho"StartMysqlhourlybackup`date+%c`"startlog;mysqladmin-u$MYSQLUSER-p$MYSQLUSERPWflush-logscopyBinlogs;echo"FinishMysqlhourlybackup`date+%c`"stoplog;;;*)echo"Usage:mysql_backup[full|incremental]";;esac#emailanyerrorsencounteredif[-s"$LOGERR"]thencat"$LOGERR"|mail-s"ERRORSREPORTED:MySQLBackuperrorLogfor$HOSTNAME-$RUNDATE"$EMAIL_ADDRcat"$LOGFILE"|mail-s"MySQLBackupLogfor$HOSTNAME-$RUNDATE"$EMAIL_ADDRSTATUS=1elseSTATUS=0fiexit$STATUS##################################################################ENDOFMAIN##################################################################

“mysql的备份脚本分享”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!