查看mysql表损坏_检查mysql表是否损坏的脚本

#!/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服务器上所有的数据库或者单独数据库中的坏表\n\n"

pass=password

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)

do

_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值