<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thiago Lopes</title>
    <description>The latest articles on DEV Community by Thiago Lopes (@thiagoolopess).</description>
    <link>https://dev.to/thiagoolopess</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1449066%2F314f7766-70fa-425b-ac80-7b1dd5fc499a.jpeg</url>
      <title>DEV Community: Thiago Lopes</title>
      <link>https://dev.to/thiagoolopess</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thiagoolopess"/>
    <language>en</language>
    <item>
      <title>Backup Automatizado MySQL com ShellScript</title>
      <dc:creator>Thiago Lopes</dc:creator>
      <pubDate>Thu, 25 Apr 2024 12:35:50 +0000</pubDate>
      <link>https://dev.to/thiagoolopess/backup-automatizado-mysql-com-shellscript-11a</link>
      <guid>https://dev.to/thiagoolopess/backup-automatizado-mysql-com-shellscript-11a</guid>
      <description>&lt;p&gt;&lt;strong&gt;---Script-Backup-Database-MySQL --Th14go--&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Script para backup de várias databases MySQL do mesmo servidor,o script contem informações em todo seu escopo, o backup é executado, utilizando o mysqldumb do próprio MySQL, após correr o backup de todas as databases, é iniciado o processo de compactação.É gerado LOG de backup e compactação, para auditoria de execução do script posteriormente, fique a vontade de dar dicas e melhorar o script !&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vamos preparar todo o ambiente antes de executar o script&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuração para enviar log por e-mail&lt;/li&gt;
&lt;li&gt;Rotina de Backup&lt;/li&gt;
&lt;li&gt;Validar váriaveis do script&lt;/li&gt;
&lt;li&gt;Enviando database para cloud Mega.nz&lt;/li&gt;
&lt;li&gt;Backup Somente Dados sem Estrutura Database&lt;/li&gt;
&lt;li&gt;Ignorar Table em Backup&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1.Configuração para enviar log por e-mail&lt;/strong&gt;&lt;br&gt;
sudo apt-get install mutt&lt;br&gt;
Editar Arquivo de Configuração&lt;br&gt;
nano ~/.muttrc&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colar parâmetros abaixo.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nome do Remetente#&lt;br&gt;
set realname="Backup por e-mail"&lt;/p&gt;

&lt;p&gt;Email do Remetente#&lt;br&gt;
set from="&lt;a href="mailto:seuemail@gmail.com"&gt;seuemail@gmail.com&lt;/a&gt;;"&lt;/p&gt;

&lt;p&gt;Usuario da conta de email#&lt;br&gt;
set my_user=&lt;a href="mailto:seuemail@gmail.com"&gt;seuemail@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Senha da conta de email#&lt;br&gt;
set my_pass='senhaemail'&lt;/p&gt;

&lt;p&gt;Autenticacao no servidor smtp de email, nesse caso do gmail.com#&lt;br&gt;
set smtp_url=smtps://$my_user:$&lt;a href="mailto:my_pass@smtp.gmail.com"&gt;my_pass@smtp.gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Camada de segurança, requerida pelo gmail.com
&lt;/h1&gt;

&lt;p&gt;set ssl_force_tls = yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Rotina de Backup - Crontab&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;root@th14golop35:~$ crontab -e # Inicia tarefa com o agendador de tarefas crontab, em "root"&lt;/p&gt;

&lt;p&gt;00 19 * * * /bck-mysql.sh #Backup será executado todos os dias as 19:00hr&lt;/p&gt;

&lt;p&gt;Para garantir renicie o serviço do crontab&lt;/p&gt;

&lt;p&gt;service crontab restart&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Editar Váriaveis do arquivo bck-mysql.sh&lt;/strong&gt;&lt;br&gt;
Variáveis para SQL dos BCK&lt;br&gt;
Variáveis do MySQL#&lt;br&gt;
Databases#&lt;/p&gt;

&lt;p&gt;Configurar Mega.nz para envio de database para cloud&lt;br&gt;
Instalar MegaCMD conforme distro. clique aqui&lt;br&gt;
Comandos Mega&lt;br&gt;
mega-login &lt;a href="mailto:emailcadastrado@gmail.com"&gt;emailcadastrado@gmail.com&lt;/a&gt; suasenha&lt;br&gt;
mega-put arquivo.txt /diretorioMega -- Enviar Arquivos&lt;br&gt;
mega-rm arquivo.txt /diretorioMega --Excluir Arquivos&lt;/p&gt;

&lt;p&gt;Se você optar para que o backup seja feito somente com dados acrescente o comando "--no-create-info" no final da linha do dump ficando assim:&lt;br&gt;
Ex: mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEI --no-create-info &amp;gt; $BASEI&lt;/p&gt;

&lt;p&gt;Comando para ignorar table em Backup faça uma variavel para armazenar o valor da database.table&lt;/p&gt;

&lt;p&gt;ex: ignore=database.table1&lt;/p&gt;

&lt;p&gt;ex: mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEI --no-create-info --ignore-table=$ignore &amp;gt; $BASEI&lt;/p&gt;

