首頁 >資料庫 >mysql教程 >關於linux如何實現mysql資料庫每天自動備份與定時備份的範例詳解

關於linux如何實現mysql資料庫每天自動備份與定時備份的範例詳解

黄舟
黄舟原創
2017-09-05 13:22:481437瀏覽

備份是災難復原的基礎,是指為防止系統出現操作失誤或系統故障導致資料遺失,而將全部或部分資料集合從應用主機的硬碟或陣列複製到其它的儲存媒體的過程。這篇文章主要介紹了linux實作mysql資料庫每天自動備份定時備份,需要的朋友可以參考下

# 概述

備份是容災的基礎,是指為防止系統出現操作失誤或系統故障導致資料遺失,而將全部或部分資料集合從應用主機的硬碟或陣列複製到其它的儲存媒體的過程。而對於某些網站、系統來說,資料庫就是一切,所以做好資料庫的備份是至關重要的!

備份是什麼?

關於linux如何實現mysql資料庫每天自動備份與定時備份的範例詳解

為什麼要備份

關於linux如何實現mysql資料庫每天自動備份與定時備份的範例詳解

災難復原方案建置

關於linux如何實現mysql資料庫每天自動備份與定時備份的範例詳解

#儲存媒體

光碟

磁帶

硬碟

磁碟陣列

#DAS:直接附加儲存空間

##NAS:網路附加儲存

SAN:儲存區域網路

雲端儲存

這裡主要以本機磁碟為儲存媒體講一下排程任務的新增使用,基本的備份腳本,其它儲存媒體只是媒體的訪問方式可能不大一樣。

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 backup
cd backup

3、建立備份Shell腳本:

注意把以下指令中的DatabaseName換到實際的資料庫名稱;

當然,你也可以使用其實的命名規則!


vi bkDatabaseName.sh

輸入/貼上以下內容:


#

#!/bin/bash
mysqldump -uusername -ppassword DatabaseName > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql

對備份進行壓縮:


#!/bin/bash
mysqldump -uusername -ppassword DatabaseName | gzip > /home/backup/DatabaseName_$(date +%Y%m%d_%H%M%S).sql.gz

注意:

把username 替換為實際的使用者名稱;

把password 替換為實際的密碼;

把DatabaseName 替換為實際的資料庫名稱;

4、新增可執行權限:


chmod u+x bkDatabaseName.sh

新增可執行權限之後先執行一下,看看腳本有沒有錯誤,能不能正常使用;

./bkDatabaseName.sh

5、新增排程任務

偵測或安裝crontab

確認crontab是否安裝:

#執行crontab 指令如果報command not found,就表示沒有安裝


#

# crontab
-bash: crontab: command not found

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

CentOS下使用yum指令安裝排程任務程式crontab

##使用rpm指令從CentOS系統磁碟安裝計劃任務程序crontab

新增計劃任務

執行指令:

crontab -e

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

輸入以下內容並儲存:#​​

##
*/1 * * * * /home/backup/bkDatabaseName.sh

具體是什麼意思呢?

意思是每一分鐘執行一次shell腳本「/home/backup/bkDatabaseName.sh」。

6、測試任務是否執行

很簡單,我們就執行幾次「ls」指令,看看一分鐘後檔案有沒有被創建就可以了!

如果任務執行失敗了,可以透過下列指令查看任務日誌:

# tail -f /var/log/cron

輸出類似如下:

#
Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2503]: starting 0anacron
Sep 30 14:01:01 bogon run-parts(/etc/cron.hourly)[2512]: finished 0anacron
Sep 30 15:01:01 bogon CROND[3092]: (root) CMD (run-parts /etc/cron.hourly)
Sep 30 15:01:01 bogon run-parts(/etc/cron.hourly)[3092]: starting 0anacron
Sep 30 15:01:02 bogon run-parts(/etc/cron.hourly)[3101]: finished 0anacron
Sep 30 15:50:44 bogon crontab[3598]: (root) BEGIN EDIT (root)
Sep 30 16:01:01 bogon CROND[3705]: (root) CMD (run-parts /etc/cron.hourly)
Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3705]: starting 0anacron
Sep 30 16:01:01 bogon run-parts(/etc/cron.hourly)[3714]: finished 0anacron
Sep 30 16:15:29 bogon crontab[3598]: (root) END EDIT (root)


總結

#

以上是關於linux如何實現mysql資料庫每天自動備份與定時備份的範例詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn