MySQL53--資料庫備份與恢復
資料庫備份
資料庫備份是指通過匯出資料或者複製表文件的方式來製作資料庫的副本。當資料庫出現故障或遭到破壞時,將備份的資料庫載入到系統,從而使資料庫從錯誤狀態恢復到備份時的正確狀態。
可以使用 SELECT INTO OUTFILE 語句把表資料匯出到一個文字檔案中進行備份。
注意:這種方法只能匯出或匯入資料的內容,而不包括表的結構。若表的結構檔案損壞,則必須先設法恢復原來表的結構。
【例項】將資料庫 test_db 的表 tb_students_info 的全部資料備份到 C 盤的資料備份目錄下檔名為 file.txt 的檔案中,要求每個欄位用逗號分開,並且字元用雙引號標註,每行以問號結束。
輸入的SQL語句和執行結果如下所示。
SELECT * FROM test_db.tb_students_info
INTO OUTFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/Uploads/file.txt'
FIELDS TERMINATED BY '"'
LINES TERMINATED BY '?';
Query OK, 10 rows affected (0.06 sec)
資料庫恢復
資料庫恢復是指以備份為基礎,與備份相對應的系統維護和管理操作。
系統進行恢復操作時,先執行一些系統安全性的檢查,包括檢查所要恢復的資料庫是否存在、資料庫是否變化及資料庫檔案是否相容等,然後根據所採用的資料庫備份型別採取相應的恢復措施。
資料庫恢復機制設計的兩個關鍵問題是:
第一,如何建立冗餘資料;
第二,如何利用這些冗餘資料實施資料庫恢復。
建立冗餘資料最常用的技術是資料轉儲和登入日誌檔案。通常在一個數據庫系統中,這兩種方法是一起使用的。
資料轉儲是 DBA 定期地將整個資料庫複製到磁帶或另一個磁碟上儲存起來的過程。這些備用的版本成為後備副本或後援副本。
可使用 LOAD DATA…INFILE 語句來恢復先前備份的資料。
【例項】將之前匯出的資料備份檔案 file.txt 匯入資料庫 test_db 的表 tb_students_copy 中,其中 tb_students_copy 的表結構和 tb_students_info 相同。
首先建立表 tb_students_copy,輸入的 SQL 語句和執行結果如下所示。
mysql> CREATE TABLE tb_students_copy
-> LIKE tb_students_info;
Query OK, 0 rows affected (0.52 sec)
mysql> SELECT * FROM tb_students_copy;
Empty set (0.00 sec)
匯入資料與查詢表 tb_students_copy 的過程如下所示。
mysql> LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.7/
Uploads/file.txt'
-> INTO TABLE test_db.tb_students_copy
-> FIELDS TERMINATED BY ','
-> OPTIONALLY ENCLOSED BY '"'
-> LINES TERMINATED BY '?';
Query OK, 10 rows affected (0.14 sec)
Records: 10 Deleted: 0 Skipped: 0 Warnings: 0
mysql> SELECT * FROM test_db.tb_students_copy;
+----+--------+---------+------+------+--------+------------+
| id | name | dept_id | age | sex | height | login_date |
+----+--------+---------+------+------+--------+------------+
| 1 | Dany | 1 | 25 | F | 160 | 2015-09-10 |
| 2 | Green | 3 | 23 | F | 158 | 2016-10-22 |
| 3 | Henry | 2 | 23 | M | 185 | 2015-05-31 |
| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |
| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |
| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |
| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |
| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |
| 9 | Thomas | 3 | 22 | M | 178 | 2016-06-07 |
| 10 | Tom | 4 | 23 | M | 165 | 2016-08-05 |
+----+--------+---------+------+------+--------+------------+
10 rows in set (0.00 sec)