&lt;p&gt;Execute ./bck-mysql.sh ou sh bck-mysql.sh&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;---Script-Backup-Database-MySQL --Th14go--&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Script to backup multiple MySQL databases,the script contains information throughout its scope, the backup is performed using mysqldumb from the MySQL itself, after running the backup of all databases, the compression process starts.Backup and compression LOG is generated for auditing the script afterwards, feel free to give tips and improve the script!&lt;/p&gt;

&lt;p&gt;Let's prepare the whole environment before running the script&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Configuration to send log by email&lt;/li&gt;
&lt;li&gt;Backup routine&lt;/li&gt;
&lt;li&gt;Validate script variants&lt;/li&gt;
&lt;li&gt;Config Mega.nz send file to Cloud&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;1.Configuration to send log by email&lt;/strong&gt;&lt;br&gt;
sudo apt-get install mutt&lt;br&gt;
Edit Configuration File&lt;br&gt;
nano ~ / .muttrc&lt;/p&gt;

&lt;p&gt;Paste parameters below.&lt;/p&gt;

&lt;p&gt;Sender Name&lt;br&gt;
set realname = "E-mail Backup"&lt;/p&gt;

&lt;p&gt;Sender Email&lt;br&gt;
set from = "&lt;a href="mailto:seuemail@gmail.com"&gt;seuemail@gmail.com&lt;/a&gt;;"&lt;/p&gt;

&lt;p&gt;Email account user&lt;br&gt;
set my_user=&lt;a href="mailto:seuemail@gmail.com"&gt;seuemail@gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Email account password&lt;br&gt;
set my_pass = 'passwordemail'&lt;/p&gt;

&lt;p&gt;Authentication on smtp mail server, in this case gmail.com&lt;br&gt;
set smtp_url = smtps: // $ my_user: $&lt;a href="mailto:my_pass@smtp.gmail.com"&gt;my_pass@smtp.gmail.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Security layer required by gmail.com&lt;br&gt;
set ssl_force_tls = yes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Backup routine - Crontab&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;root @ th14golop35: ~ $ crontab -e # Start task with crontab task scheduler, under "root"&lt;/p&gt;

&lt;p&gt;00 19 * * * /bck-mysql.sh #Backup will run every day at 7:00 pm&lt;/p&gt;

&lt;p&gt;To ensure restart the crontab service&lt;/p&gt;

&lt;p&gt;service crontab restart&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Editing Bck-mysql.sh File Variables&lt;/strong&gt;&lt;br&gt;
BCK SQL Variables#&lt;br&gt;
MySQL Variables#&lt;br&gt;
Databases#&lt;/p&gt;

&lt;p&gt;Config Mega.nz to send file Cloud&lt;br&gt;
Install MegaCMDClick Here&lt;br&gt;
Command Mega&lt;br&gt;
mega-login &lt;a href="mailto:emailregister@gmail.com"&gt;emailregister@gmail.com&lt;/a&gt; password&lt;br&gt;
mega-put file.txt /path/toMega -- Send File&lt;br&gt;
mega-rm arquivo.txt /path/ToMega --Delete File&lt;/p&gt;

&lt;p&gt;How to use.&lt;/p&gt;

&lt;h1&gt;
  
  
  ./bck-mysql.sh ou sh bck-mysql.sh
&lt;/h1&gt;

&lt;p&gt;----SCRIPT------&lt;/p&gt;

&lt;h1&gt;
  
  
  !/bin/sh
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Backup Databases MySQL C/ LOGS -- Criado por: Th14go
&lt;/h1&gt;

&lt;h1&gt;
  
  
  GITHUB- &lt;a href="https://github.com/Th14go/script-bck-mysql"&gt;https://github.com/Th14go/script-bck-mysql&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;DATA=&lt;code&gt;date +%Y-%m-%d-%H.%M&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Local onde o arquivo de log sera armazenado.
&lt;/h1&gt;

&lt;p&gt;SYNC_LOG=/var/log/bckmysql/bckmysql$DATA.log&lt;/p&gt;

&lt;h1&gt;
  
  
  Variáveis para SQL dos BCK
&lt;/h1&gt;

&lt;p&gt;BASEI="/mnt/backup/MySQL/BASEI-$DATA.sql"&lt;br&gt;
BASEII="/mnt/backup/MySQL/BASEII-$DATA.sql"&lt;br&gt;
BASEIII="/mnt/backup/MySQL/BASEIII-$DATA.sql"&lt;br&gt;
BASEIV="/mnt/backup/MySQL/BASEIV-$DATA.sql"&lt;br&gt;
BASEV="/mnt/backup/MySQL/BASEV-$DATA.sql"&lt;/p&gt;

&lt;h1&gt;
  
  
  Variáveis do MySQL
&lt;/h1&gt;

&lt;p&gt;HOST="localhost"&lt;br&gt;
USER="root"&lt;br&gt;
PASSWORD="suasenha"&lt;/p&gt;

&lt;h1&gt;
  
  
  DATABASES
&lt;/h1&gt;

