首頁 > 軟體

MySQL資料備份、還原、資料庫遷移以及表的匯出和匯入

2022-11-09 14:02:41

前言

為了保證資料的安全,需要定期對資料進行備份。備份的方式有很多種,效果也不一樣。如果資料庫中的資料出現了錯誤,就需要使用備份好的資料進行資料還原。這樣可以將損失降至最低。而且,可能還會涉及到資料庫之間的資料匯入與匯出。

一、資料備份

備份資料是資料庫管理中最常用的操作。為了保證資料庫中資料的去安全,資料庫管理員需要定期的進行資料庫備份。一旦資料庫遭到破壞,即通過備份的檔案來還原資料庫。因此,資料備份是很重要的工作。

1、使用mysqldump命令備份

mysqldump命令可以將資料庫中的資料備份成一個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。

mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成一個create語句。然後,將表中的所有記錄轉換成一條insert語句。這些create語句和insert語句都是還原時使用的。還原資料時就可以使用其中的create語句來建立表。使用其中的insert語句來還原資料。

1、備份一個資料庫

使用mysqldump命令備份一個資料庫的基本語法如下:

mysqldump -u username -p dbname table1 table2 ... > backupname.sql

其中,dbname參數列示資料庫的名稱;table1和table2參數列示表的名稱,沒有該引數時將備份整個資料;backupname.sql參數列示備份檔案的名稱,檔名前面可以加上一個絕對路徑。通常將資料庫備份成一個字尾名為sql的檔案。

2、備份多個資料庫

mysqldump命令備份多個資料庫的語法如下:

mysqldump -u username -p --databases dbname1 dbname2 ... > backupname.sql

這裡要加上“–databases”這個選項,然後後面跟多個資料庫的名稱。

3、備份所有資料庫

mysqldump命令備份所有資料庫的語法如下:

mysqldump -u username -p --all-databases > backupname.sql

使用“–all-databases”選項就可以備份所有的資料庫了。

2、直接複製整個資料庫目錄

MySQL有一種最簡單的備份辦法,就是將MySQL中的資料庫檔案直接複製出來。這種方法最簡單,速度也最快。使用這種方法時,最好將伺服器先停止。這樣,可以保證在複製期間資料庫中的資料不會發生變化。如果在複製資料庫的過程中還有資料寫入,就會造成資料不一致。

這種方法雖然簡單快速,但不是最好的備份方法。因為,實際情況可能不允許停止MySQL伺服器。而且,這種方法對InnoDB儲存引擎的表不適用。對於MyISAM儲存引擎的表,這樣備份和還原很方便。但是還原時最好是相同版本的MySQL資料庫,否則可能會存在檔案型別不同的情況。

3、使用mysqlhotcopy工具快速備份

如果備份時不能停止MySQL伺服器,可以採用mysqlhotcopy工具。mysqlhotcopy工具的備份方式比mysqldump命令快。

mysqlhotcopy工具是一個Perl指令碼,主要在Linux作業系統下使用。mysqlhotcopy工具使用lock tables、flush tables和cp來進行快速備份。其工作原理是,先將需要備份的資料庫加上一個讀操作鎖,然後,用flush tables將記憶體中的資料寫回到硬碟上的資料庫中,最後,把需要備份的資料庫檔案複製到目標目錄。使用mysqlhotcopy的命令如下:

mysqlhotcopy [option] dbname1 dbname2 ... backupDir/

其中,dbname1等表示需要備份的資料庫的名稱;backupDir引數指出備份到哪個資料夾下。這個命令的含義就是將dbname1、dbname2等資料庫備份到backDir目錄下。

二、資料還原

管理員的非法操作和計算機的故障都會破壞資料庫檔案。當資料庫遭到這些意外時,可以通過備份檔案將資料庫還原到備份的狀態。這樣可以將損失降低到最小。

1、使用mysql命令還原

管理員通常使用mysqldump命令將資料庫中的資料備份成一個文字檔案。通常這個檔案的字尾名是.sql。需要還原時,可以使用mysql命令來還原備份的資料。

備份檔案中通常包含create語句和insert語句。mysql命令可以執行備份檔案中的create語句和insert語句。通過create語句來建立資料庫和表。通過insert語句來插入備份的資料。mysql命令的基本語法如下:

mysql -u root -p [dbname] < backup.sql

其中,dbname參數列示資料庫名稱。該引數是可選引數,可以指定資料庫名,也可以不指定。指定資料庫名時,表示還原該資料庫下的表。不指定資料庫名時,表示還原特定的一個資料庫。而備份檔案中建立資料庫的語句。

下面使用root使用者備份所有的資料庫。命令如下:

mysql -u root -p [dbname] < backup.sql

2、直接複製到資料庫目錄

之前介紹過一種直接複製資料的備份方法。通過這種方式備份的資料,可以直接複製到MySQL的資料庫目錄下。通過這種方式還原時,必須保證兩個MySQL資料庫的主版本號是相同的。因為只有MySQL資料庫主版本號相同時,才能保證這兩個MySQL資料庫的檔案型別是相同的。而且,這種方式對MyISAM型別的表比較有效。對於InnoDB型別的表則不可用。因為InnoDB表的表空間不能直接複製。

