Verificação e otimização do banco de dados MySQL
Publicado por Alessandro Librelato (última atualização em 11/07/2016)
[ Hits: 4.206 ]
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
syncnow - sincronizar diretórios com servidor local
Estok SH 1.2b - Controle de Estoque em Shell Script
POSTFIX AUTOMÁTICO COM MYSQL E IPTABLES - SCRIPT DO IPTABLES
Bloqueia MAC Adress salvos na lista
Nenhum comentário foi encontrado.
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









