shell脚本自动修复mysql损坏的表

 更新时间:2015年10月24日 14:35:34   投稿:lijiao  
这篇文章主要介绍了shell脚本如何自动修复mysql损坏的表,需要的朋友可以参考下

问题描述:最近查看mysql数据库服务器日志,老发现有表损坏的错误日志,比如:120724 7:30:48 [ERROR] /data/soft/mysql/libexec/mysqld: Table './blog/wp_links' is marked as crashed and last (automatic?) repair failed 手动修复了表后正常了,没过几天又发现出现错误。

解决方法:于是就写了个脚本来自动修复。是根据一定时间检测一次日志,如果有这样的错误记录时,就对出错的表进行修复来达到自动修复的目的,为了防止日志中错误记录的重复执行,每次检测完日志后特将日志文件清空。

此类脚本的方法其实有很多,只不过这是其中一种而已,有错误之处大家提出来,多多指教。

#!/bin/sh  
 
DB_USER="root" 
DB_PASS="123456" 
DB_NAME="blog" 
LOG_PATH="/data/db/errlog.log" 
TIME=`date +%Y-%m-%d" "%H:%M:%S`  
TABLES=`/usr/bin/awk '/'"repair failed"'/ {print $6}' $LOG_PATH | sort -k1n | uniq -c | awk -F "'" '{print $2}' | awk -F '/' '{print $3}'`  
 
if [ -n "$TABLES" ]  
then  
  for i in `/usr/bin/awk '/'"repair failed"'/ {print $6}' $LOG_PATH | sort -k1n | uniq -c | awk -F "'" '{print $2}' | awk -F '/' '{print $3}'`  
  do 
    /data/soft/mysql/bin/mysql -u$DB_USER -p$DB_PASS $DB_NAME -e "repair TABLE $i" > repair_$i  
    if grep "OK" repair_$i >/dev/null 
    then  
      echo "$TIME repair TABLES $i successful!" 
    else 
      echo "$TIME repair TABLES $i Failed!" 
    fi  
    rm -rf repair_$i  
  done  
else 
  echo "There is no need to repair the table!" 
fi  
:>$LOG_PATH 

通过这篇文章大家应该知道shell脚本是如何自动修复mysql损坏的表了吧,希望大家喜欢。

相关文章

  • linux 中vim的用法讲解

    linux 中vim的用法讲解

    Vim 是 Linux 系统上的最著名的文本/代码编辑器,也是早年的 Vi 编辑器的加强版,而 gVim 则是其 Windows 版。这篇文章主要介绍了linux 中vim的用法讲解的相关资料,需要的朋友可以参考下
    2016-10-10
  • awk中让人郁闷的system()函数

    awk中让人郁闷的system()函数

    system()的结果是直接返回给shell显示了,然后再由awk继续执行后面的程序,这种情况下,if()里留下的其实是system()的执行状态【即0或1】”0”~/^[2 3]/,当然就一直执行else了
    2013-03-03
  • Shell脚本实现关闭多余的tty终端

    Shell脚本实现关闭多余的tty终端

    这篇文章主要介绍了Shell脚本实现关闭多余的tty终端,本文脚本适用centos6系统,请根据自己的服务器系统情况选择使用,需要的朋友可以参考下
    2014-12-12
  • Linux 中 CURL常用命令详解

    Linux 中 CURL常用命令详解

    这篇文章主要介绍了Linux 中 CURL常用命令详解,需要的朋友可以参考下
    2015-10-10
  • Shell中正则表达式及sed和awk常见问题

    Shell中正则表达式及sed和awk常见问题

    本文主要介绍了Shell中正则表达式及sed和awk常见问题,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07
  • linux shell实现转换输入日期的格式

    linux shell实现转换输入日期的格式

    对于用户输入日期的合法性检验,是个很重要的问题,这个例子是简单得取得用户输入的日期,并转换为相应的格式,但不完美,原因请看后文
    2016-08-08
  • linux查看所有用户和查看用户组的方法(修改用户组)

    linux查看所有用户和查看用户组的方法(修改用户组)

    linux里并没有像windows的net user,net localgroup这些方便的命令来管理用户,下面介绍查看所有用户和用户组的方法
    2014-01-01
  • 智能监测自动重启Apache服务器的Shell脚本

    智能监测自动重启Apache服务器的Shell脚本

    这篇文章主要介绍了智能监测自动重启Apache服务器的Shell脚本,实现监控Apache不可用时,第一次强制重启,第二次邮件通知管理员,需要的朋友可以参考下
    2014-07-07
  • Shell脚本实现递归删除空文件夹

    Shell脚本实现递归删除空文件夹

    这篇文章主要介绍了Shell脚本实现递归删除空文件夹,本文直接给出实现代码,需要的朋友可以参考下
    2015-02-02
  • 浅析Shell脚本中的条件判断[ ]与[[ ]]的区别

    浅析Shell脚本中的条件判断[ ]与[[ ]]的区别

    在编写 Shell 脚本时,条件判断是控制脚本流程的重要手段,Shell 提供了多种方式来进行条件判断,其中[ ]和[[ ]]是两种常见的条件测试表达式,下面我们就来看看两者的区别吧
    2024-12-12

最新评论