MySQL 9.0 發行說明
現在,假設我們在星期三上午 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 節,「時間點(增量)復原」。