解決linux crontab備份mysql失敗的問題

壹頁書發表於2014-06-09
資料庫採用crontab呼叫xtrabackup備份。
但是我驚奇的發現,備份居然沒有執行。
備份指令碼如下


backup.sh 指令碼如下
  1. #!/bin/bash
  2. TODAY=`date +%Y%m%d`
  3. BACKUPDIR=/data/dbbak/${TODAY}
  4. mkdir ${BACKUPDIR}
  5. cd ${BACKUPDIR}
  6. innobackupex --user=root --port=3306 ${BACKUPDIR}
  7. DAYSAGO=`date -d \'3 days ago\' +%Y%m%d`
  8. rm -rf /data/dbbak/${DAYSAGO}
看起來似乎沒有什麼問題。
但是..
crontab不能應用使用者的環境變數,也就是說他找不到innobackupex這個命令...


而指令碼中的innobackupex則在使用者自己定義的PATH中,解決這個問題有三個方法
1.在/etc/crontab中增加PATH變數
2.在指令碼中使用絕對路徑
3.在指令碼中引入使用者環境變數。

我感覺第三種方法比較可行。
  1. #!/bin/bash
  2. export PATH=.:$PATH:/home/mysql/mysql-5.6.14/bin:/home/mysqlbackup/percona-xtrabackup-2.1.9-Linux-x86_64/bin;
  3. TODAY=`date +%Y%m%d`
  4. BACKUPDIR=/data/dbbak/${TODAY}
  5. mkdir ${BACKUPDIR}
  6. cd ${BACKUPDIR}
  7. innobackupex --user=root --port=3306 ${BACKUPDIR}
  8. DAYSAGO=`date -d \'3 days ago\' +%Y%m%d`
  9. rm -rf /data/dbbak/${DAYSAGO}
幸虧發現的早..

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1178626/,如需轉載,請註明出處,否則將追究法律責任。

相關文章