1. 程式人生 > >關於mysql備份,程式猿應該知道的

關於mysql備份,程式猿應該知道的

前言

當你在寫程式對資料庫操作時,當有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