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

2021-07-29 22:30:09 字數 2319 閱讀 7088

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

開發思路:

1.路徑:規定備份到什麼位置,把路徑(先判斷是否存在,不存在建立乙個目錄)先定義好,我的路徑:/mysql/backup,每個備份用壓縮提公升效率,帶上時間方便整理

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

12function

jdir()

17#dump database

18function

bk()

'|grep -v "

performance_schema"`

20do

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

22sleep123

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

24 action "

dump $dbname success!

" /bin/true

25else

26 action "

dump $dbname failed

" /bin/false

27fi

28done29}

30function

main()

34 main

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

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

ps 附上分表備份的指令碼供參考

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

12function

jdir()

17#dump database

18function

bk()

'|grep -v "

performance_schema"`

20do

21for tname in `$cmd -e "

show tables from $

"|sed"1d

"`22do

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

2425

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

26echo

"$_$

" >>$path/mysql_table.log

2728

fi29

done

30done31}

32function

main()

36 main

mysql分庫分表備份 mysql分庫分表備份

一 單獨備份資料庫 mysqldump uroot poldboy oldboy opt oldboy.sql 最簡單的備份 1 mysql基於myisam引擎 mysqldump uroot poldboy b x f oldboy gzip opt oldboy.sql.gz 2 5.5以後預設...

mysql分庫備份 MySQL分庫備份與分表備份

mysql分庫備份與分表備份 1 分庫備份 要求 將mysql資料庫中的使用者資料庫備份,備份的資料庫檔案以時間命名 指令碼內容如下 root db01 scripts vim backup database.sh bin bash mysql user root mysql pass 123456...

mysql分表分庫實現 MySql分表分庫思路

一.資料庫瓶頸 1.1io瓶頸 第一種 磁碟讀io瓶頸,熱點資料太多,資料庫快取放不下,每次查詢時會產生大量的io 分庫和垂直分表 第二種 網路io瓶頸,請求的資料太多,網路頻寬不夠 分庫 1.2cpu瓶頸 第一種 sql問題,如sql中包含join,group by,order by,非索引字段條...