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
Melhore a performance do seu Elasticsearch com um eficiente Capacity Planning
E aí meus amiguinhos, hoje vamos falar um pouquinho sobre o ElasticSearch, um motor de buscas para indexar dados de maneira fácil. A ideia aqui é discutir um pouco sobre
Guia Prático: Como Instalar e Configurar o Apache Ambari em um Cluster Hadoop
O Apache Ambari é uma plataforma desenvolvida pela Hortonworks que permite instalar, configurar e monitorar um cluster hadoop em poucos minutos. Neste post irei ensinar como instalar o Ambari em
Backups no MySQL com MyDumper
No MySQL, existem algumas ferramentas de backup lógico (dump) que podem ser utilizadas para realizar backups diários, seja como uma cópia secundária, em conjunto com um backup físico, ou ainda






