以前介紹過一個小巧的MYSQL備份PHP指令碼程式,不過那適合沒有MySQL Shell許可權的虛擬機器主機使用者,這裡想講一下更為通用的備份與還原方法,適合有自己主機的朋友。
1、關於備份:我們在使用MySQL中一般都用MyISAM類型的表,這種表是以檔案形式儲存的檔案系統中的;而HEAP類型的表是儲存在記憶體中的,下面的方法是針對MyISAM表的。
1.1、直接拷貝資料庫檔案。首先不推薦使用這種方法,因為拷貝的資料表是針對特定作業系統(硬體環境)的,移到其他系統中有可能會出問題。其次備份時候要停止MYSQL伺服器或者鎖定相應的表,否則如果拷貝過程中正好在插入/改寫資料庫就掛了,不適合需要不間斷的伺服器。這種方法最大好處是方便快捷,備份時候只要拷貝MYSQL資料目錄相應資料庫檔案夾中的所有檔案即可,其中*.frm是描述了表的結構,*.MYD儲存了表的資料記錄,*.MYI則是表的索引。
1.2、使用MySQLDump工具:利用這個程式可以把資料庫匯出成SQL語句形式的文字檔,方便移動到不同系統,還原時候會一條條執行檔案中的SQL語句即可重建資料庫。實際使用時在WINDOWS下CMD裡或者LinuxShell輸入命令:
mysqldump -u user_name -p database_name --option > path:/xxx.sql;斷行符號
;user_name是使用者名稱
;database_name 是資料庫名
;path:/xxx.sql 是儲存備份檔案的路徑與檔案名稱
然後輸入密碼就會匯出資料庫到指定PATH下的.sql檔案了,要保證使用者有足夠許可權訪問相應資料庫。--option是備份時可以指定的一些參數,可以參考MYSQL官方文檔,常用幾個選項:
--opt ——一組常用預設選項,包括--add-drop-table --add-locks --create-options --disable-keys --extended-insert --lock-tables --quick --set-charset
--add-drop-table ——在建立表時候先DROP舊錶,適合覆蓋資料庫
--where——按照條件備份部分記錄,例如:--where="id<1000'"
mysqldump工具的參數功能相當多,還需要好好研究下~
2、關於還原
2.1、對於直接拷貝資料庫檔案的方法,把相應檔案覆蓋回資料目錄即可還原。
2.2、對於DUMP出來的.SQL檔案,可以在MYSQL命令列中輸入:
use target_database;選擇要還原的資料庫,最好建立一個空的
\. path:/xxx.sql;將指定的備份檔案還原到當前資料庫