本篇内容介绍了“MySQL的备份脚本分享”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联主要从事做网站、成都网站制作、网页设计、企业做网站、公司建网站等业务。立足成都服务靖安,10年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
#!/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 in MODE=$1 # set the username to connect to mysql for the backup MYSQLUSER=backup # set the password to connect to mysql for the backup MYSQLUSERPW=password # set the Binary Update Logs Path BINLOGPATH=/mysql/logs/emds01/mysql # Set the binary Update Logs name BINLOGNAME=viper2-bin # set the backup path BACKUPPATH=/export/home/mysql/backups # set the email address for errors to be emailed to EMAIL_ADDR=shenandoah.speers@cicadacorp.com # set the log file LOGFILE=$BACKUPPATH/logs/$HOSTNAME_$RUNDATE.log # set the error log file LOGERR=$BACKUPPATH/logs/ERRORS_$HOSTNAME_$RUNDATE.log # set the number of days to keep the backups DAYSTOKEEP=5 # set Run date RUNDATE=`date +%Y%m%d%s` # set hostname HOSTNAME=`uname -n` ################################################################# # GLOBAL FUNCTIONS # ################################################################# copyBinlogs() { # copy binlogs to backup dir echo "Copying binlogs" for FILE in `cat $BINLOGPATH/$BINLOGNAME.index` do SFILE=(${FILE/*//}) echo "- binlog $SFILE" cp $FILE $BACKUPPATH/$SFILE_$RUNDATE gzip $BACKUPPATH/$SFILE_$RUNDATE done } removeOldBackups() { # remove old backups echo "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 logging touch $LOGFILE exec 6>&1 # Link file descriptor #6 with stdout. # Saves stdout. exec > $LOGFILE # stdout replaced with file $LOGFILE. touch $LOGERR exec 7>&2 # Link file descriptor #7 with stderr. # Saves stderr. exec 2> $LOGERR # stderr replaced with file $LOGERR. } stoplog() { #Clean up IO redirection exec 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 logs startlog; 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.gz copyBinlogs; 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 done echo "Start Mysql hourly backup `date +%c`" startlog; mysqladmin -u $MYSQLUSER -p$MYSQLUSERPW flush-logs copyBinlogs; echo "Finish Mysql hourly backup `date +%c`" stoplog; ;; *) echo "Usage: mysql_backup [full|incremental]" ;; esac # email any errors encountered if [ -s "$LOGERR" ] then cat "$LOGERR" | mail -s "ERRORS REPORTED: MySQL Backup error Log for $HOSTNAME - $RUNDATE" $EMAIL_ADDR cat "$LOGFILE" | mail -s "MySQL Backup Log for $HOSTNAME - $RUNDATE" $EMAIL_ADDR STATUS=1 else STATUS=0 fi exit $STATUS ################################################################# # END OF MAIN # #################################################################
“mysql的备份脚本分享”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!