Backup automatizado de todas as bases do MySQL
Prezados Colegas,
Saudações pinguianas!
Na empresa que trabalho surgiu a necessidade de criar dois scripts. Um para efetuar backup de todas as bases de dados (de forma individual) de um determinado servidor MySQL e o outro para restaurar, sempre que necessário.
Vou compartilhá-los com vocês, pois pode ser útil para alguém que venha ter essas necessidades.
Script de backup:
#!/bin/bash DATA=`date +%Y/%m/%d` LOG=/var/log/mysqldump-`date +%Y-%m-%d`.log ### VARIAVEIS PARA ENVIO DE E-MAIL ASSUNTO=" MySqlDump - Backup dos Bancos de Dados em `date +%d/%m/%Y`" DESTINATARIO="[email protected]" OUTPUT="/var/backups/mysql/$DATA" ################################################### ## CREDENCIAIS DO MYSQL NO ARQUIVO /root/.my.cnf ## ## ## ## [mysql] ## ## user=root ## ## password='M!nh@S3nh@' ## ## host='ip-ou-dns-do-servidor' ## ## ## ## [mysqldump] ## ## user=root ## ## password='M!nh@S3nh@' ## ## host='ip-ou-dns-do-servidor' ## ## ## ################################################### ### TOPO DO EMAIL echo "Este e-mail e para simples conferencia." > $LOG echo "Nele e mostrado o Log de Saida do Backup do Banco de Dados efetuado no dia `date +%d/%m/%Y`". >> $LOG echo "Essa e uma menssagem automatica, por favor nao responda!" >> $LOG echo "" >> $LOG echo "" >> $LOG mkdir -p $OUTPUT/ databases=`mysql -e "SHOW DATABASES;" | tr -d "| " | grep -v Database` for db in $databases; do if [[ "$db" != "information_schema" && "$db" != "performance_schema" ]] && [[ "$db" != _* ]] ; then echo "Dumping database: $db" 2>&1 >> $log 2>&1 mysqldump --force --opt --single-transaction --triggers --databases --verbose $db > $OUTPUT/$db.sql 2>> $LOG gzip $OUTPUT/$db.sql fi done # ENVIA O E-MAIL COM O LOG cat $LOG | mutt -s "$ASSUNTO" -- $DESTINATARIO # APAGA LOG rm -rf $LOG
Script de restore:
#!/bin/bash ################################################### ## CREDENCIAIS DO MYSQL NO ARQUIVO /root/.my.cnf ## ## ## ## [mysql] ## ## user=root ## ## password='M!nh@S3nh@' ## ## host='ip-ou-dns-do-servidor' ## ## ## ## [mysqldump] ## ## user=root ## ## password='M!nh@S3nh@' ## ## host='ip-ou-dns-do-servidor' ## ## ## ################################################### DATA=`date +%Y/%m/%d` BACKUP="/var/backups/mysql/$DATA" gzip -d $BACKUP/*.gz databases=`ls $BACKUP/ | cut -d'.' -f1` for db in $databases; do mysql -e "DROP DATABASE $db" mysql -e "CREATE DATABASE $db" mysql $db < $BACKUP/$db.sql done mysql -e "FLUSH PRIVILEGES"
Basta agenda-lo no crontab, conforme sua preferência.
Bom, espero sinceramente que isso possa ser útil para alguém.
Esse artigo foi útil? Colabore com o nosso site para podermos continuar dando mais dicas como essa!
Formas de doação:
- Boleto / Cartão de crédito: https//bit.ly/AprendendoLinux
- Pix: [email protected]
- PicPay: @henrique_fagundes
- PayPal: [email protected]
- Bitcoin: bc1qtnn5z058htzy799dslwrpjcdpm0vuta3vrj28l
Favorecido: Luiz Henrique Marques Fagundes