MySQL 8.4 發行說明
本節討論執行備份的程序,讓您能夠在發生數種類型的當機後還原資料
作業系統當機
電源故障
檔案系統當機
硬體問題(硬碟、主機板等等)
範例指令不包含 --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 資料,這表示必須已經建立備份。為了確保情況如此,請設計並實施備份原則。