此腳本的主要用途是檢測mysql伺服器上所有的db或者單獨db中的壞表。
檢測完後會在/tmp 目錄下生成日志檔案。
檢測指定資料庫的效果圖如下:
<a href="http://blog.51cto.com/attachment/201302/161803254.png" target="_blank"></a>
檢查所有資料庫:
<a href="http://blog.51cto.com/attachment/201302/161714598.png" target="_blank"></a>
#!/bin/bash
#此腳本的主要用途是檢測mysql伺服器上所有的db或者單獨db中的壞表
#變量說明 pass mysql賬戶密碼 name mysql賬号名稱 data_path mysql目錄路徑 directory_list 目錄清單 file_list檔案清單 db_name 資料庫名稱 repair_count單庫中待修複的表總數
#變量說明 repair_count_all所有庫中待修複的表總數 mysql_version mysql版本 _file_name 資料表名稱
echo -e "此腳本的主要用途是檢測mysql伺服器上所有的db或者單獨db中的壞表\n\n"
pass=123456
name=root
read -p "輸入mysql存儲路徑: " choose
data_path=$choose
unset choose
read -p "請輸入mysql指令路徑: " mysql_version
#标準輸入、标準輸出、标準錯誤輸出的檔案标示符 由 0、1、2辨別
read -p "請選擇是檢查伺服器上所有資料庫還是指定的資料庫 1:檢查全部資料庫 2:隻檢查指定資料庫: " choose
if [ $choose == 1 ]; then
cd $data_path
for directory_list in $(ls)
do
if [ -d $directory_list ];then
if [ "mysql" != "${directory_list}" -a "test" != "${directory_list}" ];then
cd ${directory_list}
echo "目前檢查資料庫為:"${directory_list}
for file_list in $(ls *.frm)
do
_file_name=${file_list%.frm}
echo -e "\n" >> /tmp/check_table_all.log
${mysql_version} -h 127.0.0.1 -u${name} -p${pass} -e "check table "${directory_list}.${_file_name} 2>&1 >> /tmp/check_table_all.log
done
cd ..
fi
fi
done
cat /tmp/check_table_all.log | grep "Table is marked as crashed" > /tmp/check_table_repair.log
repair_count_all=` awk 'END{print NR}' /tmp/check_table_repair.log `
echo -e "所有資料庫用有${repair_count_all}張表需要修複!"
more /tmp/check_table_repair.log
else
read -p "請輸入要檢查的資料庫名稱: " db_name
cd ${data_path}/${db_name}
for file_list in $(ls *.frm)
_file_name=${file_list%.frm}
echo -e "\n" >> /tmp/check_${db_name}.log
${mysql_version} -h 127.0.0.1 -u${name} -p${pass} -e "check table "${db_name}.$_file_name 2>&1 >> /tmp/check_${db_name}.log
done
cat /tmp/check_${db_name}.log | grep "Table is marked as crashed" > /tmp/check_${db_name}_Repair.log
repair_count=`awk 'END{print NR}' /tmp/check_${db_name}_Repair.log`
echo -e "${db_name}中共有${repair_count}個表需要修複!\n "
more /tmp/check_${db_name}_Repair.log
fi
本文轉自1594cqb 51CTO部落格,原文連結:http://blog.51cto.com/wolfchen/1133919,如需轉載請自行聯系原作者