三、資料庫遷移

資料庫遷移就是指將資料庫從一個系統移動到另一個系統上。資料庫遷移的原因是多種多樣的。可能是因為升級了計算機,或者是部署開發的管理系統,或者升級了MySQL資料庫。甚至是換用其他的資料庫。根據上述情況,可以將資料庫遷移大致分為3類。這3類分別是在相同版本的MySQL資料庫之間遷移、遷移到其他版本的MySQL資料庫中和遷移到其他型別的資料庫中。

1、相同版本的MySQL資料庫之間的遷移

只有資料庫表都是MyISAM型別的才能使用這種方式。

最常用和最安全的方式是使用mysqldump命令來備份資料庫。然後使用mysql命令將備份檔案還原到新的MySQL資料庫中。這裡可以將備份和遷移同時進行。假設從一個名為host1的機器中備份出所有的資料庫,然後,將這些資料庫遷移到名為host2的機器上。命令如下:

mysqldump -h name1 -u root --password1 --all-databases | 
mysql -h host2 -u root --password=password2

其中,“|”符號表示管道,其作用是將mysqldump備份的檔案送給mysql命令;“–password=password1”是name1主機上root使用者的密碼。同理,password2是name2主機上的root使用者的密碼。通過這種方式可以直接實現遷移。

2、不同版本的MySQL資料庫之間的遷移

高版本的MySQL資料庫通常都會相容低版本,因此可以從低版本的MySQL資料庫遷移到高版本的MySQL資料庫。對於MySIAM型別的表可以直接複製,也可以使用mysqlhotcopy工具。但是InnoDB型別的表不可以使用這兩種方法。最常用的辦法是使用mysqldump命令來進行備份,然後,通過mysql命令將備份檔案還原到目標MySQL資料庫中。但是,高版本的MySQL資料庫很難遷移到低版本的MySQL資料庫。因為高版本的MySQL資料庫可能有一些新的特性,這些特性是低版本MySQL資料庫所不具有的。資料庫遷移時要特別小心,最好使用mysqldump命令來進行備份,避免遷移時造成資料丟失。

四、表的匯出和匯入

MySQL資料庫中的表可以匯出成文字檔案、XML檔案或者HTML檔案。相應的文字檔案也可以匯入MySQL資料庫中。在資料庫的日常維護中,經常需要進行表的匯出和匯入的操作。

1、用select…into outfile匯出文字檔案

MySQL中,可以使用select…into outfile語句將表的內容匯出成一個文字檔案。其基本語法形式如下:

select [列名] from table [where 語句] into outfile '目標檔案'[option];

該語句分為兩個部分。前半部分是一個普遍的select語句,通過這個select語句來查詢所需要的資料;後半部分是匯出資料的。其中,“目標檔案”引數指出將查詢的記錄匯出到哪個檔案;“OPTION”引數是可以有常用的5個選項。

2、用mysqldump命令匯出文字檔案

mysqldump命令可以備份資料庫中的資料。但是,備份時是在備份檔案中儲存了create語句和insert語句。不僅如此,mysqldump命令還可以匯出文字檔案。其基本的語法形式如下:

mysqldump -u root -pPassword -T 目標目錄 dbname table [option];

其中,Password參數列示root使用者的密碼,密碼緊挨著-p選項;目標目錄引數是指匯出的文字檔案的路徑;dbname參數列示資料庫的名稱;table參數列示表的名稱;

3、用mysql命令匯出文字檔案

mysql命令可以用來登入MySQL伺服器,也可以用來還原備份檔案。同時,mysql命令也可以匯出文字檔案。其基本語法形式如下:

mysql -u root -pPassword -e "select 語句" dbname > C:/name.txt;

其中,Password表示root使用者的密碼;使用-e選項就可以執行SQL語句;“selec語句”用來查詢記錄。C:/name.txt表示匯出檔案的路徑。

4、用load data infile方式匯入文字檔案

MySQL中,可以使用load data infile命令將文字檔案匯入到MySQL資料庫中。其基本語法形式如下:

load data [local] infile file into table table [option];

其中,“local”是在本地計算機中查詢文字檔案時使用的;“file”引數指定了文字檔案的路徑和名稱;“table”引數指標的名稱;

5、用mysqlimport命令匯入文字檔案

MySQL中,可以使用mysqlimport命令將文字檔案匯入到MySQL資料庫中。其基本語法形式如下:

mysqlimport -u root -pPassword [--LOCAL] dbname file [option]

其中,“Password”引數是root使用者的密碼,必須與-p選項緊挨著;“local”是在本地計算機中查詢文字檔案時使用的;“dbname”參數列示資料庫的名稱;“file”引數指定了文字檔案的路徑和名稱;

五、總結

這裡的相關內容還沒有整理完畢,文章後面持續更新,建議收藏。

到此這篇關於MySQL資料備份、還原、資料庫遷移以及表的匯出和匯入的文章就介紹到這了,更多相關MySQL資料備份還原內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com