當我們MySQL數據庫保存重要數據的時候,備份工作極爲重要。本文介紹如何使用mysqldump備份和恢復數據,使用該方法,可以將數據庫中的數據備份成一個文本文件,也可將備份好的數據庫遷移到另一臺的服務器。
(1) 從命令行備份MySQL數據庫
在Linux操作系統中,我們可以使用mysqldump命令進行備份。該命令將連接MySQL服務器並創建SQL轉儲文件,該文件包含了重新創建數據庫所必需的所有SQL語句。該命令的基本語法如下:
$ mysqldump --opt -u [uname] -p[pass] [dbname] > [backupfile.sql]
[uname] 數據庫用戶名
[pass] 數據庫密碼
[dbname] 數據庫名
[backupfile.sql] 數據庫備份文件名
[--opt] mysqldump選項
例如:備份數據庫Tuixin到20131112.sql文件,你可以簡單地使用以下命令:
$ mysqldump -u root -p Tuixin > 20131112.sql
如果有必要一次導出所有的數據庫,可使用--all-databases選項,命令如下:
$ mysqldump -u root -p --all-databases > 20131112.sql
如果mysql數據庫較大,你可能希望能壓縮mysqldump導出的SQL文件,此時僅需使用如下的備份命令,並通過管道連接到gzip,此時便可導出gzip文件。
$ mysqldump -u root -p Tuixin | gzip -9 > 20131112.sql.gz
解壓縮方法如下:
$ gunzip 20131112.sql.gz
(2) 從命令行恢復MySQL數據庫
通過上面的方法,我們已經將數據庫Tuixin備份至20131112.sql文件,接下來,我們恢復Tuixin數據庫:
* 在目標機器上創建相應的數據庫名
* 使用mysql命令載入sql文件
$ mysql -u [uname] -p[pass] [db_to_restore] < [backupfile.sql]
例如,我們現在恢復20131112.sql文件到Tuixin數據庫:
$ mysql -u root -p Tuixin < 20131112.sql
如果是恢復壓縮的備份文件,可遵循以下格式:
$ gunzip < [backupfile.sql.gz] | mysql -u [uname] -p[pass] [dbname]
如果是恢復已經存在的數據庫,此時可使用mysqlimport命令,該命令的語法格式如下:
$ mysqlimport -u [uname] -p[pass] [dbname] [backupfile.sql]
注:MySQL還有一種最簡單的備份方法,就是直接將MySQL中的數據庫文件直接複製出來,這種方法最簡單,速度也最快,但使用這種方法時,最好先停止服務器,以保證數據庫在複製過程中不會發生變化。該方法簡單快速,但不是最好的備份方法,實際情況可能不允許停止MySQL服務器,而且這種方法對InnoDB引擎不適用。