当前位置: > shell编程 >

Shell脚本检测和检查mysql数据库是否存在坏表

时间:2015-09-20 23:24来源:linux.it.net.cn 作者:IT

shell脚本检测和检查mysql数据库是否存在坏表

此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表,适用于RHEL/Centos系列

 

01 #!/bin/bash
02 #此脚本的主要用途是检测mysql服务器上所有的db或者单独db中的坏表
03 #变量说明 pass mysql账户口令 name mysql账号名称 data_path mysql目录路径
04 #directory_list 目录列表 file_list文件列表 db_name 数据库名称 repair_count单库中待修复的表总数
05 #变量说明 repair_count_all所有库中待修复的表总数 mysql_version mysql版本 _file_name 数据表名称
06  
07 echo -e "此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表\n\n"
08 pass=123456
09 name=root
10  
11 read -p "输入mysql存储路径: "  choose
12 data_path=$choose
13 unset choose
14  
15 read -p "请输入mysql命令路径: " mysql_version
16 #标准输入、标准输出、标准错误输出的文件标示符 由 0、1、2标识
17 read -p "请选择是检查服务器上所有数据库还是指定的数据库 1:检查全部数据库
18 2:只检查指定数据库: " choose
19 if [ $choose == 1 ]; then
20   cd $data_path
21   for directory_list in $(ls)
22     do
23       if [ -d $directory_list ];then
24           if "mysql" != "${directory_list}" -a "test" !="${directory_list}" ];then
25               cd ${directory_list}
26               echo "当前检查数据库为:"${directory_list}
27               for file_list in $(ls *.frm)
28               do
29                 _file_name=${file_list%.frm}
30                 echo -e "\n" >> /tmp/check_table_all.log
31                 ${mysql_version} -h 127.0.0.1 -u${name} -p${pass} -e "
32 check table "${directory_list}.${_file_name} 2>&1 >> /tmp/check_table_all.log
33               done
34               cd ..
35           fi
36       fi
37   done
38              cat /tmp/check_table_all.log | grep "Table is marked as
39 crashed" > /tmp/check_table_repair.log
40              repair_count_all=` awk 'END{print NR}'/tmp/check_table_repair.log `
41              echo -e "所有数据库用有${repair_count_all}张表需要修复!"
42              more  /tmp/check_table_repair.log
43 else
44   read -p "请输入要检查的数据库名称: " db_name
45   cd ${data_path}/${db_name}
46   for file_list in $(ls *.frm)
47     do
48       _file_name=${file_list%.frm}
49       echo -e "\n" >> /tmp/check_${db_name}.log
50       ${mysql_version} -h 127.0.0.1 -u${name} -p${pass} -e "check table
51 "${db_name}.$_file_name 2>&1 >> /tmp/check_${db_name}.log
52     done
53     cat /tmp/check_${db_name}.log | grep "Table is marked as crashed
54 " > /tmp/check_${db_name}_Repair.log  
55     repair_count=`awk 'END{print NR}' /tmp/check_${db_name}_Repair.log`
56     echo -e "${db_name}中共有${repair_count}个表需要修复!\n "
57     more /tmp/check_${db_name}_Repair.log                               
58 fi
shell脚本.png - 大小: 27.24 KB - 尺寸: 1226 x 323 - 点击打开新窗口浏览全图
(责任编辑:IT)
------分隔线----------------------------
栏目列表
推荐内容