批量多库多表 Optimize Table

78 篇文章 1 订阅
#!/bin/bash
host_name=126.168.6.1
user_name=root
user_pwd=123456
# set -x
need_optmize_table=true
databases_system_arr=("base" "information_schema" "mysql" "performance_schema" "sys");
databases_arr=$(./mysql -h$host_name -u$user_name -p$user_pwd  -A -Bse "show databases");
db_num=0
for database_name in $databases_arr
do
  let db_num=db_num+1
done
# aaaa=$(echo $databases_arr|sed ':jix;N;s/\n/ /g;b jix' )
# echo '===================01=================='
# echo ${databases_system_arr[*]}
# echo ${databases_arr[*]}
# echo ${#databases_system_arr[@]}
# echo ${#databases_arr[@]}
db_num_index=0
for database_name in $databases_arr
do
  let db_num_index=db_num_index+1
  database_name=$(echo $database_name|awk '{printf "%s",$1}'|sed 's/ //g')
  is_system_db=false
      for database_system_name in ${databases_system_arr[@]}
      do
        if [ "$database_name" = "$database_system_name" ]
        then
          is_system_db=true
        else
          echo
        fi
      done
      use=$(./mysql -h$host_name -u$user_name -p$user_pwd -A -Bse " use $database_name ")
      d_tables=$(./mysql -h$host_name -u$user_name -p$user_pwd   $database_name   -A -Bse "show tables")
       if [ $is_system_db = false ]
       then
            tb_num=0
            for d_table in $d_tables
            do
              let tb_num=tb_num+1
            done
             tb_num_index=0
            for table_name in $d_tables
            do
            let tb_num_index=tb_num_index+1
             echo '************1*************'
             echo '======database_name:'$database_name
             echo '======table_name:'$table_name
             echo '======db_num_index/db_num:'$db_num_index'/'$db_num
             echo '======tb_num_index/tb_num:'$tb_num_index'/'$tb_num
             echo '*************2************'
             check_result=$(./mysql -h$host_name -u$user_name -p$user_pwd $database_name -A -Bse   "check table $table_name" | awk '{ print $4 }')
             if [ "$check_result" = "OK" ]
             then
              echo "It's no need to repair table $table_name"
              # echo
             else
              echo $(./mysql -h$host_name -u$user_name -p$user_pwd $database_name -A -Bse "repair table $table_name")
              echo
             fi
             # 优化表,可提高性能
             if [ $need_optmize_table = true ]
             then
              echo $(./mysql -h$host_name -u$user_name -p$user_pwd $database_name -A -Bse  "optimize table $table_name")
              echo '*************************'
             fi
            done
       fi
      done
done

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值