MySQL備份恢復數據的一般步驟
下面是備份一個數據庫的例子:
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數據庫。
關鍵字:MySQL、數據庫、實用程序
新文章:
- CentOS7下圖形配置網絡的方法
- CentOS 7如何添加刪除用戶
- 如何解決centos7雙系統后丟失windows啟動項
- CentOS單網卡如何批量添加不同IP段
- CentOS下iconv命令的介紹
- Centos7 SSH密鑰登陸及密碼密鑰雙重驗證詳解
- CentOS 7.1添加刪除用戶的方法
- CentOS查找/掃描局域網打印機IP講解
- CentOS7使用hostapd實現無AP模式的詳解
- su命令不能切換root的解決方法
- 解決VMware下CentOS7網絡重啟出錯
- 解決Centos7雙系統后丟失windows啟動項
- CentOS下如何避免文件覆蓋
- CentOS7和CentOS6系統有什么不同呢
- Centos 6.6默認iptable規則詳解