linux 下面通過 cron 定時備份mysql
yum install vixie-cron
yum install crontabs
service crond start 開機自啟
-
cat /etc/crontab 查看
service crond start //啟動服務
service crond stop //關閉服務
service crond restart //重啟服務
service crond reload //重新載入配置crontab -u //設定特定用戶的定時服務
crontab -l //列出當前用戶定時服務內容
crontab -r //刪除當前用戶的定時服務
crontab -e //編輯當前用戶的定時服務
在設定編輯之前都建議列出服務查看一下:crontab -l crontab -e 進入 設置腳本 * * * * /opt/dump_mysql.sh 語法
mysql 簡單備份腳本
在執(zhí)行shell腳本的時候彼念,會出現(xiàn)‘$’\r’: 未找到命令’錯誤蒿赢。
原因分析:在windows下編寫的腳本,上傳到服務器网棍,存在多余的空格或換行,導致報錯
-
解決辦法
手動刪除多余空格或換行
-
解決辦法:
安裝dos2unix
yum install dos2unix
使用dos2unix對腳本轉換
dos2unix xxx.sh
#用戶名
username=root
#密碼
password=123456
#將要備份的數(shù)據(jù)庫
database_name=mail
#保存?zhèn)浞菸募疃鄠€數(shù)
count=30
#備份保存路徑
backup_path=/app/mysql_backup
#日期
date_time=`date +%Y-%m-%d-%H-%M`
#如果文件夾不存在則創(chuàng)建
if [ ! -d $backup_path ];
then
mkdir -p $backup_path;
fi
#開始備份
mysqldump -u $username -p$password $database_name > $backup_path/$database_name-$date_time.sql
#開始壓縮
cd $backup_path
tar -zcvf $database_name-$date_time.tar.gz $database_name-$date_time.sql
#刪除源文件
rm -rf $backup_path/$database_name-$date_time.sql
#更新備份日志
echo "create $backup_path/$database_name-$date_time.tar.gz" >> $backup_path/dump.log
#找出需要刪除的備份
delfile=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | head -1`
#判斷現(xiàn)在的備份數(shù)量是否大于閾值
number=`ls -l -crt $backup_path/*.tar.gz | awk '{print $9 }' | wc -l`
if [ $number -gt $count ]
then
#刪除最早生成的備份同衣,只保留count數(shù)量的備份
rm $delfile
#更新刪除文件日志
echo "delete $delfile" >> $backup_path/dump.log
fi