Hoje é 25/11/20 - Dia da Baiana do Acarajé; Dia Internacional do Doador de Sangue;


13/11/2020
Como fazer backup do servidor de banco de dados MySQL

Tipo de notícia: Desenvolvimento

Como fazer backup automático do MySQL (backup de triggers e stored procedures, agendamento cron, versionamento por data e limpeza de backups antigos).

Backup simples

Caso a pessoa desejasse apenas um comando que pudesse executar manualmente, sob demanda, para realização do backup, a linha abaixo realiza o backup completo do banco de dados MySQL (incluindo triggers e stored procedures). Basta substituir dbusername, dbpassword e /caminho pelas respectivas informações de usuário, senha e caminho da pasta onde será armazenado o backup.

/usr/bin/mysqldump –routines [–triggers] -u dbusername -p’dbpassword’ dbname > /caminho/backup.sql

Backup com a data de criação

Você deve ter percebido que o backup, no comando anterior, é armazenado no arquivo backup.sql. Sendo assim, a cada nova execução do comando, o backup seria sobrescrito. Caso não deseje que isso ocorra, basta alterar o nome do arquivo a cada execução.

Agora imagine que você resolve que vai deixar agendado para executar o backup todo dia. Fica inviável renomear o arquivo manualmente a cada execução, certo? Neste caso, melhor criar um nome dinâmico para o arquivo do backup.

É exatamente isso que a opção $(date +%F) faz! E mais, esta opção resulta na data no formato AAAA-MM-DD, ou seja, 4 dígitos do ano, 2 do mês e mais 2 do dia. Resultado: os arquivos ficam fáceis de ser ordenados por data, sem precisar usar a data de modificação, mas apenas ordenando por nome mesmo.

O comando abaixo, depois de ajustado como já indicamos no item 1, pode ser agendado para executar todo dia, sem risco de sobrescrever os arquivos de backups anteriores.

/usr/bin/mysqldump –routines [–triggers] -u dbusername -p’dbpassword’ dbname >/caminho/backup_DBNAME/$(date +%F)_full_DBNAME.sql

Apagar arquivos anteriores

A depender da frequência de backup do banco de dados (há empresas que precisam de vários backups por dia!), haverá uma quantidade grande de backups antigos, e neste caso pode fazer sentido apagar os mais antigos (talvez fazendo um backup em fita antes).

Para isso, o comando abaixo permite localizar e remover automaticamente, os arquivos anteriores a 7 dias, considerando a data de modificação do arquivo de backup. Caso deseje remover backups mais antigos (depois de 30 dias, por exemplo), basta alterar o valor 7 para o valor apropriado.

find /caminho/backup_DBNAME/ -type f -mtime +7 -exec rm {} +

Unir o backup por data e apagar arquivos anteriores

gora que já pensamos nas várias questões relativas à rotina de backup, que tal juntar tudo num script único backup_mysql.sh?

#!/bin/bash
/usr/bin/mysqldump –routines [–triggers] -u dbusername -p’dbpassword’ dbname >/caminho/backup_DBNAME/$(date +%F)_full_DBNAME.sql
find /caminho/backup_DBNAME/ -type f -mtime +7 -exec rm {} +

O script acima vai fazer o backup do banco, salvar o arquivo por data, e depois apagar os backups anteriores a uma semana.

Importante! Não esquecer de dar permissão de execução no script com o comando “chmod +x backup_mysql.sh”.

Utilizar o chron para agendamento

Execute o comando “crontab -e” para incluir a execução do backup no usuário desejado (root ou outro). Você será levado para um editor com um conteúdo semelhante ao abaixo:

# Minute Hour Day of Month Month Day of Week Command
# (0-59) (0-23) (1-31) (1-12 or Jan-Dec) (0-6 or Sun-Sat)

Este conteúdo indica o formato de agendamento do cron, onde você deve informar minuto, hora, dia do mês, mês, dia da semana que o comando deve ser executado.

30 4 * * 1-6 /caminho/backup_mysql.sh

O backup será executado às 4h30min da manhã, todos os dias do mês, todos os meses, porém apenas de segunda a sábado (1-6).

Referência

https://blog.tecnologiaqueinteressa.com/2019/03/como-fazer-backup-automatico-do-mysql-backup-de-triggers-e-stored-procedures-agendamento-cron-versionamento-por-data-e-limpeza-de-backups-antigos/



Notícias

Data Título
24/11/2020 Falta de cerveja em supermercados atinge nível recorde
24/11/2020 Como fazer um texto persuasivo em 8 passos
23/11/2020 Música mais tocada em shows no Nordeste nos últimos 10 anos
21/11/2020 Analista de Dados vs Analista de Negócios
20/11/2020 Guia para curtir o Beach Park
18/11/2020 Guia do Google Analytics
13/11/2020 Como fazer backup do servidor de banco de dados MySQL
12/11/2020 Deaftawk: Um aplicativo de linguagem de sinais para preencher a lacuna auditiva
11/11/2020 Exportar notas do Kindle
08/11/2020 Equity: breve explicação
07/11/2020 Harmonização de Cervejas para festas de final de ano
06/11/2020 Pandoc - conversor de documentos universal