- LAMP網站開發黃金組合Linux+Apache+MySQL+PHP
- 楊明華等編著
- 845字
- 2018-12-29 19:23:42
6.4 恢復數據庫
上一節介紹了如何備份數據庫,在數據庫中的數據遭到破壞,例如,如果服務器由于斷電而突然停機造成數據丟失等,這時需要使用恢復技術來恢復數據。
恢復數據庫的過程使用兩個信息源:備份文件和更新日志。其中,備份文件將表恢復到進行該備份時的狀態。另外,在備份和故障發生這段時間中,表通常已經被修改。更新日志包含了用來完成這些修改的命令。可以通過將更新日志輸入mysql的方法來重復這些查詢命令,徹底恢復數據。
6.4.1 恢復整個數據庫
首先來看如何恢復整個數據庫,步驟如下。
(1)將原數據庫目錄的內容拷貝到其他的地方。
保存遭到破壞后的數據,可以用來進行數據破壞的原因分析。
(2)用最新的備份文件重新加載數據庫:
● 如果使用由mysqldump備份的文件,則需要將它們作為mysql的輸入;
● 如果使用從數據庫中直接拷貝的文件,則將它們直接拷貝回到該數據庫目錄中。在這種情況下,應該在拷貝這些文件之前關閉服務器,在拷貝結束后再重新啟動。
(3)用更新日志重做在進行數據備份后又修改了的數據。
對于所有可用的更新日志,可使用它作為mysql的輸入。指定--one-database選項,使mysql只對想要恢復的數據庫執行查詢命令。
例如,如果自備份以來所產生的日志命名為update.001、update.002,等等,可以重新運行它們中的命令:
% mysql --one-database db_name<update.001 % mysql --one-database db_name<update.002
如果正在運行恢復,應確保先從更新日志中刪除引起數據丟失的操作語句:DROP DATABASE、DROP TABLE或DELETE等。
★ 注意 ★
如果要恢復的數據庫是含有授權表的MySQL數據庫,則需要使用--skip-grant-tables選項啟動服務器。否則,服務器將提示無法找到授權表。在恢復表之后,執行如下命令:
% mysqladmin flush-privileges
來告訴服務器加載授權表,并用它們啟動。
6.4.2 恢復單個的表
相對于恢復整個數據庫來說,恢復單個表更加困難。如果有通過mysqldump生成的備份文件,并且它恰好包含想要恢復的表數據,則需抽取相關的行并用它們作為mysql的輸入,這需要了解SQL語句,實際上也不是特別困難的。
更為困難的是抽取應用于該表的更新日志的片段,這時可以使用mysql_find_rows實用程序,它可以從更新日志中抽取多行查詢。
另一種方法是用另一個MySQL服務器恢復整個數據庫,然后將所需要恢復的部分表數據文件拷貝到原始數據庫中。
- 課課通計算機原理
- 中文版Photoshop CS5數碼照片處理完全自學一本通
- SCRATCH與機器人
- 網絡服務器架設(Windows Server+Linux Server)
- Photoshop CS4經典380例
- Getting Started with MariaDB
- 條碼技術及應用
- MicroPython Projects
- Blender Compositing and Post Processing
- 控制系統計算機仿真
- Troubleshooting OpenVPN
- 運動控制系統應用與實踐
- TensorFlow Reinforcement Learning Quick Start Guide
- INSTANT Puppet 3 Starter
- 生物3D打印:從醫療輔具制造到細胞打印