Mysql備份一般采用mysqldump指令,指令形式一般如下:
$ mysqldump –hhostname –uuser –ppassword–Pport db_name > db_name.sql
預設情況下,不備份存儲過程和函數,若要備份存儲過程和函數,要加上-R選項,若僅備份存儲過程,可用如下指令:
$mysqldump –hhostname –user –ppassword–Pport –R –t –d db_name >db_name_process.sql
其中-t選項表示不寫入表建立資訊(create table語句),-d選項表示不寫入表的任何資訊(如果隻想得到一個表的結構的導出,這是很有用的)。
Mysql還原時,登入資料庫,執行source db_name.sql即可:
mysql>sourcedb_name.sql
當資料量較大的時候,執行速度可能較慢,可以有以下幾種優化方法:
l 執行還原的sql指令前先關閉記錄日志(要以root的權限執行):
mysql>setSQL_LOG_BIN=0
mysql>setSQL_LOG_BIN=1
l 還原過程中,當用showprocesslist檢視正在運作的mysql線程,看到state列為Repair with keycacbe時,表示修複指令正在利用索引緩存一個一個地建立新索引,該操作速度非常緩慢,産生該問題的原因是配置檔案my.cnf中myisam_max_sort_file_size等參數值過小,相應改大即可。my.cnf檔案一般在mysql目錄etc子目錄下,一般可設以下參數如下:
myisam_sort_buffer_size =1024M
tmp_table_size =256M
tmpdir =/back1/dzy_bak
myisam_max_sort_file_size=20G
修改了參數後,需要重新開機mysql,指令如下:
$ mysqladmin -uroot -pshutdown
$ mysqld_safe&
重新開機後,重新執行還原操作,可以發現執行速度會快很多。
本文轉自 Tenderrain 51CTO部落格,原文連結:http://blog.51cto.com/tenderrain/1614329