Configurando Logs Binários, Fazendo Backups e Restaurando no MariaDB com Docker
Este artigo fornece um guia passo a passo para configurar logs binários no MariaDB usando Docker, realizar backups consistentes e restaurar esses backups, incluindo a opção de filtrar por banco de dados específico.
Pré-requisitos
- Docker e Docker Compose instalados.
- Conhecimento básico de Docker e MariaDB.
- Acesso ao terminal ou linha de comando.
Passos
1. Configurar Logs Binários no MariaDB com Docker
Criar o arquivo docker-compose.yml
version: '3.8'
services:
mariadb:
image: mariadb:10.1.48
container_name: mariadb
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_password
MYSQL_DATABASE: meu_banco_de_dados
MYSQL_USER: my_user
MYSQL_PASSWORD: my_password
volumes:
- mariadb_data:/var/lib/mysql
- ./my_custom.cnf:/etc/mysql/conf.d/my_custom.cnf
- mariadb_logs:/var/log/mysql
ports:
- "3306:3306"
volumes:
mariadb_data:
mariadb_logs:
Criar o arquivo de configuração my_custom.cnf
[mysqld]
log-bin=/var/log/mysql/mariadb-bin
binlog-format=row
server-id=1
expire_logs_days=7
max_binlog_size=100M
2. Iniciar o MariaDB com Docker Compose
docker-compose up -d
3. Criar o Banco de Dados e Inserir Dados
Conectar ao MariaDB
docker exec -it mariadb mysql -u root -proot_password
Criar o Banco de Dados
CREATE DATABASE meu_banco_de_dados;
Usar o Banco de Dados e Criar a Tabela
USE meu_banco_de_dados;
CREATE TABLE clientes (
id INT AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(100),
email VARCHAR(100),
telefone VARCHAR(15)
);
INSERT INTO clientes (nome, email, telefone) VALUES
('João Silva', '[email protected]', '123456789'),
('Maria Oliveira', '[email protected]', '987654321'),
('Pedro Santos', '[email protected]', '456789123');
4. Fazer Backup Completo do Banco de Dados
Comando para Fazer Backup Completo
mysqldump --all-databases --master-data=2 --single-transaction > backup.sql
5. Encontrar Posição do Log Binário no Backup
Abra o arquivo de backup (backup.sql
) e procure pela linha que contém o comando CHANGE MASTER TO
. Esta linha indicará o arquivo de log binário e a posição no log binário até onde os dados do backup estão consistentes.
Por exemplo, você verá algo assim no início do arquivo de backup:
-- Position to start replication or point-in-time recovery from
--
-- CHANGE MASTER TO MASTER_LOG_FILE='mariadb-bin.000003', MASTER_LOG_POS=107;
Esta linha indica que o backup inclui todas as transações até a posição 107 no arquivo de log binário mariadb-bin.000003
.
6. Restaurar Backup Completo e Aplicar Logs Binários
Passos para Restaurar o Backup
-
Pare o servidor MariaDB
docker stop mariadb
-
Remova os dados atuais
docker volume rm mariadb_data
-
Inicie o servidor novamente
docker start mariadb
-
Restaure o backup completo
mysql -u usuario -p < backup.sql
-
Aplique os logs binários
mysqlbinlog --start-position=107 /var/log/mysql/mariadb-bin.000003 | mysql -u usuario -p mysqlbinlog /var/log/mysql/mariadb-bin.000004 | mysql -u usuario -p
7. Restaurar Apenas um Banco de Dados Específico dos Logs Binários
Fazer Backup Completo do Banco de Dados Específico
mysqldump -u usuario -p --databases meu_banco_de_dados --master-data=2 --single-transaction > meu_banco_de_dados_backup.sql
Restaurar o Backup Completo do Banco de Dados Específico
mysql -u usuario -p < meu_banco_de_dados_backup.sql
Aplicar os Logs Binários Filtrando por Banco de Dados
mysqlbinlog --database=meu_banco_de_dados --start-position=107 /var/log/mysql/mariadb-bin.000003 | mysql -u usuario -p
mysqlbinlog --database=meu_banco_de_dados /var/log/mysql/mariadb-bin.000004 | mysql -u usuario -p
Conclusão
Seguindo este artigo, você configurou logs binários no MariaDB usando Docker, fez backups consistentes e restaurou esses backups, filtrando por banco de dados específico. Esse processo garante que seus dados estejam seguros e que você possa restaurá-los de maneira eficiente.