歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> 分享一個MySQL分庫備份腳本(原),mysql分庫備份腳本

分享一個MySQL分庫備份腳本(原),mysql分庫備份腳本

日期:2017/3/3 17:59:16   编辑:學習Linux

分享一個MySQL分庫備份腳本(原),mysql分庫備份腳本

分享一個MySQL分庫備份腳本(原),mysql分庫備份腳本


分享一個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${user} -p${pass}"
 7 dump="mysqldump -u${user} -p${pass} -B --events -x --master-data=2"
 8 #system function
 9 . /etc/init.d/functions
10 . /etc/profile
11 #judge dir
12 function jdir(){
13 if [ ! -e $path ];then
14   mkdir $path -p
15 fi
16 }
17 #dump database
18 function bk(){
19 for dbname in `$cmd -e 'show databases;'|awk 'NR>1{print $0}'|grep -v "performance_schema"`
20 do
21   $dump $dbname|gzip >${path}/${dbname}_$(date +%F).sql.gz
22   sleep 1
23   if [ -s ${path}/${dbname}_$(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(){ 31 jdir 32 bk 33 } 34 main

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

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

http://xxxxxx/Linuxjc/1182533.html TechArticle

Copyright © Linux教程網 All Rights Reserved