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

數據庫採用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}
幸虧發現的早..
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章