MySQL 8.4 發行說明
現在,假設我們在星期三上午 8 點發生災難性的意外退出,需要從備份還原。若要還原,首先我們還原我們擁有的最後一次完整備份 (星期日下午 1 點的備份)。完整備份檔案只是一組 SQL 陳述式,因此還原它非常容易。
$> mysql < backup_sunday_1_PM.sql
此時,資料會還原到星期日下午 1 點的狀態。若要還原自那時起所做的變更,我們必須使用增量備份;也就是說,gbichot2-bin.000007
和 gbichot2-bin.000008
二進位日誌檔。如有必要,從備份的地點提取檔案,然後像這樣處理其內容。
$> mysqlbinlog gbichot2-bin.000007 gbichot2-bin.000008 | mysql
現在我們已將資料還原到星期二下午 1 點的狀態,但仍然遺失從那天到崩潰日期的變更。為了不遺失這些變更,我們需要將 MySQL 伺服器的 MySQL 二進位日誌儲存到安全的位置 (RAID 磁碟、SAN...),與儲存資料檔案的位置不同,這樣這些日誌就不會在損毀的磁碟上。(也就是說,我們可以啟動伺服器並使用 --log-bin
選項,指定與資料目錄所在的實體裝置不同的位置。這樣一來,即使包含目錄的裝置遺失,日誌也是安全的。) 如果我們這樣做了,我們手上會有 gbichot2-bin.000009
檔案 (和任何後續檔案),而且我們可以利用 mysqlbinlog 和 mysql 套用它們,以還原最近的資料變更,直到崩潰的那一刻都沒有遺失。
$> mysqlbinlog gbichot2-bin.000009 ... | mysql
如需關於使用 mysqlbinlog 來處理二進位日誌檔的詳細資訊,請參閱第 9.5 節「時間點 (增量) 還原」。