现在的位置: 首页shell>正文
rss
shell脚本自动修复mysql损坏的表 [原创]
2012年07月24日 shell 评论数 1 ⁄ 被围观 7,302 次+

最近查看mysql数据库服务器日志,老发现有表损坏的错误日志,比如:120724 7:30:48 [error] /data/soft/mysql/libexec/mysqld: table './blog/wp_links' is marked as crashed and last (automatic?) repair failed 手动修复了表后正常了,没过几天又发现出现错误。于是就写了个脚本来自动修复。是根据一定时间检测一次日志,如果有这样的错误记录时,就对出错的表进行修复来达到自动修复的目的,为了防止日志中错误记录的重复执行,每次检测完日志后特将日志文件清空。此类脚本的方法其实有很多,只不过这是其中一种而已,也好久没有写脚本了,写的乱七八槽的,还望有错误之处大家提出来,多多指教。

  1. #!/bin/sh
  2. db_user="root"
  3. db_pass="123456"
  4. db_name="blog"
  5. log_path="/data/db/errlog.log"
  6. time=`date+%y-%m-%d""%h:%m:%s`
  7. tables=`/usr/bin/awk'/'"repairfailed"'/{print$6}'$log_path|sort-k1n|uniq-c|awk-f"'"'{print$2}'|awk-f'/''{print$3}'`
  8. if[-n"$tables"]
  9. then
  10. foriin`/usr/bin/awk'/'"repairfailed"'/{print$6}'$log_path|sort-k1n|uniq-c|awk-f"'"'{print$2}'|awk-f'/''{print$3}'`
  11. do
  12. /data/soft/mysql/bin/mysql-u$db_user-p$db_pass$db_name-e"repairtable$i">repair_$i
  13. ifgrep"ok"repair_$i>/dev/null
  14. then
  15. echo"$timerepairtables$isuccessful!"
  16. else
  17. echo"$timerepairtables$ifailed!"
  18. fi
  19. rm-rfrepair_$i
  20. done
  21. else
  22. echo"thereisnoneedtorepairthetable!"
  23. fi
  24. :>$log_path

本文地址:/54/1180.html
如非注明则为本站原创文章,欢迎转载。转载请注明转载自:moon's blog