Verificação e otimização do banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 3.911 ]
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
Nenhum comentário foi encontrado.
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Preciso resolver um erro de DPKG (1)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (2)
Não to conseguindo resolver este problemas ao instalar o playonelinux (1)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta