Verificação e otimização do banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 4.030 ]
Esse é um script que faz uma verificação de forma dinâmica dos bancos no MySQL, após fazer as verificações necessárias, é feito uma otimização para evitar que o banco fique corrompendo indevidamente.
IMPORTANTE! Mantenha o backup sempre em dia ;-)
Enjoy!
#!/bin/bash ############################################ ## Por Alessandro Librelato em 04.07.2016 ## ############################################ ## Versao 1.0 ## ################ ########################### ## VARIAVEIS DE AMBIENTE ## ########################### log=/tmp/mysql_check.log #log mailTo="email@dominio \ -c email@dominio" #email com copia corrompido=no # assume que corrompido eh no quando inicia tabelaDeConexao="information_schema" #qual banco vai ser usada para conectar tabelas="information_schema.tables" #de onde eh pega a lista de batelas listaBancos=/tmp/bancosCheck.txt #arquivos de lista de banco comandos=/tmp/dblista.txt #aquivo com a lista de comando a ser executado hostName=`hostname` # Captura o nome do host # mysqlUser="usuario" # usuario do banco mysqlPass="senha" # senha do banco mysqlHost="localhost" # host onde esta o banco mysqlPort="3306" # porta para conexao de host remoto ############ ## INICIO ## ############ ## Redirecionamento I/O para o log ## touch $log exec 6>&1 exec > $log # stdout redirecionado para $log ## Cabecalho do log ## echo -n "log: " date echo "---------------------------------------------------------" # Caso o arquivo com a lista de bacos e comandos existam, ele deve ser deletado antes do script rodar # if [ -e $comandos ]; then rm -f $comandos fi if [ -e $listaBancos ]; then rm -f $listaBancos fi # Pega a lista dos bancos a serem verificados com algumas excecoes echo "show databases;" | mysql --user=$mysqlUser --password=$mysqlPass --host=$mysqlHost | egrep -v 'Database|mysql|information_schema|performance_schema|sys' > $listaBancos #Lê a lista de bancos linha a linha e vai executando o check e a otimizacao de cada banco bancos=( `cat "${listaBancos}"` ) # Backup com mysqldump lendo o arquivo com a lista de bancos linha a linha for banco in "${bancos[@]}"; do echo "============================================================================" echo "=============================== BANCO $banco ===============================" # Verifica as tabelmas e monta o comando sql check dentro do arquivo com a lista de comandos # mysql -u$mysqlUser -p$mysqlPass $tabelaDeConexao -s -N -e "select concat('check table ', table_name, ';') as cmdcheck from $tabelas where table_schema='$banco' and table_type = 'BASE TABLE';" >> $comandos # Verifica as tabelmas e concatena o comando sql optimize dentro do arquivo com a lista de comandos # mysql -u$mysqlUser -p$mysqlPass $tabelaDeConexao -s -N -e "select concat('optimize table ', table_name, ';') as cmdcheck from $tabelas where table_schema='$banco' and table_type = 'BASE TABLE';" >> $comandos # Faz a verificacao e a otimizacao com os comandos dentro de $comandos mysql -u$mysqlUser -p$mysqlPass $banco < $comandos --verbose done # Deleta o arquivo os arquivos desnecessarios # rm -f $comandos rm -f $listaBancos # Restaura stdout e fecha o arquivo de log # exec 1>&6 6>&- # Testa se o log tem o status corrompido, verificado anteriormente # for i in `cat $log`; do if test $i = "Warning"; then corrompido=yes elif test $i = "Error"; then corrompido=yes fi done # Manda email conforme resultado # if test $corrompido = "yes" ; then cat $log | mail -s "Banco de dados MySql [ERRO ENCONTRADO] para $hostName - `date`" $mailTo else cat $log | mail -s "Banco de dados MySql [TUDO OK] parar $hostName - `date`" $mailTo fi exit 0
Script que gera um relatório diário do sistema!!!
Um super limpador do sistema KDu
Reconexão automática para internet ADSL
Backup-Script2.0 -- Modo Gráfico sem precisar de X
Nenhum comentário foi encontrado.
Resolver problemas de Internet
Como compartilhar a tela do Ubuntu com uma Smart TV (LG, Samsung, etc.)
Descritores de Arquivos e Swappiness
Solução rápida para o problema do Network Manager conectar mas não navegar
Como instalar no Linux Jogos da Steam só para Windows
Instalando o Team Viewer no Debian Trixie - problema no Policykit
Montando e usando iso de um sistema dentro do outro (2)
Criar atalho para uma pasta na area de trabalho no Linux Mint? (0)
Precisa de ajuda com monitoramento ou problemas com Zabbix? (0)