A maneira mais fácil de automatizar essa tarefa seria a combinação de despejos do MySQL e um cronjob. Você pode encontrar muitas informações sobre este tópico neste e em outros sites da Internet, mas para fins de conclusão:
Crie um arquivo mysqldump.sh
Que conterá o comando mysql dump que agendaremos em uma tarefa cron (substitua usuário, senha e caminho para corresponder ao seu ambiente):
mysqldump -u root -p<mysql_root_password> --all-databases | gzip > /desired/backup/folder/mysqldb_`date +%F`.sql.gz
Editar: se você deseja que o script armazene o backup em um local remoto, basta montar o dispositivo correspondente ou compartilhar e usar o caminho de montagem no script.
Teste o script
Verifique se o script possui permissões de execução:
chmod +x /path/to/mysqldump.sh
Execute o script:
sh /path/to/mysqldump.sh
E teste se está funcionando corretamente (o arquivo de backup será criado na pasta de backup especificada).
Crie e agende um novo trabalho cron
Em um prompt de comando, digite
sudo crontab -e
E adicione a seguinte linha na parte inferior do arquivo:
30 23 * * * /path/to/mysqldump.sh
Isso executará o script todos os dias às 23:30.
Estenda este script simples
Há literalmente muitas coisas que você pode fazer para melhorar esse método simples de backup:
- Fazendo backup em outro sistema
- Monitorar espaço em disco
- Relatórios por email
- ...
Portanto, não termine aqui e experimente! :-)
Use ferramentas de backup ou serviços de backup baseados em nuvem
Embora o método acima seja um dos mais fáceis e possa ser estendido para atender às suas necessidades específicas, vale ressaltar que existem outras alternativas:
- ferramentas de backup como o AutoMySQLBackup, um aplicativo de código aberto que pode facilitar o processo de configuração de notificação por email, compactação, criptografia, rotação e tipo (por exemplo, incremental) de seus backups. Quanto ao Mai 2018, ele está disponível para o Ubuntu Server através do APT.
- serviços de backup baseados em nuvem, como BackupBird, myRepono, Bitcan, etc., que podem ser interessantes se você gerenciar vários servidores de banco de dados e desejar gerenciar centralmente todos os seus backups.
Lembre-se de que não estou relacionado de forma alguma a nenhuma das soluções e serviços mencionados acima e os estou listando apenas para referência, portanto, use-os por sua conta e risco.
Links / referências úteis:
Cron -> https://en.wikipedia.org/wiki/Cron
MySQL Dump -> https://dev.mysql.com/doc/refman/5.7/en/mysqldump.html
date +%F
- que seleciona automaticamente uma combinação de ano, mês e data adequados à localidade do usuário (por exemplo, eu recebereiYYYY-MM-DD
).