Shell脚本检测和检查mysql数据库是否存在坏表
时间:2015-09-20 23:24来源:linux.it.net.cn 作者:IT
shell脚本检测和检查mysql数据库是否存在坏表
此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表,适用于RHEL/Centos系列
07 |
echo -e "此脚本的主要用途是检测mysql服务器上所有的数据库或者单独数据库中的坏表\n\n" |
11 |
read -p "输入mysql存储路径: " choose |
15 |
read -p "请输入mysql命令路径: " mysql_version |
17 |
read -p "请选择是检查服务器上所有数据库还是指定的数据库 1:检查全部数据库 |
19 |
if [ $choose == 1 ]; then |
21 |
for directory_list in $( ls ) |
23 |
if [ -d $directory_list ]; then |
24 |
if [ "mysql" != "${directory_list}" -a "test" != "${directory_list}" ]; then |
26 |
echo "当前检查数据库为:" ${directory_list} |
27 |
for file_list in $( ls *.frm) |
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 |
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 |
44 |
read -p "请输入要检查的数据库名称: " db_name |
45 |
cd ${data_path}/${db_name} |
46 |
for file_list in $( ls *.frm) |
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 |
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 |
(责任编辑:IT) |
------分隔线----------------------------