MySQL 備份設定與還原

技術文章, 系統設定

資料備份與安全一直是我們必須要去關注的問題,之前我們也曾經因為主機掛掉導致資料流失,在這邊來教幾個有效備份資料庫的方法。

 

在這邊我們以 Ubuntu 作業系統為例:

 

1. MySQLDUMP & Corntab

 

從 MySQL 匯出有幾個簡單的方式,例如透過〝phpMyAdmin〞或 〝Adminer〞來輸出,不過這兩個也有缺點,一旦資料庫檔案太大,就不容易進行匯入,另一方面,也偶爾會有匯入發生錯誤的情形發生。

 

所以在這邊,我們建議使用使用 mysqldump 來進行資料庫的匯出。

 

首先,我們可以一個簡單的指令 mysqldump 來匯出 SQL 檔。

 

指令規則如下:

 

我們假設要輸出 guestbook 這個資料表為例,而我們的資料庫密碼為〝123456〞,而備份的時間是 2019/09/20 08:20。

 

以上例,我們會輸出 SQL 檔到 ~/backup_sql/guestbook_20190920_0820.sql 。

註:我們可以透過 date +\%Y\%m\%d_\%H\%M 來用變數產生動態檔名。

 

2. Corntab – 加入排程自動備份

 

當我們成功匯出 SQL 檔之後,我們應該會設想希望自動進行匯出 SQL 檔來進行備份,所以我們來繼續說說如何透過 Ctontab 的排程設定來完成備份。

 

首先,我們先進入排程設定:

 

進到排程之後,我們把上述的指令,加入到我們的排程當中。 ( 以每日 00:00 分進行備份為例 )

 

這樣一來,我們就完成了每日備份。

 

 

3. 資料庫還原

 

當我們每日都有資料庫備份的時候,一旦遇到資料損毀或是需要回溯追查資料的時候,我們就需要進行資料還原,還原的方式也非常的簡單,指令如下所示:

 

 

一樣我們透過範例來實作,我們將上述輸出的 ~/backup_sql/guestbook_20190920_0820.sql 還原到我們的資料表檔中。

輸入完成指令之後,系統會需要你輸入〝資料庫密碼〞,輸入正確之後,將就會完成還原的動作。

透過這一行指令,就能完成我們的資料庫還原。

 

延伸:

 

我們之後再來說說:

 

  1. 備份策略 ( 避免無限資料寵大塞爆主機空間 )
    • 當你每日備份之後,有可能會造成資料備份檔龐大,所以應該要用用怎樣的策略來進行留存策略。
  2. 異地備份:
    • 當你有另外一台主機,能不能直接備份到「另一台主機」,來確保程式的執行主機不會被塞爆而影響到營運主機的運行。

 

 

Gimmy
作者: Gimmy
積極的人在每一次憂患中都看到一個機會 而消極的人則在每個機會都看到某種憂患

發表迴響