歡迎您光臨本站 註冊首頁

分享mail伺服器的mysql資料庫備份腳本

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

分享mail伺服器的mysql資料庫備份腳本

  功能:備份mysql資料庫中mail的資料庫數據,並用gz壓縮,先備份到本地,然後自動上傳到指定的ftp伺服器,備份日誌email到指定的郵箱
 借鑒了網上查找的一些範例,現在記不起來是什麼地方,在此謝謝
 
 
 
 # cat mailmysql_backup_ftp
 #!/bin/bash
 #Mysql Autobackup Shell
 #Writed by ruochen0926@hotmail.com QQ:967409
 
 #DB env
 dbuser=root
 dbpasswd=root
 dbserver=localhost
 dbname=extmail
 #dbopt=--opt
 backupdir=/home/mysql-backup/
 
 #FTP 0 is disable,1 is enable
 copytoftp=1
 ftpserver=10.1.1.8
 ftpuser=admin
 ftppasswd=admin
 fileprefix=extmail
 dumpfilename=$backupdir`date +%F`.sql
 newfile=$fileprefix-`date +%F`.gz
 keepdays=16
 
 #Backup log
 logfile=/tmp/mysqldump.log
 logtmp=/tmp/mysqldump.tmp
 
 #mail 0 is diable,1 is enable
 mailenable=1
 mailaddress=ruochen0926@hotmail.com
 
 #Backup script
 #===============================================
 if [ ! -d $backupdir ]
 then
         echo "$backupdir is not exist, then make ..." > $logfile
         mkdir -p $backupdir
 fi
 echo "start====================================>">$logfile
 echo "Beginning backup `date '+%F %T'`" >>$logfile
 echo "Delete $keepdays days ago files ..." >>$logfile
 find $backupdir -name $fileprefix* -mtime +$keepdays -fls $logtmp -exec rm {} \;
 echo "Deleted Backup File Is :">>$logfile
 cat $logtmp >>$logfile
 echo "Delete old file Success!" >>$logfile
 if [ -f $backupdir$newfile ]
 then
 echo "$newfile backup exist, backup stop ..." >>$logfile
 else
         if [ -z $dbpasswd ]
         then
 #        mysqldump -u$dbuser -h$dbserver $dbopt $dbname >$dumpfilename
         /usr/bin/mysqldump -u$dbuser -h$dbserver $dbopt $dbname >$dumpfilename
         else
 #        /opt/lampp/bin/mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname | gzip > /opt/apache/mysqlbackup/$newfile
         /usr/bin/mysqldump -u$dbuser -p$dbpasswd -h$dbserver $dbopt $dbname | gzip > $backupdir/$newfile
         fi
 #        tar czvf $backupdir$newfile $dumpfilename >>$logfile 2>&1
 #        gzip $dumpfilename  $newfile  >>$logfile 2>&1
         echo "$backupdir$newfile Backup Success!" >>$logfile
         rm -fr $dumpfilename
 
 if [ $copytoftp = 1 ];  then
         if [ -z $ftpserver ];then
         echo "Ftp Server not set,Copy to Ftp Failed ..." >>$logfile
         exit 1
         elif [ -z $ftpuser ];then
         echo "Ftp user not set, Copy to Ftp Failed ..." >>$logfile
         exit 2
         elif [ -z $ftppasswd ]; then
         echo "Ftp password not set, Copy to Ftp Failed ..." >>$logfile
         exit 3
         else
         echo "Start copy to Ftp server ...." >> $logfile
 ftp -n<<eof
open $ftpserver
 user $ftpuser $ftppasswd
 bin
 cd mail_backup
 cd mailmysql
 lcd $backupdir
 mput $newfile
 y
 bye
 eof
 fi
 fi
 echo "$newfile Upload Ftp Successful">>$logfile
 echo "End=======================================|">>$logfile
 fi
 
  if [ $mailenable=1 ];
     then
       mail -s "Mail Server Mysql Backup Status" $mailaddress<$logfile
  fi

[ 本帖最後由 ruochen 於 2008-11-22 10:32 編輯 ]

《解決方案》

    支持一下
 
 提個小小建議。  你把logfile放在tmp目錄下,比較容易丟失,可能會被誤刪掉,是否可以放在某個特定的目錄下,比較容易找,也使系統目錄更整齊

 

 提個小小建議。  你把logfile放在tmp目錄下,比較容易丟失,可能會被誤刪掉,是否可以放在某個特定的目錄下,比較容易找,也使系統目錄更整齊
 
 
 你肯定沒有看完我的腳本
 我是臨時存放的
 每次腳本執行完后就將log mail到我的郵箱了
 
 下次我的log文件又是新生成的,按上面的循環,我根本不需要在伺服器上保存我的logfile

《解決方案》

    怎麼沒有加--OPT參數?請說明一下,謝謝!

《解決方案》

    下面是man裡面對opt參數的解釋
 
 
        ·  --opt
 
           This option is shorthand; it is the same as specifying
           --add-drop-table --add-locks --create-options --disable-keys
           --extended-insert --lock-tables --quick --set-charset. It should
           give you a fast dump operation and produce a dump file that can be
           reloaded into a MySQL server quickly.
 
           The --opt option is enabled by default. Use --skip-opt to disable
           it.  See the discussion at the beginning of this section for
           information about selectively enabling or disabling certain of the
           options affected by --opt.


[火星人 ] 分享mail伺服器的mysql資料庫備份腳本已經有708次圍觀

http://coctec.com/docs/service/show-post-26030.html