#!/bin/tcsh ################################################################################## # Script de Manutencao do MySQL # # Criado em 19/05/2.006 por Joao Ricardo P. Mendes # # Email: joao.mendes@laq.com.br # # Qualquer alteracao deve ser devidamente documentada!!!! # # Roda-lo periodicamente pelo cron # # Tenha sempre o backup do MySQL antes de rodar esse script # ################################################################################## ########################################################################################################## # Variaveis de ambiente: # # # # myisamchk_bin: Binario do myisamchk # # myisamchk_flags: Flags do myisamchk. Consulte o manual: (http://dev.mysql.com) # # mysql_data_dir: Diretorio do Banco De Dados # # myisam_verify_tables: Tabelas a verificar. Adicionar sempre o *.MYI no final # # mysql_stop_cmd: Script para interromper o MySQL # # mysql_start_cmd: Script para iniciar o MySQL # # mysql_server_daemon: Binario do Servidor MySQL # # tmp_file: Arquivo de Log # # num_tentativas: Numero de tentativas de interromper o MySQL. A Manutencao soh # # eh executada se o MySQL estiver parado # # email: Email para enviar o resultado da rotina # ########################################################################################################## set myisamchk_bin="/usr/local/bin/myisamchk"; set myisamchk_flags="-r -s --sort-index --sort_buffer_size=16M"; set mysql_data_dir="/home/databases/mysql/"; set mysql_verify_tables="/*/*.MYI"; set mysql_stop_cmd="/usr/local/etc/rc.d/mysql-server.sh stop"; set mysql_start_cmd="/usr/local/etc/rc.d/mysql-server.sh start"; set mysql_server_daemon="mysqld" set tmp_file="/tmp/manutencao_mysql.txt"; set num_tentativas=0; set email="suporte@laq.com.br"; rm -rf ${tmp_file}; touch ${tmp_file}; while (`ps aux | grep ${mysql_server_daemon} | grep -v grep | wc -l` != 0 ) if( ${num_tentativas} <= 10 ) then ${mysql_stop_cmd}; else echo "Problemas para encerrar o servidor MySQL." >> ${tmp_file}; echo "Rotina de Backup nao concluida com sucesso." >> ${tmp_file}; cat ${tmp_file} | mail -s "Problemas na Manutencao do MySQL" ${email}; exit @ num_tentativas++; end ${myisamchk_bin} ${myisamchk_flags} ${mysql_data_dir}${mysql_verify_tables} >> ${tmp_file}; if(`cat ${tmp_file} | wc -l` != 0) then cat ${tmp_file} | mail -s "Problemas na Manutencao do MySQL" ${email}; else echo "Manutencao do MySQL executada com sucesso" >> ${tmp_file} cat ${tmp_file} | mail -s "Manutencao MySQL - `date +%d/%m/%y`" ${email}; endif ${mysql_start_cmd};