關於mysql備份,程式猿應該知道的
阿新 • • 發佈:2018-11-13
前言
當你在寫程式對資料庫操作時,當有sql疏漏的時候,那就可能會對資料庫進行一個大批量的操作(更改/刪除)。
這時,如果你之前對資料庫沒有進行一個比較完善的備份操作,那就是一場災難。
下面講的就是
如何對mysql資料庫進行一個比較完善的備份操作?
思路
一個小時備份一次資料庫
對於比較重要的系統,資料的重要性不言而喻,一個小時備份一次很有必要。當出現問題時,找到最近的那個節點,然後將資料導回。
實現
1.寫crontab 每小時執行一次備份資料庫的shell指令碼
0 */1 * * * sh /root/bksql.sh >/dev/null 2>&1
2.寫shell指令碼去備份資料庫
#!/bin/bash d=`date +%Y-%m-%d-%H-%M` #時間 mysqldump -v --add-drop-table -u使用者民 -p密碼 資料庫名 | gzip > /root/aaa/aaa.$d.sql.gz #判斷備份操作有沒有出現問題,如出現問題,傳送郵件提醒 if [ $? -ne 0 ] then echo `date` "DB backup failed." | mail -s " DB backup failed" 郵箱 exit 1 fi
3.可以定時將/root/aaa目錄下的sql.gz檔案移動到某個掛載盤中,如果本機器的硬碟出現問題,還有共享盤裡的資料可以使用
每6小時進行一次移動到備份硬碟的操作
10 */6 * * * sh /root/mvbak.sh >/dev/null 2>&1
#!/bin/bash -x if grep -qs /mnt/資料夾名 /proc/mounts; #判斷硬碟是否掛載上 then find /mnt/資料夾名 -name '*.gz' -mtime +30 -exec rm {} \; #將生成時間大於30天的刪除掉 mv /root/aaa/*.gz /mnt/資料夾名 #將/root/aaa/下的所有.gz檔案都移動到掛載盤下 else echo `date` "Backup Mount failed." | mail -s "Backup Mount failed" 郵箱 #掛載失敗,傳送郵件提醒 fi