數(shù)據(jù)備份與還原第一篇分享給大家,具體內(nèi)容如下
基礎(chǔ)概念:
備份,將當(dāng)前已有的數(shù)據(jù)或記錄另存一份;
還原,將數(shù)據(jù)恢復(fù)到備份時的狀態(tài)。
為什么要進(jìn)行數(shù)據(jù)的備份與還原?
防止數(shù)據(jù)丟失;
保護(hù)數(shù)據(jù)記錄。
數(shù)據(jù)備份與還原的方式有很多種,具體可以分為:數(shù)據(jù)表備份、單表數(shù)據(jù)備份、SQL備份和增量備份。
數(shù)據(jù)表備份
數(shù)據(jù)表備份,不需要通過 SQL 來備份,我們可以直接進(jìn)入到數(shù)據(jù)庫文件夾復(fù)制對應(yīng)的表結(jié)構(gòu)以及數(shù)據(jù);在需要還原數(shù)據(jù)的時候,直接將備份(復(fù)制)的內(nèi)容放回去即可。
不過想要進(jìn)行數(shù)據(jù)表備份是有前提條件的,因為不同的存儲引擎之間是有區(qū)別的。
對于存儲引擎,MySQL 主要使用兩種,分別為:InnoDB 和 Myisam,兩者均免費。在這里,咱們可以順便科普一下存儲引擎的知識:
其中,Myisam 和 InnoDB 的數(shù)據(jù)存儲方法也有所區(qū)別:
Myisam:表、數(shù)據(jù)和索引全部單獨分開存儲;
InnoDB:只有表結(jié)構(gòu),數(shù)據(jù)全部存儲到ibd文件中。
執(zhí)行如下 SQL 語句,測試 Myisam 的數(shù)據(jù)存儲方式:
-- 創(chuàng)建 Myisam 表 create table my_myisam( id int )charset utf8 engine = myisam; -- 顯示表結(jié)構(gòu) show create table my_myisam; -- 插入數(shù)據(jù) insert into my_myisam values(1),(2),(3); -- 顯示數(shù)據(jù) select * from my_myisam;
如上圖所示,我們創(chuàng)建了名為my_myisam,存儲引擎為 Myisam 的數(shù)據(jù)表。為了驗證 Myisam 的存儲特性,我們可以到data文件夾查看具體的數(shù)據(jù)存儲情況:
如上圖所示,我們僅僅創(chuàng)建了一個表my_myisam,但是 Myisam 對于會生成三個存儲文件,分別為:
my_myisam.frm:存儲表的結(jié)構(gòu);
my_myisam.MYD:存儲表的數(shù)據(jù);
my_myisam.MYI:存儲表的索引。
現(xiàn)在,我們將這三個文件復(fù)制到testoo數(shù)據(jù)庫(至于如何找到 MySQL 數(shù)據(jù)文件的存儲位置,可以參考詳述查看 MySQL 數(shù)據(jù)文件存儲位置的方法):
執(zhí)行如下 SQL 語句,進(jìn)行測試:
-- 切換數(shù)據(jù)庫 use testoo; -- 查看 testoo 數(shù)據(jù)庫中的表 show tables; -- 查看表 my_myisam select * from my_myisam;
如上圖所示,顯然我們已經(jīng)通過復(fù)制文件的方式,完成了數(shù)據(jù)表的備份工作。
在這里,有一點需要我們注意,那就是:我們可以將通過 InnoDB 存儲引擎產(chǎn)生的.frm和.idb文件復(fù)制到另一個數(shù)據(jù)庫,也可以通過show tables命令查看復(fù)制過來的表名稱,但是卻無法獲得數(shù)據(jù)。
執(zhí)行如下 SQL 語句,進(jìn)行測試:
-- 查看 testoo 數(shù)據(jù)庫中的表 show tables; -- 查看表 my_class select * from my_class;
通過以上測試,顯然數(shù)據(jù)表備份這種備份方式更適用于 Myisam 存儲引擎,而且備份的方式也很簡單,直接復(fù)制 Myisam 存儲引擎產(chǎn)生的.frm、.MYD和.MYI三個存儲文件到新的數(shù)據(jù)庫即可。
溫馨提示:符號[]括起來的內(nèi)容,表示可選項;符號+,則表示連接的意思。
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com