




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
MySQL數(shù)據(jù)庫備份和恢復第14章通過本課程的學習,您將應該:了解數(shù)據(jù)庫的相關概念熟悉數(shù)據(jù)庫工具的使用熟悉SQL語言的規(guī)則與規(guī)范熟練掌握MySQL數(shù)據(jù)庫管理方法熟練掌握MySQL表結構管理方法熟練掌握表記錄的檢索方法熟練掌握視圖與索引的使用方法熟練掌握數(shù)據(jù)處理之增刪改熟練掌握存儲過程與游標的使用方法熟練掌握存儲函數(shù)的應用熟練掌握觸發(fā)器的應用熟練掌握事務的基本特性和應用場景熟練掌握數(shù)據(jù)庫安全及管理熟練掌握MySQL數(shù)據(jù)庫備份和恢復操作了解利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學習系統(tǒng)并部署課程目標項目部署成功通過本講的學習,您將可以:從本地上傳數(shù)據(jù)庫本講教學目標了解數(shù)據(jù)庫備份的意義、類型、策略和備份方法熟練使用MySQLdump工具對數(shù)據(jù)庫進行備份熟練對MySQL數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)遷移熟練對MySQL數(shù)據(jù)庫實現(xiàn)數(shù)據(jù)遷移1.OPTION2.OPTIONOPTION4.OPTION3.熟練對MySQL數(shù)據(jù)導入導出操作5.OPTION熟練使用數(shù)據(jù)庫圖形化管理工具對數(shù)據(jù)庫進行備份、恢復操作6.OPTION目錄Content數(shù)據(jù)庫備份的意義01數(shù)據(jù)庫備份的類型02數(shù)據(jù)庫備份策略03數(shù)據(jù)庫備份的方法04使用MySQLdump工具進行備份05MySQL數(shù)據(jù)恢復06MySQL導出導入文本文件07MySQL數(shù)據(jù)庫遷移08課業(yè)任務09常見錯誤及解決方案10數(shù)據(jù)庫備份的意義01數(shù)據(jù)備份是數(shù)據(jù)庫管理員非常重要的工作之一。系統(tǒng)意外崩潰和硬件的損壞都可能導致數(shù)據(jù)庫的丟失,因此MySQL管理員應該定期地備份數(shù)據(jù)庫,使得在意外情況發(fā)生時,盡可能減少損失。使用數(shù)據(jù)庫備份和還原數(shù)據(jù)庫是數(shù)據(jù)庫崩潰時提供數(shù)據(jù)恢復最小代價的最優(yōu)方案,如果讓客戶重新填報數(shù)據(jù),代價就太大了。數(shù)據(jù)庫備份提高了系統(tǒng)的高可用性和災難性恢復能力,在數(shù)據(jù)庫系統(tǒng)崩潰的時候,沒有數(shù)據(jù)庫備份就無法找回數(shù)據(jù)。14.1數(shù)據(jù)庫備份的意義數(shù)據(jù)庫備份的類型0214.2數(shù)據(jù)庫備份的類型數(shù)據(jù)庫備份可以分為物理備份和邏輯備份,物理備份是指對數(shù)據(jù)庫操作系統(tǒng)的物理文件(如數(shù)據(jù)文件、日志文件等)的備份,邏輯備份是指對數(shù)據(jù)庫邏輯組件(例如數(shù)據(jù)表等數(shù)據(jù)庫對象)的備份,具體如下:1.物理備份(1)冷備份(脫機備份):是在關閉數(shù)據(jù)庫的時候進行的。(2)熱備份(聯(lián)機備份):數(shù)據(jù)庫處于運行狀態(tài),依賴于數(shù)據(jù)庫的日志文件。(3)溫備份:數(shù)據(jù)庫鎖定表格(不可寫入但可讀)的狀態(tài)下進行備份操作。2.數(shù)據(jù)庫中重要或敏感的數(shù)據(jù)被泄漏MySQL中常用的邏輯備份工具為MySQLdump。邏輯備份就是備份SQL語句,在恢復的時候執(zhí)行備份的SQL語句實現(xiàn)數(shù)據(jù)庫數(shù)據(jù)的重現(xiàn)。邏輯備份恢復速度慢,但占用空間小,更靈活。對數(shù)據(jù)庫對象利用工具進行導出工作,匯總入備份文件內(nèi)。數(shù)據(jù)庫備份策略0314.3數(shù)據(jù)庫備份策略備份策略指確定需備份的內(nèi)容、備份時間及備份方式。常見的備份策略有完全備份、增量備份、差異備份三種類型。1.完全備份完全備份是對整個數(shù)據(jù)庫的備份、數(shù)據(jù)庫結構和文件結構的備份,完全備份保存的是備份完成時刻的數(shù)據(jù)庫,完全備份是增量備份的基礎。2.差異備份備份自從上次完全備份之后被修改過的文件。3.增量備份只有在上次完全備份或者增量備份后被修改的文件才會被備份。數(shù)據(jù)庫備份的方法0414.4數(shù)據(jù)庫備份的方法項目的開發(fā)過程中數(shù)據(jù)庫的備份是非常重要的,因為數(shù)據(jù)庫很容易被人不小心刪除掉,會造成不可估計的損失,所以一定要進行數(shù)據(jù)庫的備份,常用的數(shù)據(jù)庫備份方法有以下幾種:1.物理冷備物理備份時數(shù)據(jù)庫處于關閉狀態(tài),直接打包數(shù)據(jù)庫文件。備份速度快,恢復時也是最簡單的。2.專用備份工具(1)MySQLdump是常用的邏輯備份工具。(2)MySQLhotcopy僅擁有備份MyISAM和ARCHIVE表。3.啟用二進制日志進行增量備份MySQL沒有提供直接的增量備份方法,可以通過MySQL提供的二進制日志(binarylogs)間接實現(xiàn)增量備份。進行增量備份,需要刷新二進制日志。14.4數(shù)據(jù)庫備份的方法4.第三方工具備份免費的MySQL熱備份軟件PerconaXtraBackup。5.數(shù)據(jù)庫目錄備份數(shù)據(jù)庫也是以文件形式存儲,可以直接找到對應的文件位置,然后復制得到備份。使用MySQLdump工具進行備份05MySQLdump是MySQL提供的一個非常實用的數(shù)據(jù)庫備份工具。MySQLdump的工作原理是查出數(shù)據(jù)表的結構,將其轉換成CREATE語句,將表中的記錄轉換為INSERT語句。MySQLdump命令執(zhí)行時可以將數(shù)據(jù)庫備份成一個文本文件,該文件中實際包含了多個CREATE和INSERT語句,使用這些語句可以重新創(chuàng)建表和插入數(shù)據(jù)。14.5使用MySQLdump工具進行備份14.5.1備份數(shù)據(jù)庫王小明在不斷開發(fā)數(shù)據(jù)庫學習系統(tǒng)的過程中,也在不斷更新數(shù)據(jù)庫,為保證數(shù)據(jù)在意外丟失的情況下仍能夠恢復,所以需要定期備份數(shù)據(jù)庫。備份數(shù)據(jù)庫MySQLdump工具的語法格式如下:【案例14.1】將數(shù)據(jù)庫學習系統(tǒng)的數(shù)據(jù)庫db_study備份至D盤根目錄下。在MySQL中備份數(shù)據(jù)庫的SQL語句如下所示。說明:(1)在備份數(shù)據(jù)庫時名稱一定是與MySQL中的名稱一致,需要注意符號、數(shù)字和字母的區(qū)別。(2)執(zhí)行語句時,也可以選擇后輸入密碼,如果直接在命令中輸入密碼,會失去密碼保護措施。(3)數(shù)據(jù)庫備份的存儲位置一定是存在的,如果需要放入特定文件夾中,需要提前創(chuàng)建該文件夾,否則將提示錯誤信息:系統(tǒng)找不到指定的路徑。14.5.1備份數(shù)據(jù)庫執(zhí)行上述SQL語句,運行結果如下圖所示。由運行結果可得知:輸入密碼之后,MySQL將名稱為db_study的數(shù)據(jù)庫完全備份至D盤的根目錄下以study.sql文件的形式進行保存。在D盤目錄下查看備份的文件,如下圖所示。使用文本查看器打開文件可以看到其部分文件內(nèi)容大致如下。14.5.1備份數(shù)據(jù)庫
開頭首先表明備份文件使的MySQLdump工具的版本號;然后是備份賬戶的名稱和主機信息,以及備份的數(shù)據(jù)庫的名稱,最后是MySQL服務器的版本號。文件中的SET語句是將系統(tǒng)變量值賦給用戶定義變量,以確保被恢復的數(shù)據(jù)庫的系統(tǒng)變量和原來備份時的變量相同,例如:14.5.1備份數(shù)據(jù)庫將系統(tǒng)變量character_set_client的值賦給用戶定義變量@old_character_set_client。備份文件中以“--”字符開頭的行為注釋語句;以“/*!”開頭、“*/”結尾的語句為可執(zhí)行的MySQL注釋,這些語句可以被MySQL執(zhí)行,但在其他數(shù)據(jù)庫管理系統(tǒng)中將被作為注釋忽略,以提高數(shù)據(jù)庫的可移植性。雖然能夠完全備份一整個數(shù)據(jù)庫,但是如果當數(shù)據(jù)庫數(shù)據(jù)較多的情況下,也可以選擇備份所修改的數(shù)據(jù)表,備份數(shù)據(jù)表的MySQLdump工具的語法格式如下:14.5.2備份數(shù)據(jù)表【案例14.2】備份db_study數(shù)據(jù)庫中的tb_class表。在MySQL中執(zhí)行備份表格的SQL語句如下所示。執(zhí)行上述SQL語句,運行結果如下圖所示。
由運行結果可見:輸入密碼后,將名稱為db_study的數(shù)據(jù)庫下的tb_class文件備份至D盤的根目錄下,以tb_class.sql文件的形式進行保存,在D盤目錄下查看備份的文件,如下圖所示。使用文本查看器打開文件可以看到其部分文件內(nèi)容大致如下。14.5.2備份數(shù)據(jù)表說明:(1)多個表名之間需要用空格隔開。(2)備份表和備份數(shù)據(jù)庫中所有表的語句中不同的地方在于,要在數(shù)據(jù)庫名稱之后指定需要備份的表名稱。(3)備份文件中包含了前面介紹的SET語句等內(nèi)容,不同的是,該文件只包含表的CREATE和INSERT語句。MySQLdump工具常用選項及其主要用途,如下表所示。14.5.3MySQLdump常用選項MySQL數(shù)據(jù)恢復06在前面介紹并進行了“db_study”數(shù)據(jù)庫的備份,假設目前使用的數(shù)據(jù)庫損壞,則需要將備份的數(shù)據(jù)庫還原至MySQL中。MySQL的還原語句的語法格式如下:14.6.1單庫備份中恢復單庫管理人員操作的失誤、計算機故障以及其他意外情況,都會導致數(shù)據(jù)的丟失和破壞。當數(shù)據(jù)丟失或意外破壞時,可以通過恢復已經(jīng)備份的數(shù)據(jù)盡量減少數(shù)據(jù)丟失和破壞造成的損失。本節(jié)將重點介紹使用MySQL命令還原數(shù)據(jù)的方法?!景咐?4.3】在MySQL未連接的情況下恢復“db_study”數(shù)據(jù)庫中的數(shù)據(jù)?;謴蛿?shù)據(jù)前使用“SHOWDATABASES;”SQL語句查看數(shù)據(jù)庫;使用“USEdb_study”SQL語句使用“db_study”數(shù)據(jù)庫;使用“SHOWTABLES;”命令查看數(shù)據(jù)庫中的數(shù)據(jù)表,由右圖可知,當時數(shù)據(jù)庫中沒有數(shù)據(jù)表。14.6.1單庫備份中恢復單庫將d:\db_study.sql文件中的數(shù)據(jù)恢復至數(shù)據(jù)庫“db_study”中的SQL語句如下。執(zhí)行上述SQL語句,運行結果如下圖所示。由運行結果可以得知:(1)與備份數(shù)據(jù)庫相似,密碼可以后輸入,而不一定需要明文輸入;(2)運行成功效果即無報錯;再次使用“SHOWTABLES;”語句查看數(shù)據(jù)庫中的數(shù)據(jù)表,存在需要的數(shù)據(jù)表,則表示恢復成功,效果如下圖所示。14.6.1單庫備份中恢復單庫說明:語法格式中,如果導入的腳本文件中規(guī)范注明了創(chuàng)建的數(shù)據(jù)庫,就可以跳過語法中的指定數(shù)據(jù)庫直接使用“mysql-uroot-p<d:\\study.sql”語句運行。既然可以在未連接MySQL服務的情況下恢復數(shù)據(jù)庫,也可以在連接MySQL服務的情況下恢復數(shù)據(jù)庫,在成功登錄MySQL服務后,使用SOURCE語句恢復數(shù)據(jù)庫,對應的SQL語句如下所示?!景咐?4.4】在MySQL連接的情況下恢復“db_study”數(shù)據(jù)庫中的數(shù)據(jù)。還原數(shù)據(jù)庫前首先登錄MySQL,使用“USEdb_study”語句進入db_study數(shù)據(jù)庫,使用“SHOWTABLES;”語句查詢數(shù)據(jù)庫中的數(shù)據(jù)表,由下圖可知,db_study數(shù)據(jù)庫為空,不存在任何數(shù)據(jù)表。14.6.1單庫備份中恢復單庫接下來,在MySQL中執(zhí)行還原數(shù)據(jù)庫操作的SQL語句如下。14.6.1單庫備份中恢復單庫執(zhí)行上述SQL語句,運行結果如下圖所示。
由運行結果可以得知:(1)與導出成功的效果有所區(qū)別,恢復數(shù)據(jù)執(zhí)行結果逐行顯示;(2)每項數(shù)據(jù)的恢復都有其信息顯示,如影響行數(shù)、恢復所需時間等;說明:(1)所引入的備份文件名是其本身的名字,而不是數(shù)據(jù)庫的名字。備份文件名和數(shù)據(jù)庫名不一定同名。(2)地址中的“//”符號如果換成了“\\”會提示錯誤但依舊執(zhí)行,這是MySQL對于語法錯誤的包容性體現(xiàn)。(3)使用SOURCE語句前一定需要進入MySQL才能有效執(zhí)行。而恢復全量備份中的某個數(shù)據(jù)庫的語法格式如下:14.6.2從全量備份中恢復單庫對于全量備份,需要使用到MySQLdump工具的常用選項“--all-databases”,備份所有數(shù)據(jù)庫的語法格式如下:前面介紹了僅備份一個數(shù)據(jù)庫并進行恢復,但是實際生活中,需要備份的不止有一個數(shù)據(jù)庫。一個系統(tǒng)便至少有一個數(shù)據(jù)庫,如果每次備份都是逐個進行,工作量會變得較大,為了便捷操作,可以直接進行全量備份,將所有數(shù)據(jù)庫備份至同一個腳本文件中。執(zhí)行結果如下圖所示,輸入密碼后備份成功。14.6.2從全量備份中恢復單庫【案例14.5】創(chuàng)建全量備份后恢復db_study數(shù)據(jù)庫。首先進行全量備份,備份得到一個命名為“all_databases”的腳本文件,在Windows系統(tǒng)的命令提示符下輸入SQL語句如下所示。得到全量備份腳本文件后,假設當前使用的db_study數(shù)據(jù)庫損壞,需要從全量備份腳本文件中進行恢復操作,使用的SQL語句如下所示。14.6.2從全量備份中恢復單庫在D盤下可以得到全量備份后的文件all_databases.sql文件,如下圖所示。執(zhí)行結果如下圖所示,輸入密碼后恢復成功。完成后重新進入MySQL查看數(shù)據(jù)庫和數(shù)據(jù)表,即能夠看到db_study下存在相應的數(shù)據(jù)表。MySQL導出導入文本文件0714.7MySQL導出導入文本文件數(shù)據(jù)庫備份所導出的格式一般分兩種:sql文件和文本文件。由于SQL語句每一條都會涉及到一些邏輯關系,當sql文件重新恢復還原的時候會逐條執(zhí)行,如果數(shù)據(jù)量很大,就非常耗時了。導出的文本文件就是純粹的業(yè)務數(shù)據(jù),因此若數(shù)據(jù)量非常大的時候建議用文本文件導入,相當于進行了粘貼。下面將介紹MySQL對于數(shù)據(jù)導出導入文本文件。14.7.1MySQL命令和MySQLdump工具導出文本文件1.導出txt文件方式1:用MySQL命令導出MySQL功能豐富,MySQL命令不僅可以用備份和恢復也可以用來導出txt文件,基本語法格式如下。說明:(1)使用-e或者--execute選項表示執(zhí)行選項后的語句并退出。(2)查詢語句必須要用雙引號括起來。(3)備份文件名稱.txt意為具體的存儲地址以及存儲文件名稱。(4)SELECT的查詢結果導出到文本文件之后,內(nèi)容會變成垂直顯示格式。
或者14.7.1MySQL命令和MySQLdump工具導出文本文件1.導出txt文件方式2:用MySQLdump工具導出MySQL功能豐富,MySQL命令不僅可以用備份和恢復也可以用來導出txt文件,基本語法格式如下。說明:(1)-T:只有指定了-T參數(shù),才可以導出txt格式文件。(2)目標目錄:是指導出的文本文件的路徑。(3)可選參數(shù)選項需要結合-T選項使用。MySQLdump工具也可以導出txt文件,基本語法格式如下。14.7.1MySQL命令和MySQLdump工具導出文本文件2.導出xml文件方式1:用MySQL命令導出說明:(1)使用-X或者--xml選項表示導出xml格式的文件。MySQL命令也可以導出同為文本文件的xml文件,且語法與導出txt語法相似?;菊Z法格式如下:或者14.7.1MySQL命令和MySQLdump工具導出文本文件2.導出xml文件方式2:用MySQLdump工具導出說明:(1)使用-X或者--xml選項導出xml格式的文件。(2)備份文件名稱.xml意為具體的存儲地址以及存儲文件名稱。MySQLdump工具同理也可導出xml格式文件,基本語法格式如下。14.7.2使用SELECTINTOOUTFILE語法導出文本文件說明:(1)OUTFILE參數(shù)指定的文件所在的路徑需要有MySQL的訪問權限,否則會報錯。(2)每一條記錄的數(shù)據(jù)之間默認以Tab分隔,也可使用fieldsterminated參數(shù)指定分隔符。(3)執(zhí)行SELECTINTOOUTFILE和LOADDATAINFILE命令需要設置secure_file_priv參數(shù)。該參數(shù)的設置如下:①NULL:MySQL服務會禁止執(zhí)行SELECTINTOOUTFILE和LOADDATAINFILE命令;②目錄名:MySQL服務只允許在這個目錄中執(zhí)行文件的導入和導出操作。目錄必須存在,MySQL服務不會創(chuàng)建它;③空字符串(''):代表導出的文本文件可以放在任意位置。MySQL還可以靈活使用查詢操作,在SELECT查詢語句中使用INTOOUTFILE參數(shù)可以將查詢結果保存到文本文件中?;靖袷饺缦拢?4.7.2使用SELECTINTOOUTFILE語法導出文本文件【案例14.6】將db_study數(shù)據(jù)庫中的tb_class數(shù)據(jù)表以文本文件導出至D盤。登錄至MySQL服務器中,執(zhí)行“USEdb_study;”語句將db_study切換成正在使用的數(shù)據(jù)庫,執(zhí)行“SELECT*FROMtb_class;”語句查詢tb_class數(shù)據(jù)表中數(shù)據(jù),執(zhí)行效果如下圖所示,從運行結果可以看到tb_class中的全部數(shù)據(jù)。14.7.2使用SELECTINTOOUTFILE語法導出文本文件執(zhí)行“SELECTclass_id,class_name,department_idFROMtb_classINTOOUTFILE'D:/tb_class.txt';”SQL語句將tb_class數(shù)據(jù)表中的class_id、class_name、department_id字段的數(shù)據(jù)導出到D盤下的tb_class.txt文件中,如下圖所示。在D盤目錄下能看到如下圖所示的txt文件則表示導出成功。14.7.3使用LOADDATAINFILE方式導入文本文件
就像MySQL的INSERTINTO語句一樣,導入也可以有這樣高效的語句。LOADDATAINFILE語句以非常高的速度從一個文本文件中讀取記錄行并插入到一個表中。LOADDATAINFILE是SELECTINTOOUTFILE的相反操作,基本語法格式如下。說明:(1)目標文件意為文件其具體的存儲位置。(2)IGNOREnumberLINES子句可用于忽略文件開頭的行。14.7.3使用LOADDATAINFILE方式導入文本文件可選參數(shù)選項常見取值如下:FIELDSTERMINATEDBY'字符串':設置字符串為字段之間的分隔符,可以為單個或多個字符,默認值是制表符“\t”。FIELDSENCLOSEDBY'字符':設置字符來括住字段的值,只能為單個字符。默認情況下不使用任何符號。FIELDSOPTIONALLYENCLOSEDBY'字符':設置字符來括住CHAR、VARCHAR和TEXT等字符型字段,只能為單個字符。默認情況下不使用任何符號。FIELDSESCAPEDBY'字符':設置轉義字符,只能為單個字符。默認值為“\”。LINESSTARTINGBY'字符串':設置每行數(shù)據(jù)開頭的字符,可以為單個或多個字符。默認情況下不使用任何字符。LINESTERMINATEDBY'字符串':設置每行數(shù)據(jù)結尾的字符,可以為單個或多個字符。默認值是“\n”。在Windows操作系統(tǒng)中,則為“\r\n”。14.7.3使用LOADDATAINFILE方式導入文本文件FIELDS和LINES參數(shù)說明:使用FIELDS和LINES參數(shù)來指定如何處理數(shù)據(jù)格式。(1)對于LOADDATAINFILE和SELECTINTOOUTFILE語句,F(xiàn)IELDS和LINES子句的語法是相同的。這兩個子句都是可選的,但如果兩者都指定,則FIELDS必須在LINES之前。(2)如果指定FIELDS子句,那么FIELDS的每個子句也是可選的,除非你必須至少指定其中一個。(3)如果不指定處理數(shù)據(jù)的參數(shù),則使用默認值。14.7.3使用LOADDATAINFILE方式導入文本文件
【案例14.7】將tb_class.txt文本文件的數(shù)據(jù)導入到tb_class數(shù)據(jù)表中。
首先,登錄至MySQL服務器中,執(zhí)行“USEdb_study;”語句將db_study數(shù)據(jù)庫切換至當前數(shù)據(jù)庫,執(zhí)行“DELETEFROMtb_class;”語句刪除tb_class數(shù)據(jù)表內(nèi)數(shù)據(jù),執(zhí)行效果如下圖所示。
清空tb_class數(shù)據(jù)表的數(shù)據(jù)后可以開始進行導入操作,執(zhí)行“LOADDATAINFILE'D:/tb_class.txt'INTOTABLEtb_class;”語句進行導入,執(zhí)行效果如下圖所示。執(zhí)行“SELECT*FROMtb_class;”SQL語句重新查詢數(shù)據(jù)表,如下圖所示,能夠看到tb_class數(shù)據(jù)表中的數(shù)據(jù)。14.7.4使用MySQLimport命令導入文本文件MySQLimport是MySQL數(shù)據(jù)庫提供的一個命令行程序,不需要登錄MySQL客戶端就可進行數(shù)據(jù)導入。從本質(zhì)上來說,是LOADDATAINFILE的命令接口,實際上就是“LOADDATAINFILE”命令的一個包裝實現(xiàn),且大多數(shù)的選項都和LOADDATAINFILE語法相同?;菊Z法格式如下:
說明:(1)數(shù)據(jù)庫名稱為所導入的表所在的數(shù)據(jù)庫名稱。注意,MySQL命令不指定導入數(shù)據(jù)庫的表的名稱。(2)導入前,數(shù)據(jù)表的名稱要與導入的目標文件名稱一致,且該表必須存在。14.7.4使用MySQLimport命令導入文本文件【案例14.8】將tb_class.txt文本文件導入tb_class數(shù)據(jù)表。首先,登錄至MySQL服務器中,并使用db_study數(shù)據(jù)庫刪除tb_class數(shù)據(jù)表內(nèi)數(shù)據(jù),所使用的SQL語句為“USEdb_study;”和“DELETEFROMtb_class;”。執(zhí)行效果如下圖所示:清空tb_class數(shù)據(jù)表后退出MySQL服務端,在命令提示符中輸入MySQLimport命令“mysqlimport-uroot-pdb_studyD:\\tb_class.txt”執(zhí)行效果如下圖所示:完成操作后,再次登錄MySQL終端,使用SQL語句“SELECT*FROMtb_class;”重新查詢數(shù)據(jù)表,能夠得到如下圖所示的數(shù)據(jù)。MySQL數(shù)據(jù)庫遷移08數(shù)據(jù)遷移(datamigration)是指選擇、準備、提取和轉換數(shù)據(jù),并將數(shù)據(jù)從一個計算機存儲系統(tǒng)永久地傳輸?shù)搅硪粋€計算機存儲系統(tǒng)的過程。此外,驗證遷移數(shù)據(jù)的完整性和退役原來舊的數(shù)據(jù)存儲,也被認為是整個數(shù)據(jù)遷移過程的一部分。數(shù)據(jù)庫遷移的原因是多樣的,包括服務器或存儲設備更換、維護或升級,應用程序遷移,網(wǎng)站集成,災難恢復和數(shù)據(jù)中心遷移。14.8MySQL數(shù)據(jù)庫遷移14.8MySQL數(shù)據(jù)庫遷移根據(jù)不同的需求可能要采取不同的遷移方案,但總體來講,MySQL數(shù)據(jù)遷移主要分為MySQL數(shù)據(jù)庫之間的遷移和不同數(shù)據(jù)庫與MySQL數(shù)據(jù)庫之間的遷移,方案大致可以分為物理遷移和邏輯遷移兩類。通常以盡可能自動化的方式執(zhí)行,從而將人力資源從繁瑣的任務中解放出來。1.物理遷移物理遷移適用于大數(shù)據(jù)量下的整體遷移。使用物理遷移方案的優(yōu)點是比較快速,但需要停機遷移并且要求MySQL版本及配置必須和原服務器相同,也可能引起未知問題。物理遷移包括拷貝數(shù)據(jù)文件和使用XtraBackup備份工具兩種。2.邏輯遷移邏輯遷移適用范圍更廣,無論是部分遷移還是全量遷移,都可以使用邏輯遷移,輯遷移中使用最多的就是通過MySQLdump等備份工具。14.8.1MySQL數(shù)據(jù)庫之間的遷移MySQL數(shù)據(jù)庫之間的遷移語法格式如下:MySQL數(shù)據(jù)庫之間數(shù)據(jù)的遷移是作為系統(tǒng)開發(fā),運營和維護時經(jīng)常發(fā)生的事情。需要進行遷移的常見情況主要是三種:重新安裝了操作系統(tǒng)、升級了MySQL版本和更換了新的機器。在這些情況下需要將MySQL原有的數(shù)據(jù)遷移到新的機器上,就涉及到了上述的備份與恢復的知識,總結方式有:使用命令備份和還原數(shù)據(jù)庫。上述介紹了MySQLdump工具,以及相關的MySQL命令對數(shù)據(jù)庫或者其數(shù)據(jù)進行導入導出。1.相同版本的MySQL數(shù)據(jù)庫之間的遷移說明:(1)mysqldump命令中,-h意為主機或者是IP地址;-u是用戶名;-ppassword1意為遷移時需要使用密碼,可以需要時再添加密碼;--all-databases意為將當前數(shù)據(jù)庫的數(shù)據(jù)遷移出去。(2)管道符“|”作用是將MySQL備份的文件傳輸給MySQL。(3)mysql命令中,-h意為接收備份文件的主機或者是IP地址;-u是接收該主機的用戶名;-p意為該主機的密碼。14.8.1MySQL數(shù)據(jù)庫之間的遷移【案例14.9】將db_study數(shù)據(jù)庫遷移至另一個服務器。在Windows系統(tǒng)的命令提示符中使用“ping”命令查看服務器之間是否連通,現(xiàn)使用IP地址為“192.168.28.189”和IP地址為“192.168.28.215”的服務器進行連通,如下圖所示,兩臺服務器是能ping通的。確保服務器之間連接成功之后,需要確認MySQL數(shù)據(jù)庫之間的遠程連接是成功的,在命令提示符中輸入遠程方的MySQL數(shù)據(jù)庫的用戶信息進行登錄,執(zhí)行“mysql-h192.168.28.215-uTest-p”SQL語句,執(zhí)行效果如下圖所示,能遠程登錄成功。14.8.1MySQL數(shù)據(jù)庫之間的遷移遠程登錄成功后,退出MySQL回到命令提示符中開始數(shù)據(jù)庫遷移操作,將IP地址為“192.168.28.189”的服務器中MySQL數(shù)據(jù)庫的db_study數(shù)據(jù)庫傳輸至IP地址為“192.168.28.215”的服務器中的MySQL數(shù)據(jù)庫中,在Windows系統(tǒng)的命令提示符下輸入SQL語句如下。執(zhí)行結果如下圖所示,執(zhí)行數(shù)據(jù)庫遷移成功。14.8.1MySQL數(shù)據(jù)庫之間的遷移完成后重新遠程登錄MySQL查看數(shù)據(jù)庫和數(shù)據(jù)表,即能夠看到db_study如下圖所示存在相應的數(shù)據(jù)表。14.8.1MySQL數(shù)據(jù)庫之間的遷移升級MySQL數(shù)據(jù)庫到更新版本,需要注意以下幾點:卸載舊版本的MySQL并下載新版本的MySQL數(shù)據(jù)庫(詳見第2章MySQL的安裝與配置)。這樣可以直接升級MySQL版本。如果想保留舊版本中的用戶訪問控制信息,需要備份MySQL數(shù)據(jù)庫。在新版本MySQL安裝完成后,再將備份文件中的信息讀入。在遷移過程中,需要注意舊版本和新版本可能使用不同的字符集。例如,MySQL8.0版本之前的字符集為utf8,但不是真正的UTF-8字符集。而MySQL8.0版本默認字符集為utf8mb4,才是真正的UTF-8字符編碼。如果數(shù)據(jù)庫中有中文數(shù)據(jù),遷移時需要修改默認字符集,否則可能無法正常顯示結果。新版本對舊版本有一定兼容性。對于MyISAM引擎的數(shù)據(jù)表,可以使用MySQLhotcopy工具、MySQLdump工具等進行操作,也可以直接復制數(shù)據(jù)庫文件。對于非MyISAM引擎的數(shù)據(jù)表,如InnoDB引擎數(shù)據(jù)表,一般只能使用MySQLdump將數(shù)據(jù)導出,然后使用MySQL命令導入到目標服務器上。2.不同版本的MySQL數(shù)據(jù)庫之間的遷移數(shù)據(jù)庫遷移是指將MySQL數(shù)據(jù)庫轉移到其他類型數(shù)據(jù)庫,或將其他數(shù)據(jù)庫數(shù)據(jù)遷移到MySQL數(shù)據(jù)庫。對于常見的Oracle數(shù)據(jù)庫,只需簡單修改MySQL腳本中的CREATE語句即可實現(xiàn)與MySQL數(shù)據(jù)庫的互通。然而,對于常見的SQLServer數(shù)據(jù)庫,無法直接與MySQL互通,需要添加MyODBC操作引擎來實現(xiàn)兩個數(shù)據(jù)庫之間的數(shù)據(jù)遷移。由于不同數(shù)據(jù)庫之間存在差異,無法保證MySQL與其他數(shù)據(jù)庫之間的完美遷移,因此在遷移前需要了解它們的架構、數(shù)據(jù)備份和差異。不同數(shù)據(jù)庫對相同類型數(shù)據(jù)的定義關鍵字可能不同。例如,MySQL幾乎完全支持標準SQL語言,而SQLServer使用T-SQL語言,所以在遷移時需要進行語句映射處理??梢允褂霉ぞ邅磉M行數(shù)據(jù)庫遷移,比如在Windows系統(tǒng)下可以使用MyODBC實現(xiàn)MySQL和SQLServer之間的遷移。MySQL官方提供的MySQLMigrationToolkit也可用于不同數(shù)據(jù)庫間的數(shù)據(jù)遷移。14.8.2不同數(shù)據(jù)庫與MySQL數(shù)據(jù)庫的遷移課業(yè)任務0914.9課業(yè)任務課業(yè)任務14-1使用MySQLdump工具導出文本文件課業(yè)任務14-2使用MySQL命令導出文本文件課業(yè)任務14-3使用Workbench工具對數(shù)據(jù)庫進行備份課業(yè)任務14-4使用Navicat工具對數(shù)據(jù)庫進行恢復王小明想利用MySQL+Java開發(fā)一個數(shù)據(jù)庫學習系統(tǒng),在熟悉了MySQL數(shù)據(jù)庫安全性知識后,需熟悉對MySQL數(shù)據(jù)庫的備份和恢復操作,并能夠靈活地使用該操作對數(shù)據(jù)庫進行保護,現(xiàn)通過4個課業(yè)任務來完成。具體請見實驗13常見錯誤及解決方案1014.10常見錯誤及解決方案14.10.1錯誤14-1導出失敗14.10.2錯誤14-2刪除表格失敗14.10.3錯誤14-3遷移失敗情況一14.10.4錯誤14-4遷移失敗情況二具體請見實驗1314.10.5錯誤14-5遷移失敗情況三選擇題(1)數(shù)據(jù)庫備份類型從哪兩個角度劃分()A.冷備和熱備B.物理和邏輯C.冷備和溫備D.完全和不完全(2)哪個選項不屬于備份策略的三個角度()。A.完全備份B.差異備份C.增量備份D.時間備份填空題判斷題操作題BD選擇題(3)實現(xiàn)邏輯備份的MySQL自帶的工具是哪一個()。A.MySQLdumpB.MySQL命令C.MySQLhotcopyD.PerconaXtraBackup(4)在MySQL中,“|”該符號是()。A.管道符B.通配符C.結束符D.以上說法都不正確填空題判斷題操作題AA選擇題(5)備份數(shù)據(jù)庫的SQL語句中的比較符號是()。A.<B.>C.=D.以上都不正確填空題判斷題操作題D(6)恢復數(shù)據(jù)庫的SQL語句中的比較符號是()。A.<B.>C.=D.以上都不正確D選擇題填空題判斷題操作題(1)數(shù)據(jù)庫備份類型從兩個角度劃分,分別是___________________。(2)數(shù)據(jù)庫遷移時的管道符“|”的作用是____________________________________________________________。(3)備份數(shù)據(jù)庫時應該使用_______符號。(4)恢復數(shù)據(jù)庫時應該使用_________符號。(5)需要數(shù)據(jù)庫遷移的可能情況有哪些,請舉兩個例子:_____________________________________________________________________________。物理備份和邏輯備份將一個命令的輸出作為另一個命令的輸入,實現(xiàn)數(shù)據(jù)的傳輸和轉換“>”“<”將一個數(shù)據(jù)庫遷移到另一個數(shù)據(jù)庫管理系統(tǒng)、將一個數(shù)據(jù)庫遷移到不同的服務器或主機判斷題填空題選擇題操作題(1)數(shù)據(jù)庫可以長期使用不備份()(2)數(shù)據(jù)庫可以僅備份數(shù)據(jù)表()(3)使用終端恢復數(shù)據(jù)庫時可以在MySQL外恢復()(4)MySQL與其他數(shù)據(jù)庫軟件進行數(shù)據(jù)遷移時需要提前查看規(guī)范差異。()(5)SQLServer數(shù)據(jù)庫和MySQL數(shù)據(jù)庫是互通的。()XXX√X操作題選擇題填空題判斷題(1)使用MySQLdump工具對數(shù)據(jù)庫學習系統(tǒng)所用數(shù)據(jù)庫db_study進行備份。(2)使用DROPDATABASEdb_study語句刪除數(shù)據(jù)庫。在命令行中執(zhí)行以下命令:mysqldump-u用戶名-p密碼db_study>backup.sql將其中的“用戶名”和“密碼”替換為你的MySQL數(shù)據(jù)庫的用戶名和密碼。上述命令將會將db_study數(shù)據(jù)庫的數(shù)據(jù)和結構導出到一個名為backup.
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 住建委合同范本
- 安全合同范本簡單版
- 全職店員合同范本
- 商務出行接送車輛合同
- 住宅購房定金合同
- 門鎖分銷合同范本
- 土地買賣居間及居間服務費共管合同范本
- 高中信息技術必修一4.1《認識人工智能》教學設計
- 金屬設備租賃合同
- 債券買賣合同
- 部編版六年級語文下冊第一單元《臘八粥》作業(yè)設計
- 乘務大隊客艙服務質(zhì)量
- 托管崗前培訓教學課件
- 機房運維管理制度
- 昆明撫仙湖鰭魚灣棋盤山度假娛樂旅游區(qū)總體規(guī)劃方案樣本
- 人教版一年級下冊數(shù)學第一單元單元作業(yè)設計
- 創(chuàng)魯班獎工程條件及評審要求XX4
- 交通法規(guī)常識課件
- 北師大版數(shù)學四年級下冊簡易方程練習200題及答案
- 課件:認識鏡頭語言1:運鏡方式和常用的鏡頭術語
- (完整版)三年級上冊口算題卡1400道
評論
0/150
提交評論