程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL數據庫定時備份Shell腳本並備份至其它機器方法

MySQL數據庫定時備份Shell腳本並備份至其它機器方法

編輯:MySQL綜合教程

MySQL數據庫定時備份Shell腳本並備份至其它機器方法   這是一個簡單的MySQL數據庫備份shell腳本,適用於單台Linux服務器或者VPS的mysql數據庫備份工作, 工作原理是使用mysql的mysqldump工具來導出數據庫為.sql文件,然後將所有導出的文件打包歸檔。   然後我們在shell腳本中使用 scp命令把備份文件復制到另外一台備份機器,由於scp每次傳送文件要密碼 因此我們需要使用 expect插件或者利用密鑰。在這裡介紹采用生成密鑰對的方法。 1,生成密匙對,我用的是rsa的密鑰。使用命令 "ssh-keygen -t rsa"  生成的過程中提示輸入密鑰對保存位置及密碼,直接回車,接受默認值就行了。   其中公共密鑰保存在 ~/.ssh/id_rsa.pub,私有密鑰保存在 ~/.ssh/id_rsa 。
  2,然後修改 .ssh 目錄權限,chmod 755 ~/.ssh 。最後把 公共密鑰復制到你要訪問 的機器上去,並保存為:~/.ssh/authorized_keys 。 scp -P 1110 ~/.ssh/id_rsa.pub daniel@*.*.*.*:/home/daniel/.ssh/authorized_keys (注意這裡- P 為大寫, 表示目標機器daniel 的ssh端口為1110,小寫的p為源ssh端口 修改ssh端口在文件/etc/ssh/sshd_config下 。)這裡完成scp 腳本免密鑰的方法介紹。 最後使用crontab定時執行腳本即可! 腳本如下: [plain]  #!/bin/bash   # description:  MySQL buckup shell script   # author:       Daniel   st=$(date +%s)   USER="root"    PASSWORD="*****"#用戶名    DATABASE="myblogdb" #數據庫用戶密碼    MAIL="[email protected]"#mail      BACKUP_DIR=/home/daniel/data_backup/ #備份文件存儲路徑    LOGFILE=/home/daniel/data_backup/data_backup.log #日志文件路徑       DATE=`date +%Y%m%d-%H%M`#用日期格式作為文件名   DUMPFILE=$DATE.sql    ARCHIVE=$DATE.sql.tar.gz    OPTIONS="-u$USER -p$PASSWORD $DATABASE"      #判斷備份文件存儲目錄是否存在,否則創建該目錄    if [ ! -d $BACKUP_DIR ]    then       mkdir -p "$BACKUP_DIR"   fi        #開始備份之前,將備份信息頭寫入日記文件    echo "    ">> $LOGFILE    echo "--------------------" >> $LOGFILE    echo "BACKUP DATE:" $(date +"%y-%m-%d %H:%M:%S") >> $LOGFILE    echo "-------------------" >> $LOGFILE        #切換至備份目錄    cd $BACKUP_DIR    mysqldump $OPTIONS > $DUMPFILE    #判斷數據庫備份是否成功    if [[ $? == 0 ]]   then        tar czvf $ARCHIVE $DUMPFILE >> $LOGFILE 2>&1        echo "[$ARCHIVE] Backup Successful!" >> $LOGFILE        rm -f $DUMPFILE #刪除原始備份文件,只需保留備份壓縮包       # 把壓縮包文件備份到其他機器上。       scp -P $ARCHIVE daniel@*.*.*.*:/home/daniel/data_backup/    else        echo "Database Backup Fail!" >> $LOGFILE    #備份失敗後向管理者發送郵件提醒    mail -s "database:$DATABASE Daily Backup Fail!" $MAIL    fi    echo "Backup Process Done"    #刪除3天以上的備份文件   #Cleaning   find $BACKUP_DIR  -type f -mtime +2 -name "*.tar.gz" -exec rm -f {} \;   修改/etc/crontab #vi /etc/crontab 在下面添加: 00 03 * * * root /data/backup/dump.sh 注意/data/backup/dump.sh為腳本的存放位置. 表示每天3點鐘執行備份。 重新啟動crond # /etc/rc.d/init.d/crond restart  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved