Verificação e otimização do banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 4.132 ]
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
Backup diário das bases do MySQL
Script de Autenticação simples do Speedy HOme
Identificar,matar e Iniciar novo Processo
Firewall - Satefull inspection com NAT
Nenhum coment�rio foi encontrado.
Comparação entre os escalonadores BFQ e MQ-Deadline (acesso a disco) no Arch e Debian
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Converter os repositórios Debian para o novo formato com as chaves
Instalando Spotify no Debian 13
Realizar overclock no Miyoo Mini (plus ou normal)
Monitoramento pfsense com zabbix (4)
Erro na inicialização do Debian como resolver (5)
Dúvidas sobre a originalidade de conteúdos online (11)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (4)