#!/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
相关文章
- 08-04今天写了一个批量检查ip是否ping得通的脚本,备忘
- 08-04利用Shell脚本将MySQL表中的数据转化为json格式
- 08-04检查mysql表是否损坏的脚本
- 08-04数据库周刊28│开发者最喜爱的数据库是什么?阿里云脱口秀聊程序员转型;MySQL update误操作;PG流复制踩坑;PG异机归档;MySQL架构选型;Oracle技能表;Oracle文件损坏处理……
- 08-04检查RPM包是否安装的Shell脚本
- 08-04Navicat for MySQL导出表结构脚本的方法
- 08-04用于截断所有MySql表的shell脚本
- 08-04用户中心mysql数据库表结构的脚本
- 08-04如何检查mySQL DB中的值是否存在?
- 08-04Linux中检查字符串是否为合法IP地址的shell脚本