1. 程式人生 > >Linux下mysql資料庫每天自動備份定時備份

Linux下mysql資料庫每天自動備份定時備份

1、檢視磁碟空間情況:

既然是定時備份,就要選擇一個空間充足的磁碟空間,避免出現因空間不足導致備份失敗,資料丟失的惡果! 

儲存到當前磁碟這是最簡單,卻是最不推薦的;伺服器有多塊硬碟,最好是把備份存放到另一塊硬碟上;有條件就選擇更好更安全的儲存介質;

# df -h
Filesystem                    Size  Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root   50G   46G  1.6G  97% /
tmpfs                         1.9G   92K  1.9G   1% /dev/shm
/dev/sda1                     485M   39M  421M   9% /boot
/dev/mapper/VolGroup-lv_home  534G  3.6G  503G   1% /home

2、建立備份目錄:

上面我們使用命令看出/home下空間比較充足,所以可以考慮在/home儲存備份檔案;

cd /home
mkdir mysql_backup
cd mysql_backup

3、建立備份Shell指令碼:

vim autoBackup.sh

輸入/貼上以下內容:

#!/bin/bash
#backup mysql

#備份存放路徑
BACKUP_DIR=/home/mysql_backup

#獲取當前系統時間
DATE=`date +%Y%m%d`

#資料庫賬號
DB_USER=backup

#資料庫密碼
DB_PASSWD=aaa111

#備份保留天數
DAYS=15

#需要備份的資料庫,使用空格分隔
DATABASES="db1 db2"

for i in $DATABASES;
  do
    #備份資料庫,並壓縮資料檔案
    mysqldump -u$DB_USER -p$DB_PASSWD --set-gtid-purged=OFF ${i} | gzip > $BACKUP_DIR/${i}_$DATE.sql.gz;
    #保留DAYS天數的資料備份
    find $BACKUP_DIR/ -mtime +$DAYS -delete;
  done

exit

注意資料庫使用者名稱,密碼和資料庫名替換為實際資料庫;

如果資料庫開啟GTID模式,需要匯出時新增--set-gtid-purged=OFF;

4、新增可執行許可權:

chmod u+x autoBackup.sh

新增可執行許可權之後先執行一下,看看指令碼有沒有錯誤,能不能正常使用;

./autoBackup.sh

5、新增計劃任務

檢測或安裝 crontab

確認crontab是否安裝: 

執行 crontab 命令如果報 command not found,就表明沒有安裝

# crontab
-bash: crontab: command not found

如時沒有安裝 crontab,需要先安裝它,具體步驟請參考:

新增計劃任務

執行命令:

crontab -e
這時就像使用vi編輯器一樣,可以對計劃任務進行編輯。 

輸入以下內容並儲存:

00 03 * * * /home/mysql_backup/autoBackup.sh
具體是什麼意思呢? 

意思是每天凌晨3點鐘執行一次shell指令碼“/home/mysql_backup/autoBackup.sh”。