MySQL 9.0 版本說明
本節討論執行備份的程序,使您能夠在發生數種類型的崩潰後復原資料
作業系統崩潰
電源故障
檔案系統崩潰
硬體問題(硬碟、主機板等等)
範例指令不包括 --user
和 --password
等選項,用於 mysqldump 和 mysql 客戶端程式。您應該根據需要包含這些選項,以使客戶端程式能夠連接到 MySQL 伺服器。
假設資料儲存在 InnoDB
儲存引擎中,該引擎支援交易和自動崩潰復原。還假設 MySQL 伺服器在崩潰時處於負載狀態。如果不是,則永遠不需要復原。
對於作業系統崩潰或電源故障的情況,我們可以假設 MySQL 的磁碟資料在重新啟動後可用。InnoDB
資料檔案可能由於崩潰而不包含一致的資料,但 InnoDB
會讀取其日誌,並在其中找到尚未刷新到資料檔案的待提交和未提交交易的清單。InnoDB
自動回滾那些未提交的交易,並將那些已提交的交易刷新到其資料檔案。有關此復原過程的資訊會透過 MySQL 錯誤日誌傳達給使用者。以下是一個範例日誌摘錄
InnoDB: Database was not shut down normally.
InnoDB: Starting recovery from log files...
InnoDB: Starting log scan based on checkpoint at
InnoDB: log sequence number 0 13674004
InnoDB: Doing recovery: scanned up to log sequence number 0 13739520
InnoDB: Doing recovery: scanned up to log sequence number 0 13805056
InnoDB: Doing recovery: scanned up to log sequence number 0 13870592
InnoDB: Doing recovery: scanned up to log sequence number 0 13936128
...
InnoDB: Doing recovery: scanned up to log sequence number 0 20555264
InnoDB: Doing recovery: scanned up to log sequence number 0 20620800
InnoDB: Doing recovery: scanned up to log sequence number 0 20664692
InnoDB: 1 uncommitted transaction(s) which must be rolled back
InnoDB: Starting rollback of uncommitted transactions
InnoDB: Rolling back trx no 16745
InnoDB: Rolling back of trx no 16745 completed
InnoDB: Rollback of uncommitted transactions completed
InnoDB: Starting an apply batch of log records to the database...
InnoDB: Apply batch completed
InnoDB: Started
mysqld: ready for connections
對於檔案系統崩潰或硬體問題的情況,我們可以假設 MySQL 磁碟資料在重新啟動後不可用。這表示 MySQL 無法成功啟動,因為某些磁碟資料區塊不再可讀。在這種情況下,有必要重新格式化磁碟、安裝新的磁碟或以其他方式更正根本問題。然後,有必要從備份中復原我們的 MySQL 資料,這表示必須已經建立備份。為了確保這種情況,請設計並實施備份原則。