5.9.2.示例用備份與恢復策略
5.9.2. 示例用備份與恢復策略
- 5.9.2.1. 備份策略
- 5.9.2.2. 為恢復進行備份
- 5.9.2.3. 備份策略摘要
本節討論進行備份的程序,在出現崩潰后,可以恢復數據:
· 操作系統崩潰
· 電源故障
· 文件系統崩潰
· 硬件問題(硬盤、母板等等)
該命令不包括mysqldump和mysql程序的--user和—password等選項。應包括必要的選項讓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數據,這說明我們必須先做好備份。要想確保,應及時返回并設計備份策略。