shell指令碼備份mysql資料庫

2021-08-04 10:26:54 字數 4208 閱讀 9491

獲取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...