獲取mysql伺服器所有資料庫名稱,過濾掉不需要備份的資料庫
通過mysqldump來for迴圈匯出所有的資料庫的sql檔案
用zip加密壓縮所有的sql檔案
定期進行資料清理工作
#!/bin/bash
02.
03.#1.資料庫資訊定義
04.mysql_host="192.168.1.1"
05.mysql_user="root"
06.mysql_passwd="root"
07.
08.#sql備份目錄
09.root_dir="/backup"
10.back_dir="/backup/databases"
11.data_dir="databases"
12.store_dir="database"
13.if [ ! -d $back_dir ]; then
14. mkdir -p $back_dir
15.fi
16.
17.#備份的資料庫陣列
18.db_arr=$(echo "show databases;" | mysql -u$mysql_user -p$mysql_passwd -h$mysql_host)
19.#不需要備份的單例資料庫
20.nodeldb="test1"
21.
22.#當前日期
23.date=$(date -d '+0 days' +%y%m%d)
24.
25.#zip打包密碼
26.zippasswd="passwd"
27.zipname="lczh_"$date".zip"
28.
29.
30.#2.進入到備份目錄
31.cd $back_dir
32.
33.
34.#3.迴圈備份
35.for dbname in $
36.do
37. if [ $dbname != $nodeldb ]; then
38. sqlfile=$dbname-$date".sql"
39. mysqldump -u$mysql_user -p$mysql_passwd -h$mysql_host $dbname >$sqlfile
40. fi
41.done
42.
43.
44.#4.tar打包所有的sql檔案
45.tar -zcppf $root_dir/$store_dir/$zipname --directory / $root_dir/$data_dir
46.#打包成功後刪除sql檔案
47.if [ $? = 0 ]; then
48. rm -r $data_dir
49.fi
作用定期清理14天前的備份檔案
#!/bin/bash -
02.
03.#1.引數配置
04.
05.#mysql檔案備份目錄
06.backup_dir1="/backup/test1/"
07.backup_dir2="/backup/test2/"
08.backdir_arr=($backup_dir1 $backup_dir2)
09.
10.#過期檔案的時間
11.keep_time=14
12.
13.#當前所在星期,crontab在奇數的星期7執行
14.week=$(date +%w)
15.flag=`expr $week % 2`
16.
17.
18.
19.#2.清理過期檔案,只在奇數星期7執行
20.if [ $flag -eq 1 ]; then
21. for dir in $
22. do
23. if [ -d $dir ]; then
24. #查詢14天之外的檔案資料
25. clean_arr=`find $dir -type f -mtime +$keep_time -exec ls {} \;`
26. for cleanfile in $
27. do
28. rm $cleanfile
29. done
30. fi
31. done
32.fi
crontab配置
0 5 * * 7 執行清理指令碼
工作示例1(備份壓縮):
time=`date +%y%m%d%h`
mysql_port=3306
logical_backup_dir=/data/mysqldate_back
cd $logical_backup_dir
function backup_mysql _187_$time.sql
tar zcvf $_$time.sql.tar.gz $_$time.sql
rm $_$time.sql -f
#find $logical_backup_dir -ctime +30 -exec rm -fr {} \;
find /data/mysqldate_back/ -ctime +15 -exec rm -fr {} \;
done
}backup_mysql qiaomai qiaomai_route
mysqldump -uerp -p"erp12345678." -h60.46.123.112 -p3759 b2b_erp >$logical_backup_dir/b2b_erp_$time.sql
tar zcvf b2b_erp_$time.sql.tar.gz b2b_erp_$time.sql
rm -f b2b_erp_$time.sql
工作示例2(備份不壓縮):
arr=$1
erp=/data/web_bak/mysql_erp
route=/data/web_bak/mysql_route
dbname_erp=b2b_erp
dbname_route=qiaomai_route
erp_bak=$route/$-v$.sql
route_bak=$erp/$-v$.sql
echo "backup dababaes(b2b-erp and qiaomai-route)"
if [ ! -f $route_bak]; then
cd $erp
/usr/bin/mysqldump -uroot -p"root12345678." $dbname_route > $route/$-v$.sql
#tar zcvf $-v$.sql.tar.gz $-v$.sql
#rm $-v$.sql -f
#find /data/mysqldate_back/ -ctime +15 -exec rm -fr {} \; -ctime -n +n #按檔案建立時間來查詢檔案,-n指n天以內,+n指n天以前
else
echo $"-v"$".sql already backup"
fiif [ ! -f $route_bak]; then
cd $route
mysqldump -uerp -p"erp12300." -h20.62.143.172 -p3959 $ >$erp/$-v$.sql
#tar zcvf $-v$.sql.tar.gz $-v$.sql
#rm -f $-v$.sql
else
echo $"-v"$".sql already backup"
fi
mysql備份shell指令碼
bin bash mysql server login info muser root mpass root mhost localhost mysql which mysql mysqldump which mysqldump dbname test bak backup mysql gzip w...
mysql備份shell指令碼
bin bash 要備份的資料庫名,多個資料庫用空格分開 databases test 備份檔案要儲存的目錄 basepath usr local mysqlbak if d basepath then mkdir p basepath fi 迴圈databases陣列 for db in docd...
Shell備份MySQL指令碼
bin bash backup database mysql備份指令碼,自動化備份,定時任務備份,linux centos redhat 正式環境 全量備份 單庫備份 單錶備份 by lumia98 vip.qq.com 適用於生成環境備份指令碼 備份開始時間 echo start date y m...