假如一台mysql伺服器,跑著5個資料庫,在沒有做主從的情況下,需要對這5個庫進行備份,具體要求如下:
1) 每天備份一次,需要備份所有的庫;
2) 把備份資料存放到 /data/backup/ 下;
3) 備份檔案名稱格式示例:database_name-2018-11-11.sql;
4) 需要對1天前的所有sql檔案壓縮,格式為gzip;
5) 本地資料保留1周;
6) 需要把備份的資料同步到遠端備份中心,假如本機可以直接通過rsync命令同步,同步目標位址為rsync: ;
7) 遠端備份資料需要保留1個月。
#!/bin/bash
##備份本地資料庫
##本地保留1周,遠端保留乙個月
mysqldump=
"/usr/local/mysql/bin/mysqldump"
bakuser=
"backup"
passwd=
"34kpmyzuq"
bakdir=
"/data/backup"
remote_dir=
"rsync:"
d1=`
date +%f`
d2=`
date +%d`
#定義日誌
exec
&> /tmp/mysql_bak.log
echo
"mysql backup begin at `
date`"
#對所有資料庫進行遍歷
for db in db1 db2 db3 db4 db5
do$mysqldump -u$bakuser -p$passwd
$db>
$bakdir/$db-$d1.sql
done
#對1天前的所有sql檔案壓縮
find
$bakdir/ -type f -name "*.sql" -mtime +1 |
xargs
gzip
#查詢並刪除一周以前的老檔案
find
$bakdir/ -type f -mtime +7 |
xargs
rm#把當天的備份檔案同步到遠端
for db in db1 db2 db3 db4 db5
dorsync -a $bakdir/$db-$d1.sql $remote_dir/$db-$d2.sql
done
echo
"mysql backup end at `
date
`"
指令碼中,
shell指令碼中,可使用反引號來引用一條命令的結果,然後將其儲存到變數中
&> 指定正確輸出和錯誤輸出到 /tmp/mysql_bak.log
exec 命令,會接管該shell指令碼中後續所有的命令,可以把exec理解為「乙個盒子」,將exec那行以下所有的命令都拉到「這個盒子」裡面執行。exec &> 1.txt 可以理解為 「這個盒子」所有操作的輸出都寫入到 1.txt 中
MySQL資料庫備份 1
在資料庫表丟失或損壞的情況下,備份你的資料庫是很重要的。如果發生系統崩潰,你肯定想能夠將你的表盡可能丟失最少的資料恢復到崩潰發生時的狀態。有時,正是 mysql管理員造成破壞。管理員已經知道表以破壞,用諸如vi或emacs等編輯器試圖直接編輯它們,這對錶絕對不是件好事!備份資料庫兩個主要方法是用 m...
MySQL資料庫備份
晏子 在資料庫表丟失或損壞的情況下,備份你的資料庫是很重要的。如果發生系統崩潰,你肯定想能夠將你的表盡可能丟失最少的資料恢復到崩潰發生時的狀態。有時,正是mysql管理員造成破壞。管理員已經知道表以破壞,用諸如vi或emacs等編輯器試圖直接編輯它們,這對錶絕對不是件好事!備份資料庫兩個主要方法是用...
My SQL資料庫備份
因為mysql表作為檔案儲存,做乙個備份是容易的。為了得到乙個一致的備份,在相關的表上做乙個lock tables。你只需乙個讀鎖定 當你在資料庫目錄中做檔案的乙個拷貝時,這允許其他執行緒繼續查詢該錶。如果你想要做乙個sql級的備份,你可以select into outfile。備份乙個資料庫的另乙...