#!/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=
name=root
read -p "输入mysql存储路径: " choose
data_path=$choose
unset choose
read -p "请输入mysql命令路径: " mysql_version
#标准输入、标准输出、标准错误输出的文件标示符 由 、、2标识
read -p "请选择是检查服务器上所有数据库还是指定的数据库 1:检查全部数据库 2:只检查指定数据库: " choose
if[ $choose ==];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}>&>>/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 >&>>/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

检查mysql数据库是否存在坏表脚本的更多相关文章

  1. Hibernate连接mysql数据库并自动创建表

    天才第一步,雀氏纸尿裤,Hibernate第一步,连接数据库. Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个 ...

  2. MYSQL数据库、用户、表等基础构建

    MYSQL数据库.用户.表等基础构建: 1.->:创建数据库: 1.1. create schema [数据库名称] default character set utf8 collate utf ...

  3. mysql数据库为什么要分表和分区?

    一般下载的源码都带了MySQL数据库的,做个真正意义上的网站没数据库肯定不行. 数据库主要存放用户信息(注册用户名密码,分组,等级等),配置信息(管理权限配置,模板配置等),内容链接(html ,图片 ...

  4. MySQL数据库性能优化:表、索引、SQL等

    一.MySQL 数据库性能优化之SQL优化 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础 优化目标 减少 IO 次数IO永远是数据库最容易瓶颈的地 ...

  5. 实现对MySQL数据库进行分库/分表备份(shell脚本)

    工作中,往往数据库备份是件非常重要的事情,毕竟数据就是金钱,就是生命!废话不多,下面介绍一下:如何实现对MySQL数据库进行分库备份(shell脚本) Mysq数据库dump备份/还原语法: mysq ...

  6. MySql数据库中,判断表、表字段是否存在,不存在就新增

    本文是针对MySql数据库创建的SQL脚本,别搞错咯. 判断表是否存在,不存在就可新增 CREATE TABLE IF NOT EXISTS `mem_cardtype_resource` ( ... ...

  7. mysql数据库(一):建表与新增数据

    一. 学习目标 理解什么是数据库,什么是表 怎样创建数据库和表(create) 怎样往表里插入数据(insert) 怎样修改表里的数据(update) 怎样删除数据库,表以及数据(delete) 二. ...

  8. 利用mysql数据库中的TMD表修复“is marked as crashed and last (automatic?) repair failed”的错误 Database query error

    ===========================测试成功============================================= 1.页面出现错误:Database query ...

  9. django学习-10.django连接mysql数据库和创建数据表

    1.django模型 Django对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite.Oracle. Django为这些数据库提供了统一的调用API. 我们可以根据自己 ...

随机推荐

  1. Redis指令文档

    连接控制QUIT 关闭连接AUTH (仅限启用时)简单的密码验证 适合全体类型的命令EXISTS key 判断一个键是否存在;存在返回 1;否则返回0;DEL key 删除某个key,或是一系列key ...

  2. hdoj 1898 Sempr == The Best Problem Solver?

    Sempr == The Best Problem Solver? Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/3276 ...

  3. poj1873 The Fortified Forest 凸包+枚举 水题

    /* poj1873 The Fortified Forest 凸包+枚举 水题 用小树林的木头给小树林围一个围墙 每棵树都有价值 求消耗价值最低的做法,输出被砍伐的树的编号和剩余的木料 若砍伐价值相 ...

  4. cluster模块实现多进程-让我的代理服务速度飞起来了

    cluster模块实现多进程 现在的cluster已经可以说完全做到的负载均衡,在做代理服务和http服务器的时候能够讲服务器性能发挥到最大.来看一下具体的实现吧 var cluster = requ ...

  5. jQuery EasyUI, datagrid, treegrid formatter 参数比较 row index

    如题: datagrid中,见官方文档: formatter function The cell formatter function, take three parameter:value: the ...

  6. 为虚机分配指定的IP

    在新建虚机的时候,在此处指定IP,则虚机创建完成后,会使用该IP(需要在地址池范围内)

  7. Android---用Wi-Fi来建立对等连接

    本文译自:http://developer.android.com/training/connect-devices-wirelessly/wifi-direct.html WiFi对等API(P2P ...

  8. SQL Server数据库PIVOT函数的使用详解(二)

    动态的行转列 原理就是 把需要转成列的行拼出来 DECLARE @fieldName VARCHAR(); SET @fieldName=''; SELECT @fieldName = @fieldN ...

  9. [React] React Fundamentals: Component Lifecycle - Updating

    The React component lifecycle will allow you to update your components at runtime. This lesson will ...

  10. 关于NSRunLoop和NSTimer的深入理解

    一.什么是NSRunLoop NSRunLoop是消息机制的处理模式 NSRunLoop的作用在于有事情做的时候使的当前NSRunLoop的线程工作,没有事情做让当前NSRunLoop的线程休眠 NS ...