zoukankan      html  css  js  c++  java
  • 检查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服务器上所有的数据库或者单独数据库中的坏表 "
    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 " " >> /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 " " >> /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}个表需要修复! "
        more /tmp/check_${db_name}_Repair.log                                 
    fi

  • 相关阅读:
    Python分析网页中的<a>标签
    Python3.X爬虫
    如何使你的窗体样式固定,不因系统设定而变化
    C# 窗体内有子控件时鼠标检测
    VS新建项目工具箱图标丢失问题
    在c#中使用bitblt显示图片
    DotNetBar 中Ribbon汉化
    汉化DotNetBar中控件的系统文本
    castle动态代理的使用
    FastReport 套打全攻略
  • 原文地址:https://www.cnblogs.com/yuzhoushenqi/p/7357551.html
Copyright © 2011-2022 走看看