【MySQL】數據備份和恢復

目錄

14.1  數據備份

14.1.1  使用mysqldump命令備份

14.1.2  直接複製整個數據庫目錄

14.1.3  使用mysqlhotcopy工具快速備份

14.2  數據還原

14.2.1  使用mysql命令還原

14.2.2  直接複製到數據庫目錄

14.2.3  mysqlhotcopy快速恢復

14.3數據庫遷移

14.3.1  相同版本的MySQL數據庫之間的遷移

14.3.2  不同版本的MySQL數據庫之間的遷移

14.3.3  不同數據庫之間遷移

14.4  表的導出和導入

14.4.1  用SELECT…INTO OUTFILE導出文本文件,需有寫權限,且新文件不存在。

 

14.4.2  用mysqldump命令導出文本文件

14.4.3  用mysql命令導出文本文件

14.4.4  用LOAD DATA INFILE方式導入文本文件

14.4.5  用mysqlimport命令導入文本文件


 

14.1  數據備份

14.1.1  使用mysqldump命令備份

mysqldump是MySQL提供的一個非常有用的數據庫備份工具。在命令行中,使用mysqldump命令執行時,可以將數據庫備份成一個文本文件,該文件中實際上包含了多個CREATE和INSERT語句,使用這些語句可以重新創建表和插入數據。

mysqldump  –u user –h host –ppassword dbname[tbname, [tbname...]]> filename.sql

備份多個數據庫,需要使用—databases,數據庫之間用空格隔開:

mysqldump  –u user –h host –ppassword –databases [dbname dbname]> filename.sql

 

14.1.2  直接複製整個數據庫目錄

因爲MySQL表保存爲文件方式,所以可以直接複製mysql數據庫的存儲目錄及文件進行備份。最好先停止服務,對錶LOCK TABLES,在進行FLUSH TABLES,可以允許其他用戶繼續查詢表。

InnoDB存儲引擎的表不適用。使用這種方法備份的數據最好還原到相同版本的服務器中,因爲不同的版本可能不兼容。

 

14.1.3  使用mysqlhotcopy工具快速備份

mysqlhotcopy是一個Perl腳本,它使用LOCK TABLES、FLUSH TABLES和cp或scp來快速備份數據庫。

只可以備份MyISAM類型的表

Mysqlhotcopy db_name1,…db_namen /path/to/new_directory

 

14.2  數據還原

14.2.1  使用mysql命令還原

對於已經備份的包含CREATE、INSERT語句的文本文件,可以使用mysql命令導入到數據庫中。

MySQL -u user -p [dbname] < filename.sql

已經登錄MySQL則可以先use 數據庫,再source filename導入。

 

14.2.2  直接複製到數據庫目錄

如果數據庫通過複製數據庫文件備份,可以直接複製備份的文件到到MySQL數據目錄下實現還原。通過這種方式還原時,必須保存備份數據的數據庫和待還原的數據庫服務器的主版本號相同。而且這種方式只對MyISAM引擎的表有效。對於InnoDB引擎的表不可用。

 

14.2.3  mysqlhotcopy快速恢復

mysqlhotcopy備份後的文件也可以用來恢復數據庫,在MySQL服務器停止運行時,將備份的數據庫文件拷貝到MySQL存放數據的位置(MySQL的Data文件夾中),重新啓動MySQL服務即可。如果以根用戶執行該操作,必須指定數據庫文件的所有者。

Chown -r mysql.mysql /var/lib/mysql/dbname14.3 

 

14.3數據庫遷移

14.3.1  相同版本的MySQL數據庫之間的遷移

相同版本的MySQL數據庫之間的遷移就是在主版本號相同的MySQL數據庫之間進行數據庫移動。遷移過程其實就是在源數據庫備份和目標數據庫還原過程的組合。

 

14.3.2  不同版本的MySQL數據庫之間的遷移

因爲數據庫升級等原因,需要將較舊版本MySQL數據庫中的數據遷移到的較新版本的數據庫中。備份,卸載,安裝新版本,恢復。InnoDB多使用MySQLdump導出和恢復。

 

14.3.3  不同數據庫之間遷移

不同類型的數據庫之間的遷移,是指從把MySQL的數據庫轉移到其他類型的數據庫,例如從MySQL遷移到ORACLE,從ORACLE遷移到MySQL和從MySQL遷移到sqlserver等。

需要了解不同數據庫間的架構差異,對不同的語句進行映射處理。

例如WINDOWS下面,可使用myODBC實現MySQL和SQLserver之間的遷移。或者MySQL官方的mysql migration toolkit可以在個數據庫間遷移。

 

14.4  表的導出和導入

14.4.1  用SELECT…INTO OUTFILE導出文本文件,需有寫權限,且新文件不存在。

MySQL數據庫導出數據時,允許使用包含導出定義的SELECT語句進行數據的導出操作。該文件被創建到服務器主機上。

SELECT columnlist  FROM table

       WHERE condition

      INTO OUTFILE ‘filename’  [OPTIONS]

 

14.4.2  用mysqldump命令導出文本文件

mysqldump工具不僅可以將數據導出爲包含CREATE、INSERT的sql文件,也可以導出爲純文本文件。

mysqldump -T path-u root -p

       dbname [tables] [OPTIONS]

 

14.4.3  用mysql命令導出文本文件

mysql是一個功能豐富的工具命令,還可以在命令行模式下執行SQL指令將查詢結果導入到文本文件中。可以在客戶機上導出到文本文件。

mysql -u root -p

       --execute=”SELECT 語句” dbname

       > filename.txt

 

14.4.4  用LOAD DATA INFILE方式導入文本文件

LOAD DATA INFILE語句用於高速地從一個文本文件中讀取行,並裝入一個表中。文件名稱必須爲一個文字字符串。

LOAD DATA  INFILE 'filename.txt'

       INTO TABLE tablename [OPTIONS]   [IGNORE number LINES]

 

14.4.5  用mysqlimport命令導入文本文件

mysqlimport可以導入文本文件,使用mysqlimport不需要登錄MySQL客戶端。使用mysqlimport語句需要指定所需的選項、導入的數據庫名稱以及導入的數據文件的路徑和名稱。

mysqlimport –u root –p

       dbname filename.txt [OPTIONS]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章