天天看點

Mysql備份與還原及優化方法

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