程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> MySQL備份恢復數據的一般步驟

MySQL備份恢復數據的一般步驟

編輯:關於MYSQL數據庫

備份前讀鎖定涉及的表,MySQL>LOCK TABLES tbl1 READ,tbl1 READ,…

 

  下面是備份一個數據庫的例子:

  1、備份前讀鎖定涉及的表


  MySQL>LOCK TABLES tbl1 READ,tbl1 READ,…

  如果,你在MySQLdump實用程序中使用--lock-tables選項則不必使用如上SQL語句。

  2、導出數據庫中表的結構和數據


  shell>MySQLdump --opt db_name>db_name.sql

  3、啟用新的更新日志


  shell>MySQLadmin flush-logs

  這樣可以記錄你備份後的數據改變為恢復數據准備。

  4、解除表的讀鎖


  MySQL>UNLOCK TABLES;

  為了加速上述過程,你可以這樣做:


  shell> mysqldump --lock-tables --opt db_name>db_name.sql; MySQLadmin flush-logs

  但是這樣可能會有點小問題。上命令在啟用新的更新日志前就恢復表的讀鎖,

  在更新繁忙的站點,可能有備份後的更新數據沒有記錄在新的日志中。

  現在恢復上面備份的數據庫

  1、對涉及的表使用寫鎖


  MySQL>LOCK TABLES tbl1 WRITE,tbl1 WRITE,…

2、恢復備份的數據


  shell>MySQL db_name < db_name.sql

  3、恢復更新日志的內容


  shell>MySQL --one-database db_name < hostname.nnn

  假設需要使用的日志名字為hostname.nnn

  4、啟用新的更新日志


  shell>MySQLadmin flush-logs

  5、解除表的寫鎖


  MySQL>UNLOCK TABLES;

  希望上面的例子能給你啟發,因為備份數據的手法多種多樣,你所使用的和上面所述可能大不一樣,但是對於備份和恢復中,表的鎖定、啟用新的更新日志的時機應該是類似的,仔細考慮這個問題。

  思考題

  請在完成這些思考題之前,啟用常規日志和更新日志,因為下面的思考題將涉及到這個問題。

  1、使用帶有帶有--all-databases選項的MySQLdump實用程序,備份你現有的所有數據到一個文件all.sql中(如果你的數據不太多的話),查看輸出的SQL語句。

  2、使用帶有--ab選項的MySQLdump,把你的test數據庫中的表結構和數據分別備份到一個目錄中。檢查一下生成的SQL語句與上題中備份文件中的有什麼不同。

  3、建立一個新的數據庫test1,把上題的備份文件恢復到該數據庫中。請簡述一下過程。

  4、查看你的更新日志和常規日志,看看上述操作是否都留下了記錄以及留下了什麼記錄。

  5、先在test數據庫中的任意一個表中INSERT一個記錄,然後在刪除這個記錄。(目的是在更新日志中留下記錄。)刪除數據庫test1,試試如何從更新日志恢復test1數據庫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved