shell脚本备份mysql数据库(for循环)
#!/bin/bash ? ?
mysql_host="192.168.1.239" ?
mysql_user="root" ?
mysql_passwd="123456" ?
??
#sql備份目錄 ?
root_dir="/backup" ?
back_dir="/backup/databases" ?
data_dir="databases" ?
store_dir="database" ?
if [ ! -d $back_dir ]; then ?
? ? mkdir -p $back_dir ?
fi ?
??
#備份的數(shù)據(jù)庫數(shù)組 ?
db_arr=$(echo "show databases;" | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host) ?
#不需要備份的單例數(shù)據(jù)庫 ?
nodeldb="test1" ?
??
#當(dāng)前日期 ?
date=$(date -d '+0 days' +%Y%m%d) ?
??
#zip打包密碼 ?
zippasswd="passwd" ?
zipname="lczh_"$date".zip" ?
??
#2.進(jìn)入到備份目錄 ?
cd $back_dir ?
??
#3.循環(huán)備份 ?
for dbname in ${db_arr} ?
do ?
? ? if [ $dbname != $nodeldb ]; then ?
? ? ? ? sqlfile=$dbname-$date".sql" ?
? ? ? ? mysqldump -u$mysql_user -p$mysql_passwd -h$mysql_host $dbname >$sqlfile ?
? ? fi ?
done ?
??
#4.tar打包所有的sql文件 ?
tar -zcPpf $root_dir/$store_dir/$zipname --directory / ?$root_dir/$data_dir ?
#打包成功后刪除sql文件 ?
if [ $? = 0 ]; then ?
? ? rm -r $data_dir ?
fi ?
定期清理14天前的備份文件
#!/bin/bash - ??
#mysql文件備份目錄 ?
backup_dir1="/backup/test1/" ?
backup_dir2="/backup/test2/" ?
backdir_arr=($backup_dir1 $backup_dir2) ?
??
#過期文件的時(shí)間 ?
keep_time=14 ?
??
#當(dāng)前所在星期,crontab在奇數(shù)的星期7執(zhí)行 ?
week=$(date +%W) ?
flag=`expr $week % 2` ?
??
#2.清理過期文件,只在奇數(shù)星期7執(zhí)行 ?
if [ $flag -eq 1 ]; then ?
? ? for dir in ${backdir_arr[*]} ?
? ? do ?
? ? ? ? if [ -d $dir ]; then ?
? ? ? ? ? ? #查找14天之外的文件數(shù)據(jù) ?
? ? ? ? ? ? clean_arr=`find $dir -type f -mtime +$keep_time -exec ls {} \;` ?
? ? ? ? ? ? for cleanfile in ${clean_arr} ?
? ? ? ? ? ? do ?
? ? ? ? ? ? ? ? rm $cleanfile ?
? ? ? ? ? ? done ?
? ? ? ? fi ?
? ? done ?
fi ?
crontab配置
0 5 * * 7 ?執(zhí)行清理腳本 ?
轉(zhuǎn)載于:https://blog.51cto.com/2935559/1539876
總結(jié)
以上是生活随笔為你收集整理的shell脚本备份mysql数据库(for循环)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KineticJS教程(3)
- 下一篇: cvCmp和cvCmpS