Dump MySQL com relatório de logs por e-mail
Publicado por evandro matos couto (última atualização em 09/05/2014)
[ Hits: 5.982 ]
Homepage: tutoriaisgnulinux.com
O script tem como função gerar o dump de cada database e em seguida confirmar se o dump foi realizado com sucesso. Após o término do dump ele chama uma função chamada envia_email e dispara o e-mail informando o status de cada dump realizado.
Link para download:
http://documentacoes.tutoriaisgnulinux.com/SCRIPTS-PYTHON/dump_mysql.py
http://documentacoes.tutoriaisgnulinux.com/SCRIPTS-PYTHON/envia_email.py
Script dump_mysql.py: #!/usr/bin/python import MySQLdb import os import shutil import commands import datetime import smtplib from email.MIMEText import MIMEText from envia_email import envia_email #INSIRA AQUI OS DADOS DO SERVIDOR MYSQL USER = 'root' PASS = 'senha-bd' HOST = 'localhost' PATH = 'MYSQL_DUMP' BARRA = '/' DOIS_PONTOS = ":" EMAIL= "email@dominio.com.br" #DIRETORIO ONDE DEVERA SALVAR OS ARQUIVOS DE DUMP PWD = os.getcwd() #VARIAVEL QUE DEFINE QUANTOS DIAS DEVE ARMAZENAR O DUMP DIAS_ATRAS = 3 #VERIFICANDO SE EXISTE O DIRETORIO PRINCIPAL if os.path.exists(PATH): log = 'Dir ja existe' else: os.mkdir(PATH) NOW = datetime.datetime.now() HOJE = NOW.strftime('%d-%m') HORARIO_ATUAL = str(NOW.hour) + DOIS_PONTOS + str(NOW.minute) #VERIFICANDO SE EXISTE O DIRETORIO DO DIA if os.path.exists(PWD + BARRA + PATH + BARRA + HOJE): log = 'Dir ja existe' else: os.mkdir(PWD + BARRA + PATH + BARRA + HOJE) #CRIANDO O DIRETORIO DA HORA DO DUMP DIR_HORAIO = (PWD + BARRA + PATH + BARRA + HOJE + BARRA + HORARIO_ATUAL) os.mkdir(DIR_HORAIO) #GERANDO O LOG PARA ENVIO DE EMAIL - RELATORIO DE BACKUP DATA = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') INICIO = DATA + ' Started dump backup' #INICIANDO O SCRIPT E GERANDO O LOG NO ARQUIVO /var/log/BackupPC/LOG DUMP = "_dump" var_file = open(DIR_HORAIO + BARRA + DUMP, "a") var_file.write(INICIO + "\n") #INTERAGINDO COM O MYSQL db = MySQLdb.connect(HOST, USER, PASS) cursor = db.cursor() cursor.execute("show databases") databases = cursor.fetchall() #DUMP TABELA = '<table class="border" align="center" valign="top" width="600">' messages = TABELA for base in databases: DESTINO = DIR_HORAIO + BARRA + base[0]+'.sql.gz' HORARIO = commands.getoutput("date +'%r'") if base[0] != 'information_schema': print base[0] if os.system('mysqldump -x -e -u %s -p%s -h %s --databases %s | gzip > %s' %(USER,PASS,HOST,base[0],DESTINO)) == 0: messages += "<tr><td>%s</td><td>%s</td><td><b style='color:green'>OK</b></td></tr>" \ %(HORARIO,base[0]) else: messages += "<tr><td>%s</td><td>%s</td><td><b style='color:red'>NOT</b></td></tr>" \ %(HORARIO,base[0]) messages += "</table>" print messages #REMOVENDO OS ARQUIVOS E DIRETORIO ANTERIORES AGORA = datetime.date.today() DATAANTIGA = (AGORA - datetime.timedelta(DIAS_ATRAS)).strftime('%d-%m') if os.path.exists(PATH + BARRA + DATAANTIGA): shutil.rmtree(PATH + BARRA + DATAANTIGA) #LOG DATA = datetime.datetime.now().strftime('%Y-%m-%d %H:%M') FIM = DATA + ' Finish dump backup' DUMP = "_dump" var_file = open(DIR_HORAIO + BARRA + DUMP, "a") var_file.write(FIM + "\n") #DISPARANDO EMAIL envia_email(EMAIL,messages) Função envia_email.py: #!/usr/bin/python # LIBS import os import commands import time import smtplib from email.MIMEText import MIMEText # FUNCAO ENVIA EMAIL def envia_email(recebe1,recebe2): # DEFINA AS VARIAVEIS ABAIXO DE ACORDO COM O SEU AMBIENTE SMTP = "smtp.googlemail.com" PORTA = "587" LOGIN = "email@gmail.com" EMAIL = "email@gmail.com" PASS = "senha-aqui" if (PORTA == 465): SMTPSERVER = smtplib.SMTP_SSL PORTA = str(PORTA) ASSUNTO="Dump Mysql - Prod" HOSTNAME = commands.getoutput("hostname") MENSAGEM="Servidor: %s <br />Local do dump: %s<br /><br /><center>Databases%s</center>" %(HOSTNAME,os.getcwd(),recebe2) FROM=EMAIL TO=recebe1 serv=SMTPSERVER() serv.connect(SMTP,PORTA) serv.login(LOGIN,PASS) msg1 = MIMEText("%s"% MENSAGEM,"html") msg1['Subject']=(ASSUNTO) msg1['From']=FROM msg1['To']=TO msg1['Content-type']="text/html" serv.sendmail(FROM,TO, msg1.as_string()) serv.quit() else: SMTPSERVER = smtplib.SMTP PORTA = str(PORTA) ASSUNTO="Dump Mysql - Prod" HOSTNAME = commands.getoutput("hostname") MENSAGEM="Servidor: %s <br />Local do dump: %s<br /><br /><center>Databases%s</center>" %(HOSTNAME,os.getcwd(),recebe2) FROM=EMAIL TO=recebe1 serv=SMTPSERVER() serv.connect(SMTP,PORTA) serv.starttls() serv.login(LOGIN,PASS) msg1 = MIMEText("%s"% MENSAGEM,"html") msg1['Subject']=(ASSUNTO) msg1['From']=FROM msg1['To']=TO msg1['Content-type']="text/html" serv.sendmail(FROM,TO, msg1.as_string()) serv.quit()
Dígito verificador, módulo 11 simples, para uso interno no "postgresql" como
Gerar backups de banco de dados MySQL
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
PC não liga no filtro de linha (3)
Desde que seja DDR3, posso colocar qualquer memória? (3)
Instalar sem formatar, pergunta meio boba. [RESOLVIDO] (7)
Curso gratuito Defesa de redes 10ª Maratona CiberEducação Cisco Brasil... (0)