检查mysql数据库是否存在坏表的shell脚本
时间:2015-02-13 14:20 来源: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
(责任编辑:IT)
shell脚本检测和检查mysql数据库是否存在坏表 此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表,适用于RHEL/Centos系列
![]() (责任编辑:IT) |