首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 批量檢查修復腳本:自動化表維護實戰

     編輯:MySQL 綜合教學

MySQL 批量檢查修復腳本:自動化表維護實戰

提供一個 Bash 腳本,可自動遍歷指定資料庫的所有表,執行 CHECK TABLE,若發現錯誤則自動執行 REPAIR TABLE,並可選擇性執行 OPTIMIZE TABLE 優化表結構。

腳本完整代碼

#!/bin/bash
host_name=127.0.0.1
user_name=your_user
user_pwd=your_password
database=your_db
need_optmize_table=false

tables=$(/usr/local/webserver/mysql/bin/mysql -h$host_name -u$user_name -p$user_pwd $database -A -Bse "SHOW TABLES")

for table_name in $tables; do
    check_result=$(/usr/local/webserver/mysql/bin/mysql -h$host_name -u$user_name -p$user_pwd $database -A -Bse "CHECK TABLE $table_name" | awk '{ print $4 }')
    if [ "$check_result" = "OK" ]; then
        echo "It's no need to repair table $table_name"
    else
        echo $(/usr/local/webserver/mysql/bin/mysql -h$host_name -u$user_name -p$user_pwd $database -A -Bse "REPAIR TABLE $table_name")
    fi

    # 可選優化
    if [ $need_optmize_table = true ]; then
        echo $(/usr/local/webserver/mysql/bin/mysql -h$host_name -u$user_name -p$user_pwd $database -A -Bse "OPTIMIZE TABLE $table_name")
    fi
done

使用說明

  • 修改 host_name、user_name、user_pwd、database 為實際值。
  • 將 need_optmize_table 設為 true 可啟用優化。
  • 腳本需有 MySQL 客戶端執行權限,建議放入定時任務定期執行。

替代方案:mysqlcheck

也可直接使用 MySQL 內建工具 mysqlcheck:

mysqlcheck -u root -p --auto-repair --optimize --all-databases

此命令可一次檢查、修復並優化所有資料庫,但耗時較長,視資料量而定。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved