检查mysql数据库是否存在坏表的shell脚本,mysqlshell


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服务器上所有的数据库或者单独数据库中的坏表nn"

08

pass=123456

09

name=root

10

11

read-p"输入mysql存储路径: "choose

12

data_path=$choose

13

unsetchoose

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

fordirectory_listin$(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

forfile_listin$(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

forfile_listin$(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

相关内容

    暂无相关文章