Como fazer backup do MySQL no CentOS 8 com o Bacula
Já examinamos brevemente em que consiste o Bacula. Neste tutorial, configuraremos um processo regular de backup de banco de dados MySQL usando o Bacula no CentOS. Se você quiser configurar backups de um servidor CentOS 8 remoto, leia este artigo. Depois de concluir essas configurações, você pode simplesmente adicionar as configurações deste tutorial e obter um backup do banco de dados MySQL de um servidor remoto.
Instalação de pacotes
Vamos instalar todos os pacotes necessários.
dnf install bacula-director bacula-storage bacula-console bacula-client
Configuração do MySQL
Altere o sistema de gerenciamento de banco de dados padrão para MySQL, se ele ainda não estiver definido.
alternatives --config libbaccats.so
There are 3 programs which provide 'libbaccats.so'.
Selection Command
-----------------------------------------------
1 /usr/lib64/libbaccats-mysql.so
...
Selecione 1.
Conecte-se ao MySQL.
[/passo]
mysql -u root -p
Crie um banco de dados e um usuário para o Bacula.
[/passo]
create database bacula;
create user bacula@localhost identified by 'password';
grant all privileges on bacula.* to bacula@'localhost';
flush privileges;
exit
Execute este script para criar a estrutura da tabela.
[/passo]
/usr/libexec/bacula/make_mysql_tables -p
Para a tarefa de backup, crie um novo usuário e atribua a ele somente os direitos de acesso necessários.
mysql -u root -p
create user dump@localhost identified by 'password';
grant select, lock tables on *.* to dump@localhost;
grant process on *.* to dump@localhost;
flush privileges;
exit
Preparação de scripts
Para tornar o Bacula capaz de criar backups de um banco de dados MySQL, você deve primeiro fazer o dump. Usaremos a capacidade do Bakula de executar scripts personalizados antes e depois do Job de backup. Vamos criar um script para criar um dump do banco de dados.
nano /etc/bacula/pre-mysql.sh
Insira esses comandos nele. Observe que a senha do usuário dump deve ser inserida após o parâmetro -p sem espaço e altere database_name para o nome do banco de dados de destino.
#!/bin/bash
# Preparation of the folder
rm -rf /opt/mysql-backup/
mkdir -p /opt/mysql-backup/
# Backup
mysqldump -u dump -ppassword database_name > /opt/mysql-backup/dump$(date +%Y-%m-%d_%H:%M).sql
E um script para limpar o espaço em disco após o backup.
nano /etc/bacula/post-mysql.sh
Insira as seguintes linhas aqui.
#!/bin/bash
# Clearing the folder
rm -rf /opt/mysql-backup/
Torne os scripts executáveis.
chmod +x /etc/bacula/pre-mysql.sh
chmod +x /etc/bacula/post-mysql.sh
Configuração do Bacula
Abra o arquivo /etc/bacula/bacula-dir.conf e defina a senha do usuário MySQL bacula no parâmetro dbpassword da seção Catalog.
Catalog {
Name = MyCatalog
dbname = "bacula"; dbuser = "bacula"; dbpassword = "password"
}
Insira as seções com as configurações de backup do MySQL aqui.
FileSet {
Name = MySQLFileSet
Include {
Options {
signature = MD5
}
File = /opt/mysql-backup
}}
Schedule {
Name = MySQL
Run = Full daily at 03:00
}
Job {
Name = "MySQLBackup"
JobDefs = "DefaultJob"
Enabled = yes
Level = Full
FileSet = MySQLFileSet
Schedule = MySQL
Storage = File1
ClientRunBeforeJob = "/etc/bacula/pre-mysql.sh"
ClientRunAfterJob = "/etc/bacula/post-mysql.sh"
Write Bootstrap = "/var/spool/bacula/%c.bsr"
}
Inicie e ative os serviços do Bacula.
[/passo]
systemctl enable --now bacula-dir.service
systemctl enable --now bacula-fd.service
systemctl enable --now bacula-sd.service
Agora, os backups do banco de dados selecionado serão feitos no horário especificado.
[/passo]


