一、 創(chuàng)建 dbbackup.sh
腳本文件
- 在新建
/usr/mybin
目錄媚朦,并cd
切換到目錄,編寫dbbackup.sh
腳本文件
#!/bin/bash
# 數(shù)據(jù)庫基本信息
DB_HOST=192.168.2.79
DB_DATABASE=ln-lszj
DB_USER=root
DB_PWD=123456789
DB_PORT=3307
#備份目錄
BAKDIR=/data/backup/db
#獲取當(dāng)前時間
DATETIME=$(date +%Y%m%d%H%M%S)
#日志
LOG_PATH=${BAKDIR}/logs
LOG_NAME=$(date +%Y%m)
FILE_NAME=${DB_DATABASE}-${DATETIME}
# 1、創(chuàng)建備份目錄脉顿,如果不存在卜朗,則創(chuàng)建
if [ ! -d "${BAKDIR}" ]
then
mkdir -p "${BAKDIR}"
fi
# 創(chuàng)建備份日志目錄拔第,如果不存在,則創(chuàng)建
if [ ! -d "${LOG_PATH}" ]
then
mkdir -p "${LOG_PATH}"
fi
# 查看mysql 是否正常運行
mysql_ps=`ps -ef |grep mysql |wc -l`
if [ $mysql_ps == 0 ]
then
echo "當(dāng)前服務(wù)器沒有安裝Mysql客戶端或服務(wù)端场钉!" >> ${LOG_PATH}/${LOG_NAME}.log
exit
fi
# 2蚊俺、備份數(shù)據(jù)庫,
echo "開始備份...$DATETIME" >> ${LOG_PATH}/${LOG_NAME}.log
mysqldump -h${DB_HOST} -u${DB_USER} -p${DB_PWD} -P${DB_PORT} --databases ${DB_DATABASE} > ${BAKDIR}/$FILE_NAME.sql
echo "備份完成...$DATETIME" >> ${LOG_PATH}/${LOG_NAME}.log
#開始壓縮
cd $BAKDIR
tar -zcvf ${FILE_NAME}.tar.gz $FILE_NAME.sql
#更新備份日志
echo "$DATETIME 壓縮原文件 create ${BAKDIR}/$FILE_NAME.tar.gz" >> ${LOG_PATH}/${LOG_NAME}.log
#刪除源文件
rm -rf $BAKDIR/$FILE_NAME.sql
echo "$DATETIME 壓縮后刪除原文件 delete ${BAKDIR}/$FILE_NAME.sql" >> ${LOG_PATH}/${LOG_NAME}.log
# 保留最新的10份文件
ls -t ${BAKDIR}/*.tar.gz |awk 'NR>10' |xargs rm -rf
#分割線
echo "======================================================================" >> ${LOG_PATH}/${LOG_NAME}.log
- 對腳本進(jìn)行授權(quán)
chmod 755 dbbackup.sh
二. 編寫 cron
定時任務(wù)
- 定時任務(wù)語句
# 每天凌晨1點逛万,執(zhí)行腳本泳猬,對數(shù)據(jù)庫進(jìn)行備份。
0 1 * * * /usr/mybin/dbbackup.sh
- 控制臺輸入下面命令
crontab -e
- 將定時任務(wù)語句粘貼到最后面,保存并退出
wq
得封。
注意:如果定時任務(wù)不生效埋心,執(zhí)行下面命令
重啟cron服務(wù),以使新任務(wù)立即生效呛每,可以使用以下命令來重啟cron服務(wù):
在Debian或Ubuntu系統(tǒng)中:sudo service cron restart
在CentOS或RHEL系統(tǒng)中:sudo systemctl restart crond