&lt;p&gt;DATABASEI="BASEI"&lt;br&gt;
DATABASEII="BASEII"&lt;br&gt;
DATABASEIII="BASEIII"&lt;br&gt;
DATABASEIV="BASEIV"&lt;br&gt;
DATABASEV="BASEV"&lt;/p&gt;

&lt;h1&gt;
  
  
  EXECUTANDO BACKUP DE DATABASEI
&lt;/h1&gt;

&lt;p&gt;echo "***************************&lt;strong&gt;&lt;em&gt;" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Inicio do Backup Database BASEI" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEI &amp;gt; $BASEI&lt;br&gt;
echo "Fim do Backup da  Database BASEI" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "&lt;/em&gt;&lt;/strong&gt;***************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Inicio do Backup Database BASEII" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  EXECUTANDO BACKUP DE DATABASEII
&lt;/h1&gt;

&lt;p&gt;mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEII &amp;gt; $BASEII&lt;br&gt;
echo "Fim do Backup da  Database BASEII" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "******************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Inicio do Backup Database BASEIII" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  EXECUTANDO BACKUP DE DATABASEIII
&lt;/h1&gt;

&lt;p&gt;mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEII &amp;gt; $BASEIII&lt;br&gt;
echo "Fim do Backup da  Database BASSEIII" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "******************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Inicio do Backup Database BASEIV" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  EXECUTANDO BACKUP DE DATABASEIV
&lt;/h1&gt;

&lt;p&gt;mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEIV &amp;gt; $BASEIV&lt;br&gt;
echo "Fim do Backup da  Database BASEIV" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "******************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Inicio do Backup Database BASEV" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  EXECUTANDO BACKUP DE DATABASEV
&lt;/h1&gt;

&lt;p&gt;mysqldump --routines --triggers -h $HOST -u $USER -p$PASSWORD $DATABASEV &amp;gt; $BASEV&lt;br&gt;
echo "Fim do Backup da  Database BASEV" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "******************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  Compacta Databases Mysql
&lt;/h1&gt;

&lt;p&gt;echo "******************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Inicio da compactacao do Backup" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  echo "******************************" &amp;gt;&amp;gt; $SYNC_LOG
&lt;/h1&gt;

&lt;p&gt;cd /mnt/backup/MySQL/&lt;br&gt;
tar -cvzf DATABASES-$DATA.tar.gz &lt;em&gt;sql &lt;br&gt;
echo "&lt;/em&gt;**************************&lt;strong&gt;&lt;em&gt;" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "Fim da compactacao" &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "&lt;/em&gt;&lt;/strong&gt;***************************" &amp;gt;&amp;gt; $SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  Deleta Arquivos SQL  Databases
&lt;/h1&gt;

&lt;p&gt;rm  -rvf /mnt/backup/MySQL/*.sql&lt;/p&gt;

&lt;h1&gt;
  
  
  Sincroniza com diretorio do servidor em diretorio remoto os LOGS
&lt;/h1&gt;

&lt;p&gt;rsync -Cravp /var/log/bckmysql /mnt/backup/LOG/&lt;/p&gt;

&lt;h1&gt;
  
  
  Apagando-Backup-com+de10dias
&lt;/h1&gt;

&lt;p&gt;echo "********&lt;strong&gt;&lt;em&gt;INICIO REMOÇÃO REMOTA&lt;/em&gt;&lt;/strong&gt;*********&lt;strong&gt;&lt;em&gt;"&amp;gt;&amp;gt;$SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
find /mnt/backup/MySQL -mtime +10 -fprint /mnt/backup/LOG/logdelete&lt;code&gt;date +%F&lt;/code&gt;.txt  -exec rm -rf {} \; &amp;gt;&amp;gt;$SYNC_LOG&lt;br&gt;
date &amp;gt;&amp;gt; $SYNC_LOG&lt;br&gt;
echo "&lt;/em&gt;&lt;/strong&gt;****&lt;strong&gt;&lt;em&gt;FIM REMOÇÃO REMOTA&lt;/em&gt;&lt;/strong&gt;****************"&amp;gt;&amp;gt;$SYNC_LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  Envia Database compactada para cloud Mega
&lt;/h1&gt;

&lt;p&gt;echo "*****&lt;strong&gt;&lt;em&gt;Upload Arquivos para Mega&lt;/em&gt;&lt;/strong&gt;&lt;em&gt;"&amp;gt;&amp;gt; $LOG&lt;br&gt;
mega-login &lt;a href="mailto:seuemail@gmail.com"&gt;seuemail@gmail.com&lt;/a&gt; suasenha&lt;br&gt;
mega-put /mysqlbackup/&lt;/em&gt; /bck-database &amp;gt;&amp;gt; $LOG&lt;/p&gt;

&lt;h1&gt;
  
  
  Enviar log por email
&lt;/h1&gt;

&lt;p&gt;echo 'Anexo log de Backup' | mutt -s 'Backup Databases MySQL' -a /var/log/bckmysql/bckmysql-$DATA.log -- &lt;a href="mailto:seuemail@gmail.com.br"&gt;seuemail@gmail.com.br&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
