解決linux crontab備份mysql失敗的問題
阿新 • • 發佈:2019-01-04
資料庫採用crontab呼叫xtrabackup備份。
但是我驚奇的發現,備份居然沒有執行。
備份指令碼如下
backup.sh 指令碼如下
但是..
crontab不能應用使用者的環境變數,也就是說他找不到innobackupex這個命令...
而指令碼中的innobackupex則在使用者自己定義的PATH中,解決這個問題有三個方法
1.在/etc/crontab中增加PATH變數
2.在指令碼中使用絕對路徑
3.在指令碼中引入使用者環境變數。
我感覺第三種方法比較可行。
但是我驚奇的發現,備份居然沒有執行。
備份指令碼如下
backup.sh 指令碼如下
- #!/bin/bash
- TODAY=`date +%Y%m%d`
- BACKUPDIR=/data/dbbak/${TODAY}
- mkdir ${BACKUPDIR}
- cd ${BACKUPDIR}
- innobackupex --user=root --port=3306 ${BACKUPDIR}
- DAYSAGO=`date -d \'3 days ago\' +%Y%m%d`
- rm -rf /data/dbbak/${DAYSAGO}
但是..
crontab不能應用使用者的環境變數,也就是說他找不到innobackupex這個命令...
而指令碼中的innobackupex則在使用者自己定義的PATH中,解決這個問題有三個方法
1.在/etc/crontab中增加PATH變數
2.在指令碼中使用絕對路徑
3.在指令碼中引入使用者環境變數。
我感覺第三種方法比較可行。
- #!/bin/bash
- export PATH=.:$PATH:/home/mysql/mysql-5.6.14/bin:/home/mysqlbackup/percona-xtrabackup-2.1.9-Linux-x86_64/bin;
- TODAY=`date +%Y%m%d`
- BACKUPDIR=/data/dbbak/${TODAY}
- mkdir ${BACKUPDIR}
-
cd ${BACKUPDIR}
- innobackupex --user=root --port=3306 ${BACKUPDIR}
- DAYSAGO=`date -d \'3 days ago\' +%Y%m%d`
- rm -rf /data/dbbak/${DAYSAGO}