千家信息网

mysql的备份脚本分享

发表于:2024-12-12 作者:千家信息网编辑
千家信息网最后更新 2024年12月12日,本篇内容介绍了"mysql的备份脚本分享"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!#!/bin/
千家信息网最后更新 2024年12月12日mysql的备份脚本分享

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

#!/bin/bash##################################################################                                                               ##       Purpose: MySQL backups                                  ## This script does a full or incremental backup  ## The full is done via mysqldump## The incremental is done via flush-logs option  ## with mysqladmin##                                                               ##                The script is also setup to email if a         ##                failure occurs                                 ##                                                               ##       Assumptions:                                            ##               1. Database is in Binary Update Log mode        ##               2. The variables are set correctly              ####Usage:mysql_backup [full|incremental]####                                                               ####################################################################################################################################               INITILIAZE VARIABLES                            ################################################################### Set the mode, full|incremental# parameter is passed inMODE=$1# set the username to connect to mysql for the backupMYSQLUSER=backup# set the password to connect to mysql for the backupMYSQLUSERPW=password# set the Binary Update Logs PathBINLOGPATH=/mysql/logs/emds01/mysql# Set the binary Update Logs nameBINLOGNAME=viper2-bin# set the backup pathBACKUPPATH=/export/home/mysql/backups# set the email address for errors to be emailed toEMAIL_ADDR=shenandoah.speers@cicadacorp.com# set the log fileLOGFILE=$BACKUPPATH/logs/$HOSTNAME_$RUNDATE.log# set the error log fileLOGERR=$BACKUPPATH/logs/ERRORS_$HOSTNAME_$RUNDATE.log# set the number of days to keep the backupsDAYSTOKEEP=5# set Run dateRUNDATE=`date +%Y%m%d%s`# set hostnameHOSTNAME=`uname -n`##################################################################               GLOBAL FUNCTIONS                                ##################################################################copyBinlogs() {# copy binlogs to backup direcho "Copying binlogs"for FILE in `cat $BINLOGPATH/$BINLOGNAME.index`doSFILE=(${FILE/*//})echo "- binlog $SFILE"cp $FILE $BACKUPPATH/$SFILE_$RUNDATEgzip $BACKUPPATH/$SFILE_$RUNDATEdone}removeOldBackups() {# remove old backupsecho "Removing old backups greater then $DAYSTOKEEP days"find $BACKUPPATH -type f -mtime +$DAYSTOKEEP -name *.gz -print -exec rm {} ;find $BACKUPPATH/logs -type f -mtime +$DAYSTOKEEP -name *.log -print -exec rm {} ;}startlog() {# IO redirection for loggingtouch $LOGFILEexec 6>&1           # Link file descriptor #6 with stdout.# Saves stdout.exec > $LOGFILE     # stdout replaced with file $LOGFILE.touch $LOGERRexec 7>&2           # Link file descriptor #7 with stderr.# Saves stderr.exec 2> $LOGERR     # stderr replaced with file $LOGERR.}stoplog() {#Clean up IO redirectionexec 1>&6 6>&-      # Restore stdout and close file descriptor #6.exec 1>&7 7>&-      # Restore stdout and close file descriptor #7.}##################################################################               START OF MAIN                                   ##################################################################case "$MODE" in'full')# Daily backup# - copy all bin logs to backup directory# - remove old backups and logsstartlog;echo "Start Mysql Daily backup `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 "Finish Mysql Daily backup `date +%c`"stoplog;email;;;'incremental')# hourly backup# - flush logs# - copy all bin logs to backup directory if not already doneecho "Start Mysql hourly backup `date +%c`"startlog;mysqladmin -u $MYSQLUSER -p$MYSQLUSERPW flush-logscopyBinlogs;echo "Finish Mysql hourly backup `date +%c`"stoplog;;;*)echo "Usage: mysql_backup [full|incremental]";;esac# email any errors encounteredif [ -s "$LOGERR" ]thencat "$LOGERR" | mail -s "ERRORS REPORTED: MySQL Backup error Log for $HOSTNAME - $RUNDATE" $EMAIL_ADDRcat "$LOGFILE" | mail -s "MySQL Backup Log for $HOSTNAME - $RUNDATE" $EMAIL_ADDRSTATUS=1elseSTATUS=0fiexit $STATUS##################################################################               END OF MAIN                                     ##################################################################

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

0