1. 備份資料
像所有資料一樣,MySQL的資料也必須經常備份。由於MySQL資料庫是基於磁碟的檔案,普通的備份系統和例程就能備份MySQL的資料。但是,由於這些檔案總是處於開啟和使用狀態,普通的檔案副本備份不一定總是有效。
下面列出這個問題的可能解決方案。
-
使用命令列實用程式mysqldump轉儲所有資料庫內容到某個外部檔案。在進行常規備份前這個實用程式應該正常執行,以便能正確地備份轉儲檔案。
-
可用命令列實用程式mysqlhotcopy從一個資料庫複製所有資料(並非所有資料庫引擎都支援這個實用程式)。
-
可以使用MySQL的
BACKUP TABLE
或SELECT INTO OUTFILE
轉儲所有資料到某個外部檔案。這兩條語句都接受將要建立的系統檔名,此係統檔案必須不存在,否則會出錯。資料可以用RESTORE TABLE
來複原。
補充
-
首先重新整理未寫資料:
為了保證所有資料被寫到磁碟(包括索引資料),可能需要在進行備份前使用
FLUSH TABLES
語句。
2. 進行資料庫維護
MySQL提供了一系列的語句,可以(應該)用來保證資料庫正確和正常執行。
以下是應該知道的一些語句。
-
ANALYZE TABLE
,用來檢查表鍵是否正確。ANALYZE TABLE返回如下所示的狀態資訊:analyze table orders;
輸出如下:
-
CHECK TABLE
用來針對許多問題對錶進行檢查。在MyISAM表上還對索引進行檢查。CHECK TABLE支援一系列的用於MyISAM表的方式。CHANGED
檢查自最後一次檢查以來改動過的表。EXTENDED
執行最徹底的檢查,FAST
只檢查未正常關閉的表,MEDIUM
檢查所有被刪除的連結並進行鍵檢驗,QUICK
只進行快速掃描。如下所示,CHECKTABLE發現和修復問題:check table orders, orderitems;
輸出如下:
插句題外話
-
如果MyISAM表訪問產生不正確和不一致的結果,可能需要用
REPAIR TABLE
來修復相應的表。這條語句不應該經常使用,如果需要經常使用,可能會有更大的問題要解決。 -
如果從一個表中刪除大量資料,應該使用
OPTIMIZE TABLE
來收回所用的空間,從而最佳化表的效能。
3. 診斷啟動問題
伺服器啟動問題通常在對MySQL配置或伺服器本身進行更改時出現。MySQL在這個問題發生時報告錯誤,但由於多數MySQL伺服器是作為系統程序或服務自動啟動的,這些訊息可能看不到。
在排除系統啟動問題時,首先應該儘量用手動啟動伺服器。MySQL伺服器自身透過在命令列上執行mysqld
啟動。
下面是幾個重要的mysqld命令列選項:
-
--help
顯示幫助—— 一個選項列表; -
--safe-mode
裝載減去某些最佳配置的伺服器; -
--verbose
顯示全文字訊息(為獲得更詳細的幫助訊息與--help
聯合使用); -
--version
顯示版本資訊然後退出。
幾個另外的命令列選項(與日誌檔案的使用有關)在下一節列出。
4. 檢視日誌檔案
MySQL維護管理員依賴的一系列日誌檔案。主要的日誌檔案有以下幾種。
-
錯誤日誌。它包含啟動和關閉問題以及任意關鍵錯誤的細節。此日誌通常名為
hostname.err
,位於data目錄中。此日誌名可用--log-error
命令列選項更改。 -
查詢日誌。它記錄所有MySQL活動,在診斷問題時非常有用。此日誌檔案可能會很快地變得非常大,因此不應該長期使用它。此日誌通常名為
hostname.log
,位於data目錄中。此名字可以用--log
命令列選項更改。 -
二進位制日誌。它記錄更新過資料(或者可能更新過資料)的所有語句。此日誌通常名為
hostname-bin
,位於data目錄內。此名字可以用--log-bin
命令列選項更改。注意,這個日誌檔案是MySQL5中新增的,以前的MySQL版本中使用的是更新日誌。 -
緩慢查詢日誌。顧名思義,此日誌記錄執行緩慢的任何查詢。這個日誌在確定資料庫何處需要最佳化很有用。此日誌通常名為
hostname-slow.log
,位於 data 目錄中。此名字可以用--log-slow-queries
命令列選項更改。
在使用日誌時,可用FLUSH LOGS
語句來重新整理和重新開始所有日誌檔案。