提示:建立一個數據庫表維護規范 在一個定期基礎而非等到問題出現才實施數據庫表的檢查是一個好主意。應該考慮到建立一個預防性維護的時間表,以協助自動問題,是你可以采取措施進行修正: 執行常規的數據庫備份並允許更新日志。 安排定期的常規表檢查。通過檢查表,將減少使
3. 如何執行腳本
假定你將腳本存為check_tables,應該確保它是可執行的,當然建議你首先切換到專用戶MySQL:
$su MySQL
$vi check_tables(編輯腳本,你也可以使用你喜歡的編輯器)
$chmod +x check_tables
手工執行,檢測你的腳本是否有錯誤:
$check_tables
在理想情況下應該沒有輸出結果。如果系統不支持外部鎖定,游客蒽那個服務器將在你檢查表時改變它。此時,腳本可能會把實際沒有問題的表報告呈有問題的。如果系統能夠支持外部鎖定,則該問題就不會出現。
在unix中用cron定期檢查表
以下將說明如何建立腳本,使它通過cron並在系統啟動期間執行。在這小節的例子中,筆者假定把腳本安裝在/usr/local/MySQL/bin中,你需要修改該過程來檢查每個服務器數據目錄中的表。你可以使用不同的check_tables拷貝來進行,或者通過修改它來接受一個命令行參數進行,該參數指定了想要檢查的數據目錄。
假定對MySQL用戶從crontab文件中調用腳本check_tables。
1. 首先用該用戶的身份注冊
$su MySQL
2. 生成一個臨時文件,捕獲已經調度的任務
$crontab –l>/tmp/entrIEs
3. 在生成的文件最後一行添加內容
把這一行0 0 * * 0 /usr/local/MySQL/bin/check_tables加到臨時文件的最後一行:
$echo “0 0 * * 0 /usr/local/MySQL/bin/check_tables” >>/tmp/entrIEs
它告訴cron在每個星期日的凌晨0時運行此選項。可以按要求改變時間或安排。有關這些選項的格式,參閱crontab的手冊頁。
4. 重新安排調度
$crontab /tmp/entrIEs
如果檢查後有任何信息,cron作業通常生成一個郵件消息給用戶。由於使用--silent選項,只有表存在錯誤時,才會有輸出,也才會有郵件信息,因此不會產生大量無用郵件信息。(你現在應該明白,腳本采用--silent選項的原因