分享一個MySQL分庫分表備份指令碼(原)

2022-11-24 18:41:56 字數 2064 閱讀 4246

分享一個mysql分庫備份指令碼(原)

開發思路:

2.取資料庫:抓取資料庫名稱,我用的awk和grep配合取資料庫的名稱(如果想按照表備份可以再細化一下)注意要用mysql -e選項 這樣才能做成指令碼

3.系統環境變數:因為用到了函式,所以非系統內建的命令 最好在指令碼里面用 . /etc/profile  把系統當前的環境變數傳過來

4.實現方法:用mysqldump 命令+for 迴圈實現分庫備份 

5.備份檢查:如果備份出來的檔案存在大小不為0 則認定為成功,返回success ,否則failed,如果放在定時任務執行 建議輸出到日誌檔案裡面,方便日後檢視

6.注意定義變數的時候 單引號‘’和雙引號“”的區別,否則會有錯誤

1 #!/bin/bash

2 #define var

3 user="root"

4 pass="1314520"

5 path="/mysql/backup"

6 cmd="mysql -u$ -p$"

7 dump="mysqldump -u$ -p$ -b --events -x --master-data=2"

8 #system function

9 . /etc/init.d/functions

10 . /etc/profile

11 #judge dir

12 function jdir()

17 #dump database

18 function bk()'|grep -v "performance_schema"`

20 do

21 $dump $dbname|gzip >$/$_$(date +%f).sql.gz

22 sleep 1

23 if [ -s $/$_$(date +%f).sql.gz ];then

24 action "dump $dbname success!" /bin/true

25 else

26 action "dump $dbname failed" /bin/false

27 fi

28 done

29 }

30 function main()

34 main

想和大家重點分享的是開發的思路,技術很基礎。

經過測試可以完成,如果有錯誤,歡迎指正。

1 #!/bin/bash

2 #define var

3 user="root"

4 pass="1314520"

5 path="/mysql/backup"

6 cmd="mysql -u$ -p$"

7 dump="mysqldump -u$ -p$ --events -x --master-data=2"

8 #system function

9 . /etc/init.d/functions

10 . /etc/profile

11 #judge dir

12 function jdir()

17 #dump database

18 function bk()'|grep -v "performance_schema"`

20 do

21 for tname in `$cmd -e "show tables from $"|sed "1d"`

22 do

23 $dump $dbname $tname|gzip >$/$_$_$(date +%f).sql.gz

24

25 if [ -e $/$_$_$(date +%f).sql.gz ];then

26 echo "$_$" >>$path/mysql_table.log

27

28 fi

29 done

30 done

31 }

32 function main()

36 main

分享一個MySQL分庫分表備份指令碼(原)

分享一個mysql分庫備份指令碼 原 開發思路 1.路徑 規定備份到什麼位置,把路徑 先判斷是否存在,不存在建立一個目錄 先定義好,我的路徑 mysql backup,每個備份用壓縮提升效率,帶上時間方便整理 2.取資料庫 抓取資料庫名稱,我用的awk和grep配合取資料庫的名稱 如果想按照表備份可...