今天寫了一個sh腳本備份資料庫,使用linux 定時任務每天執行,
sh腳本:
#!/bin/bash
#資料庫用戶名
DB_USER='xxxx'
#資料庫密碼
DB_PASSWD='xxxx'
#資料庫名,可以定義多個資料庫,中間以空格隔開,如:test test1 test2
DB_NAME=(xxxxxx)
#資料庫主機地址
HOST=xxxxx
#資料庫埠號
PORT=xxxx
#備份時間
CURRENT_BACKUP_TIME=`date +%Y%m%d%H%M%S`
#日志備份路徑
LOG_PATH='xxxxx/xxxx/xxxxx'
#資料備份路徑
DATA_PATH='xxxxx/xxxx/xxxxx'
#日志記錄頭部
echo "備份時間為$CURRENT_BACKUP_TIME,備份資料庫 $DB_NAME 開始" >> $LOG_PATH/xxxxxxx.log
#正式備份資料庫$CURRENT_BACKUP_TIME
for DB in ${DB_NAME[@]};do
source=`mysqldump -u$DB_USER -h$HOST -P$PORT -p$DB_PASSWD $DB > $DATA_PATH/$DB-$CURRENT_BACKUP_TIME.sql` 2>> $LOG_PATH/xxxxxxxx.log;
#備份成功以下操作
if [ "$?" == 0 ];then
cd $DATA_PATH
#為節約硬碟空間,將資料庫壓縮
tar zcf $DB-$CURRENT_BACKUP_TIME.tar.gz $DB-$CURRENT_BACKUP_TIME.sql > /dev/null
#洗掉原始檔案,只留壓縮后檔案
rm -f $DATA_PATH/$DB-$CURRENT_BACKUP_TIME.sql
echo "資料庫 $DB 備份成功!!" >> $LOG_PATH/xxxxx.log
#洗掉三十天之前的備份
find $DATA_PATH -name $DB-*.tar.gz -type f -mtime +10 -exec rm -rf {} \; > /dev/null 2>&1 echo "資料庫 $DB 10天之前的備份資料被洗掉!!" >> $LOG_PATH/xxxxx.log
else
#備份失敗則進行以下操作
echo "資料庫 $DB 備份失敗!!" >> $LOG_PATH/xxxxxx.log
fi
done
定時任務:
/var/spool/cron/ 目錄下創建


30 2 * * * /mydata/datazhgd/xxxx.sh //這代表每天凌晨兩點半執行,
小白注意啦:
1.xxxx的地方自己替換掉,
2.記得sh腳本給執行權限chmod x abc.sh //abc替換為sh腳本名稱
3.記得重啟定時任務service crond restart // centos6 和centos7 centos8 是不同的
4.重啟定時任務systemctl reload crond.service //centos7 centos8
5.如果是在windows上面寫的sh腳本,需要把檔案格式轉為unix格式
具體方法:超級程式員!
剩下需要注意的我去網上找了找大家看看就行,
注意點源地址:
https://www.cnblogs.com/fatfatdachao/p/9229891.html
重啟Linux定時任務-crond
可以分為兩種情況:
1.在系統中有service這個命令時:
這個命令在red hat當中常用,有的linux發行版本中沒有這個命令.
$ service crond start //啟動服務
$ service crond stop //關閉服務
$ service crond restart //重啟服務
2.linux發行版本沒有service這個命令時:
/etc/init.d/cron stop
/etc/init.d/cron start
注意點源地址:
https://www.cnblogs.com/413xiaol/p/6821740.html
這個寫的挺詳細的
1.撰寫sh檔案
創建:vi test.sh
寫入:date >> /xiaol/data.txt
2.默認創建的這個sh問件是沒有執行權限的,修改權限
chmod 777 test.sh
3.設定crontab定時任務
打開定時任務組態檔:crontab -e
定時呼叫test.sh:* * * * * /sambashare/test.sh
4.保存退出
5.如果有錯,Linux會在執行的時候發送一份郵件給你
cat /var/spool/mail/root
備注:
定時任務需要crond服務的支持
1.啟動方法 service crond restart
2.該服務默認是開機啟動的
取消定時任務
1.全部取消 crontab -r
2.取消某個 crontab -e 組態檔,洗掉要取消的哪一行配置
查看目前都有那些定時任務
crontab -l
第一個* 一小時當中的第幾分鐘 0-59
第二個* 一天當中的第幾小時 0-23
第三個* 一個月當中的第幾天 1-31
第四個* 一年當中的第幾月 1-12
第五個* 一周當中的星期幾 0-7(0和7都代表周日)
* 代表任何時間,比如第一個 * 就代表一小時中的每分鐘都執行
, 代表不連續的時間,比如 0 8,12,16 * * * 代表每天8,12,16點0分執行
- 代表連續的時間范圍,比如0 5 * * 1-6 代表在周一到周六凌晨5點0分執行
*/n 代表每個多久執行一次,比如*/10 * * * *代表每隔10分鐘執行一次
例子:
45 22 * * *
在22點45分執行
0 17 * * 1
在每周1的17點0分執行
0 5 1,15 * *
在每月1號和15號的凌晨5點0分執行
40 4 * * 1-5
在每周一到周五的凌晨4點40分執行
*/10 4 * * *
在每天的凌晨4點,每隔10分鐘執行一次
0 0 1,15 * 1
每月1號和15號,每周1的0點0分都會執行
注意:星期幾和幾號最好不要同時出現,他們的意義都是天,容易混淆
撰寫不易,整理不易,點個贊唄,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/281358.html
標籤:其他
