Este script realiza o backup automatizado de todos os bancos de dados MySQL, exceto por aqueles especificados na lista de bancos de dados a serem ignorados. Ele cria dumps individuais para cada banco de dados e os compacta em um arquivo tar.gz. Além disso, registra informações sobre o backup em um banco de dados para rastreabilidade e monitoramento.
- Acesso ao servidor MySQL com privilégios suficientes para executar comandos de backup e inserir registros no banco de dados de log.
- Acesso ao sistema de arquivos do servidor para criar e gerenciar diretórios de backup e log.
Antes de executar o script, é necessário fazer algumas configurações.
- Editar permissões do script:
Certifique-se de que o script tenha permissão de execução.
chmod +x _backupMysql.sh
- Modificar variáveis:
$BACKUP_DIR
: Diretório onde os arquivos de backup serão armazenados (por padrão: /var/lib/mysql/backup).$LOG_DIR
: Diretório onde os arquivos de log serão armazenados (por padrão: /var/log/backup_mysql).$DB_LIST_SKIP
: Lista de bancos de dados que não devem ser incluídos no backup (por padrão: information_schema, performance_schema e sys).
O script usa o conceito de login path para autenticação com o MySQL. O login path é um recurso utilizado para autenticação com o banco de dados MySQL. Ele permite armazenar e gerenciar de forma segura as opções de conexão do cliente MySQL em um arquivo de login criptografado, em vez de especificá-las na linha de comando.
A configuração de um login path é feita da seguinte maneira:
mysql_config_editor set --login-path=backup --host=nome_do_host --user=nome_do_usuário --password
Neste comando, substitua "backup" pelo nome desejado para o login path. O "nome_do_host" deve ser substituído pelo nome do host do MySQL ao qual você deseja se conectar. "nome_do_usuário" deve ser substituído pelo nome de usuário do MySQL e "--password" indica que você será solicitado a inserir a senha do MySQL.
Digite a senha do MySQL quando solicitado. O login path será então armazenado de forma segura no arquivo de login.
O script finaliza executando um script externo (_rotateBackupsMysql.sh
).
Este script externo é responsável pela rotação dos backups, removendo backups antigos de um determinado período, na qual é determinado pela variável $DELETE_BACKUPS_LAST_MONTHS
(por padrão: 1 mês).
Para executar o script manualmente, navegue até o diretório onde o script está localizado e execute:
sh _backupMysql.sh
Para agendar o script para execução automática, adicione uma entrada no crontab. Por exemplo, para executar o script todos os dias à meia-noite, adicione a seguinte linha ao crontab:
0 0 * * * sh _backupMysql.sh
O script gera logs detalhados de cada execução, incluindo informações sobre o sucesso ou falha de cada backup de banco de dados. Os logs são armazenados no diretório especificado por $LOG_DIR
.
O script não verifica se há espaço suficiente no diretório de backup antes de iniciar o backup. Certifique-se de que haja espaço suficiente para acomodar os arquivos de backup.