Verificação e otimização do banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 3.930 ]
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
Criação de ports para slackware
Executando comandos remotos via Dropbox
Agenda de Contatos - Shell Script + MYSQL
Nenhum comentário foi encontrado.
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Tenho dois Link's ( IP VÁLIDOS ), estou tentando fazer o failover... (0)
Pendrive não formata de jeito nenhum (4)
Problemas ao instalar o PHP (10)
Descompactar arquivos winrar no linux (9)
Tem como instalar o gerenciador AMD Adrenalin no Ubuntu 24.04? (12)