温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

mysql的备份脚本分享

发布时间:2021-09-16 10:39:48 来源:亿速云 阅读:195 作者:chen 栏目: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 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的备份脚本分享”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注亿速云网站,小编将为大家输出更多高质量的实用文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI