天天看點

Mysql學習筆記(十四)備份與恢複

學習内容:

1.資料庫的重要資料備份...

2.什麼時候需要使用到資料庫備份..

3.如何恢複備份的資料..

1.備份:

說到備份,相比大家都不應該陌生,比如說我們平時在為我們的電腦重新做系統的時候,那麼我們儲存在電腦裡的重要檔案我們都需要進行備份..或者是當我們在使用一鍵還原系統的時候,我們也需要進行備份..那麼資料庫也不例外,我們需要對資料庫裡面儲存的重要資料進行備份..比如說一個大型的企業,那麼必然會有自己的一個大型資料庫,那麼資料庫管理者必然會将自己企業的資料庫進行備份,一旦資料庫的資料丢失,那麼管理者可以将資料恢複到當時備份時的狀态,以至于企業不會有任何的損失...

i.使用mysqldump進行資料庫備份...

我這裡截取的内容不全,因為我建的資料庫表格資訊太多..如果全截下來估計得很長...想必大家也沒心情看...是以就簡單的截了部分内容...

這裡面包含着drop,insert,create等語句...我稍微的解釋一下上面的含義.....看上表。。。

注:

1./*!.....*/部分表示的是可執行的mysql注釋語句,這些語句隻能在mysql中執行...在其他類型的資料庫将被認定為注釋内容,并且不會被執行,這裡展現了資料庫的可移植性...

2./*!40101...*/這個40101表示的是這段語句在mysql的4.01.01版本或者比這個更高的版本的條件下才能被執行....

ii.mysqldump實作對部分表的備份...

這個和上面基本差不多,就是在資料庫的後面多追加了某個表格...如果是多個表格的話,我們可以使用空格來進行分隔...

iii.mysqldump備份全部或者多個資料庫...

備份的内容也基本和第一個截取的一樣...隻是能多了一點東西,由于是多個資料庫的備份,那麼備份的内容将會指明哪一個資料庫是samp_db,哪一個是mysql。。。多個資料庫之間我們用空格分隔...

2.實體備份...

簡單的介紹一下實體備份的内容...

i.直接對資料庫的存儲目錄進行複制...這一般屬于一種簡答,快速,有效的備份方式。。。但是這種備份方式還是有缺點的..它無法對innodb存儲引擎下的資料進行備份...并且還原的時候最好是還原到相同版本,不同版本可能會導緻不相容...

ii.另一種方式是使用mysqlhotcopy進行備份...mysqlhotcopy是在perl腳本下才能夠運作的...這個被成為快速備份,并且隻能備份myisam存儲引擎下的表這個我沒有進行過多的研究,是以就不班門弄斧了...

-------------------------------------------------------------------——————————————————————————

2.資料恢複<==>還原

還原就是我們所說的資料恢複,我們之是以要備份資料庫,不就是為了當資料庫出現問題的時候,我們把備份資料進行還原的嗎。。。是以有了備份,那麼自然也要有還原...

i.使用mysql語句指令進行還原...

注意:執行上面這條指令的時候我們必須要把資料庫建好,否則會導緻錯誤的發生....

還有我們可以在登陸到了資料庫以後使用source語句進行資料庫恢複....

ii.實體還原...

1.第一種就是我們在備份的時候直接對資料庫的存儲目錄進行了複制,那麼當還原的時候我們隻需要把我們複制的東西重新拷貝到我們的存儲目錄下就可以直接完成了資料庫的還原...

說白了就是假如我們有一個資料庫samp_db,裡面有一些重要的資料資訊,重要的資料資訊在存儲目錄下一定是按檔案進行存儲的,我們把這些檔案直接剪切,放置到一個檔案夾中儲存。。那麼這樣做,就代表samp_db資料庫裡的重要資料丢失了,然後我們把我們那個檔案夾裡的資料重新拷貝到samp_db檔案夾中,這樣就代表重要資料還原回來了...

注意:這種方法隻能還原在同一版本下的資料庫,并且隻對myisam存儲引擎有效,對innodb存儲引擎無效...

2.mysqlhotcopy快速恢複...

這種我也沒有進行深入的研究,是以不進行班門弄斧....

注意:如果需要恢複的資料庫已經存在,則在使用DROP語句删除已經存在的資料庫之後,恢複才能成功。另外mysql不同版本之間必須相容,恢複之後的資料才可以使用!!

-----------———————————————————————————————————————————————————————

3.資料庫遷移.

 資料庫的遷移:資料庫的遷移一般由資料庫管理者來搞定...在這裡也簡單的說一下....

遷移的一般原因:

1、需要安裝新的資料庫伺服器

2、mysql版本更新

3、資料庫管理系統變更(從SQLSERVER遷移到mysql)...

i.相同版本的資料庫遷移:

相同版本的資料庫遷移就是主版本号相同的資料庫直接進行資料庫移動...常用的方法就是使用mysqldump導出資料,然後在目标資料庫使用mysql進行導入

mysqldump導入的資料直接通過管道符|,将www.clearlove.com上的資料庫導入到www.nuoyan.com伺服器上,database_name為資料庫名...如果想導出全部的資料庫則使用--all -databases參數...

ii.不同版本的mysql資料庫的遷移:

因為資料庫更新,需要将舊版本mysql資料庫中的資料遷移到新版本資料庫中。mysql伺服器更新,需要先停止服務,然後解除安裝舊版本,并安裝新版本的mysql.如果想保留舊版本中的使用者通路控制資訊,則需要備份mysql的mysql庫,在新版本mysql安裝完成後,重新讀入mysql備份檔案中的資訊,舊版本和新版本的mysql可能使用不同的預設字元集,例如mysql.4.x中大多數使用latin1作為預設字元集,而mysql5.x的預設字元集為utf8。如果資料庫中有中文資料,遷移過程中需要對預設字元集進行修改,不然可能無法正常顯示結果。。。

新版本對舊版本有一定相容性。從舊版本的mysql向新版本mysql遷移時,對于myisam引擎的表,可以直接複制資料庫檔案,

也可以用mysqlhotcopy工具、mysqldump工具。

對于innodb引擎的表一般隻能使用mysqldump将資料導出。然後使用mysql指令導入目标伺服器。

從新版本向舊版本mysql遷移資料時要小心,最好使用mysqldump指令導出,然後導入目标資料庫中。

iii.不同資料庫之間的遷移...

這種情況也是經常會有的,比如說将mysql遷移到oracle。。。這種遷移方式我們首先要比較兩者之間的差異,不同的資料庫在定義資料類型時的形式可能是不同的...比如說mysql中日期字段分為date和time兩種,而oracle隻有date一種...

-------------------------------------------------------------------------------------------------------------------------

4.導入和導出

導入:

在mysql中,當我們插入資料的時候,我們沒必要一條條的輸入sql語句來進行插入,我們還可以建立一個文本檔案,然後将我們建立的文本檔案的内容導入到資料庫當中就可以了....

将檔案導入到smap_db資料庫shop表格...

2.使用mysqlimport進行導入...

mysqlimport是一個獨立的exe應用程式...和load data infile基本差不多...

這個和文法和上面類似,是以不進行解釋了。。。。

mysqlimport的功能和load data infile 基本一樣,唯一就是沒有指定字段的資料導入...下面指定的field字段中插入資料...這個功能mysqlimport是無法實作的....

導出:

有了導入,那麼必然就有導出....

i.使用select into ....outfile進行導出...

ii.使用mysqldump進行檔案的導出...

iii.我們還可以使用mysql進行資料的導出。。。這個相比mysqldump,導出資料的可讀性更強。。。。

------------------------------------------------------------------------------------------------------------------------

截止到這裡資料庫就告一段落了,把基礎的東西總算是學了個差不多了...還有很多東西沒有學到。。。等以後在實際開發中在進行知識點的彌補吧...明天開始該進行JDBC的學習了。。。。。