Guia de Alta Disponibilidade: Dominando a Replicação no MySQL
A criação de replicação em banco de dados é um aspecto fundamental para garantir a disponibilidade, escalabilidade e integridade dos dados. A replicação permite que os dados sejam copiados de um servidor (o mestre) para um ou mais servidores (réplicas), o que traz diversas vantagens:
Alta Disponibilidade: Com a replicação, se o servidor mestre falhar, os servidores réplicas podem assumir rapidamente, minimizando o tempo de inatividade.
Desempenho Melhorado: A carga de leitura pode ser distribuída entre vários servidores slaves, permitindo que o servidor mestre se concentre nas operações de gravação. Isso é particularmente é útil em aplicações com alta demanda de leitura.
Backup e Recuperação: Os servidores réplicas podem ser utilizados para realizar backups sem impactar o desempenho do servidor mestre, garantindo que os dados estejam sempre disponíveis.
Escalabilidade: À medida que a demanda por dados aumenta, novos servidores réplicas podem ser adicionados facilmente à arquitetura, permitindo que o sistema escale horizontalmente.
Segurança dos Dados: A replicação pode ser configurada para replicar dados em locais geograficamente distintos, proporcionando uma camada extra de segurança em caso de desastres naturais ou falhas de hardware.
Testes e Desenvolvimento: Servidores slaves podem ser utilizados para testes e desenvolvimento, permitindo que os desenvolvedores trabalhem com uma cópia dos dados reais sem afetar a produção.
Em suma, a replicação no MySQL é uma prática essencial para a construção de sistemas robustos e confiáveis, garantindo que os dados estejam sempre disponíveis e acessíveis, além de permitir uma melhor gestão de recursos e desempenho.
Então vamos lá criar uma replicação no MySQL?
Mão na massa galera!
Neste exemplo vamos usar a o Ubuntu Server e MySQL 8 nas duas máquinas virtuais.
• Master: 192.168.1.105
• Slave: 192.168.1.112
As instâncias do MySQL devem ser capazes de se comunicar entre si. Verifique as configurações de firewall e rede para garantir que as portas necessárias estejam abertas (porta 3306).
Vamos as Configurações!
No seu master
# MASTER
vim /etc/mysql/mysql.conf.d/mysqld.cnf
server_id = 1
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 1
bind-address = 192.168.1.112 #IP do Slave
# SLAVE
server_id = 2
log_bin = /var/log/mysql/mysql-bin.log
log_bin_index = /var/log/mysql/mysql-bin.log.index
relay_log = /var/log/mysql/mysql-relay-bin
relay_log_index = /var/log/mysql/mysql-relay-bin.index
expire_logs_days = 10
max_binlog_size = 100M
log_slave_updates = 1
auto-increment-increment = 2
auto-increment-offset = 2
bind-address = 192.168.1.105 #IP do seu Master
#parâmetros adicionados:
server_id:
Este parâmetro é um número inteiro que identifica de forma única cada servidor em um ambiente de replicação
log_bin:
Este parâmetro habilita o log binário no servidor. O log binário registra todas as alterações feitas no banco de dados essencial para a replicação, pois permite que o slave replique essas alterações.
log_bin_index:
Este parâmetro define o nome do arquivo de índice do log binário.
O índice armazena a lista de arquivos de log binário que foram gerados, facilitando a gestão e o acesso a esses arquivos. Se não especificado, um nome padrão será gerado.
relay_log:
O relay_log é o arquivo onde os dados do log binário do mestre são armazenados no SLAVE.
relay_log_index:
Semelhante ao log_bin_index, o relay_log_index define o nome do arquivo de índice do log Esse índice rastreia os arquivos de log de relé que foram gerados no slave.
expire_logs_days:
Este parâmetro define o número de dias que os arquivos de log binário serão mantidos antes de serem automaticamente excluídos.
max_binlog_size:
Define o tamanho máximo de um arquivo de log binário. Quando o tamanho do log atinge esse limite, o MySQL cria um novo arquivo de log binário.
log_slave_updates:
Quando habilitado, este parâmetro faz com que o slave registre suas próprias atualizações no log binário. Isso é importante em configurações de replicação em cadeia (multi-nível), onde um slave pode atuar como mestre para outro slave.
# Depois, dê um restart em ambos os bancos de dados:
sudo service mysql restart
# Agora, vamos criar um usuário para a replicação:
mysql -u root -p
CREATE USER ‘replication’@’%’ IDENTIFIED BY ‘123456’;
GRANT REPLICATION SLAVE ON *.* TO ‘replication’@’%’;
FLUSH PRIVILEGES;
# Vá na máquina Slave para ver se está conectando:
mysql -u replication -p -h 192.168.1.105 -P 3306
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
mysql>
# Depois volte para a máquina Master:
SHOW MASTER STATUS;
mysql> SHOW MASTER STATUS;
+——————+———-+————–+——————+——————-+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+——————+———-+————–+——————+——————-+
| mysql-bin.000001’| 2125| | | |
+——————+———-+————–+——————+——————-+
No Primary: Criar Backup com Ponto de Binlog
Criar um diretório de backup (por exemplo, /backup/):
mkdir /backup/
mysqldump -u root -p \
–all-databases \
–master-data=2 \
–single-transaction \
–flush-logs \
–triggers \
–routines \
–events \
> backup.sql
Transferir e Restaurar no Replica
scp backup.sql suporte@192.168.1.112:/backup
mysql -u root -p < backup.sql
# Agora no Slave rode esses comandos, e coloque as informações da Master conforme demostrado anteriormente:
STOP SLAVE;
CHANGE MASTER TO master_host=’192.168.1.105′, master_port=3306, master_user=’replication’, master_password=’123456′, master_log_file=’mysql-bin.000001′, master_log_pos=2125;
START SLAVE;
SHOW SLAVE STATUS\G
# Veja se as seguintes variáveis estão assim:
Slave_IO_State: Waiting for master to send event
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
# Agora, vamos na máquina Master criar um banco de dados e uma tabela com conteúdo nela:
CREATE DATABASE teste;
USE teste;
CREATE TABLE carros (tipo VARCHAR(20), portas INT, automatico VARCHAR(20));
INSERT INTO carros (tipo,portas,automatico) VALUES(‘hatch’,2,’SIM’);
INSERT INTO carros (tipo,portas,automatico) VALUES(‘SUV’,4,’SIM’);
INSERT INTO carros (tipo,portas,automatico) VALUES(‘hatch’,2,’NAO’);
#Verificar no SLAVE
mysql> show tables in teste;
+—————–+
| Tables_in_teste |
+—————–+
| carros |
+—————–+
1 row in set (0.03 sec)
# Pronto!
Links de ref: https://dev.mysql.com/doc/refman/8.0/en/replication.html
About author
Você pode gostar também
Entenda a Importância e Utilização das Variáveis de Ambiente em Linux
Costumeiramente em nossos processos diários sempre nos deparamos com uma configuração de uma variável, por conceito em tecnologia, uma variável é um local ou espaço que é designado para armazenar
Aprenda SQL e domine o gerenciamento de dados com o novo curso da 4Linux!
Você já se perguntou como os dados são armazenados, acessados e gerenciados em aplicativos e sistemas? Se sim, você está no lugar certo! A 4Linux apresenta o mais novo curso,
Como montar seu próprio Registry Privado com Harbor
Hoje, no blog da 4Linux, sobre Registry Privado e em como montar o nosso com o Harbor. O que é um Registry Quando falamos de contêineres, sabemos que para ele







