檢測mysql表的shell指令碼

2021-09-21 09:53:46 字數 2143 閱讀 8798

此指令碼的主要用途是檢測mysql伺服器上所有的db或者單獨db中的壞表。

檢測完後會在/tmp 目錄下生成日誌檔案。

檢測指定資料庫的效果圖如下:

檢查所有資料庫:

#!/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" != "$" -a "test" != "$" ];then  

cd $ 

echo "當前檢查資料庫為:"$ 

for file_list in $(ls *.frm) 

do _file_name

=$ echo -e "\n" >

>

/tmp/check_table_all.log 

$ -h 127.0.0.1 -u$ -p$ -e "check table "$.$ 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' /tmp/check_table_repair.log ` 

echo -e "所有資料庫用有$張表需要修復!" 

more  /tmp/check_table_repair.log 

else 

read -p "請輸入要檢查的資料庫名稱: " db_name 

cd $/$ 

for file_list in $(ls *.frm) 

do _file_name

=$ echo -e "\n" >

>

/tmp/check_$.log 

$ -h 127.0.0.1 -u$ -p$ -e "check table "$.$_file_name 2>

&1 >

>

/tmp/check_$.log 

done 

cat /tmp/check_$.log | grep "table is marked as crashed" >

/tmp/check_$_repair.log     

repair_count

=`awk 'end' /tmp/check_$_repair.log` 

echo -e "$中共有$個表需要修復!\n " 

more /tmp/check_$_repair.log                                  

fi 

Mysql 指令碼相容性測試 mysql檢測指令碼

1,根據mysql埠3306來判斷服務啟動正不正常 netstat lnt grep 3306 awk f 獲取埠號比較來判斷 bin sh portnum netstat lnt grep 3306 awk f if portnum 3306 then echo db is running els...

linux下mysql冷備份shell指令碼

usr bin env bash 資料庫基礎資訊 db host 127.0.0.1 本機 db name 1 要備份的庫名 db user root 使用者名稱 db pass root 密碼 date date y m d h m s mysql path data mysql bak 備份路徑...

mysql常用備份命令和shell備份指令碼

備份多個資料庫可以使用如下命令 mysqldump uroot p123456 databases test1 test2 test3 home test dump.sql 恢復備份 source dump.sql 在mysql命令列中輸入該命令即可恢復 備份整個資料庫 mysqldump uroo...