MySQL: Replicação mestre-escravo do MySQL e arquitetura de…

Última atualização: 2026-08-26

A replicação mestre-escravo é a base da alta disponibilidade do MySQL — tanto a separação entre leitura e gravação quanto o failover dependem dela.

Esta aula explica os princípios e a configuração da replicação mestre-escravo.

1. O que você vai aprender


2. Uma história real

(1) Problema: Um único servidor não consegue lidar com a carga de leitura e gravação

Uma plataforma de comércio eletrônico possui apenas um servidor de banco de dados; portanto, durante grandes eventos de vendas, todas as solicitações de leitura e gravação se concentram em uma única máquina. As consultas sobre pedidos ficam lentas, as operações de gravação ficam em fila e a CPU atinge sua capacidade máxima — o banco de dados se torna o gargalo de todo o sistema. O que é ainda mais perigoso é que, se essa máquina parar de funcionar, todo o negócio fica completamente paralisado.

(2) Uma solução que utiliza replicação mestre-escravo e separação de leitura e gravação

Implementar a replicação mestre-escravo: as gravações são feitas no banco de dados mestre, e as leituras, no banco de dados escravo. Se o banco de dados mestre ficar fora do ar, o banco de dados escravo é promovido a mestre, garantindo a continuidade dos negócios.

Dimensão Servidor único Replicação mestre-escravo + separação de leitura e gravação
Desempenho de leitura Limite de um único servidor Escalonamento horizontal (adição de bancos de dados escravos)
Desempenho de gravação Conflito entre leitura e gravação Banco de dados primário exclusivo para gravação
Disponibilidade 99% 99,9%
Recuperação de desastres Recuperação manual (a cada hora) Failover automático (a cada minuto)

3. O Princípio da Replicação

100%
graph LR
    A[Master<br/>Primary Database] -->|binlog| B[Slave IO Thread]
    B -->|relay log| C[Slave SQL Thread]
    C -->|Replay| D[Slave Data<br/>Data from the database]
Etapa Descrição
1 O mestre grava no binlog
2 O thread de E/S do escravo extrai o binlog
3 Gravar no log de retransmissão local
4 O thread SQL escravo reproduz o log de retransmissão

4. Configurando a replicação mestre-escravo

▶ Exemplo: Configuração principal

INI
# my.cnf
[mysqld]
server-id = 1
log_bin = mysql-bin
binlog_format = ROW
SQL
-- Create a replication user
CREATE USER 'repl'@'%' IDENTIFIED BY 'ReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';

-- View master status
SHOW MASTER STATUS;

▶ Exemplo: Configuração do escravo

INI
# my.cnf
[mysqld]
server-id = 2
relay_log = relay-bin
SQL
-- Configure master-slave relationship
CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='repl',
    MASTER_PASSWORD='ReplPass123!',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=154;

-- Start the slave database
START SLAVE;

-- Check slave database status
SHOW SLAVE STATUS\G

5. Separação das operações de leitura e gravação

100%
graph TB
    A[Applications] -->|Write| B[Master]
    A -->|Read| C[Slave 1]
    A -->|Read| D[Slave 2]
    B -->|Replicate| C
    B -->|Replicate| D

6. Replicação semissíncrona

SQL
-- Install the semi-synchronous plugin
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
SET GLOBAL rpl_semi_sync_master_enabled = 1;
Método de cópia Descrição
Replicação assíncrona O mestre não aguarda a confirmação do escravo (padrão)
Replicação semissíncrona Retorna somente após pelo menos um escravo confirmar o recebimento
Replicação síncrona completa Todos os escravos devem confirmar (baixo desempenho)

7. Replicação em Grupo do MySQL

SQL
-- Install the Group Replication plugin
INSTALL PLUGIN group_replication SONAME 'group_replication.so';

-- Start Group Replication
SET GLOBAL group_replication_bootstrap_group = ON;
START GROUP_REPLICATION;
SET GLOBAL group_replication_bootstrap_group = OFF;

❓ Perguntas Frequentes

P: O que devo fazer em relação à latência mestre-escravo? R: Verifique a rede, otimize transações grandes e utilize replicação paralela.

P: O que devo fazer se o banco de dados primário ficar fora do ar? R: Failover manual ou automático (MHA/Orchestrator/ProxySQL).

P: É possível ter vários mestres? R: A Replicação em Grupo oferece suporte ao modo multimestre, mas recomenda-se o modo de mestre único.

P: O que devo fazer se houver um atraso na replicação mestre-escravo? R: Realize leituras críticas no banco de dados mestre, utilize replicação semissíncrona, habilite a replicação paralela e otimize transações de grande porte.

P: O que devo fazer se o banco de dados primário ficar fora do ar? R: Promova um banco de dados secundário para primário, seja manualmente ou automaticamente, usando o MHA/Orchestrator.


📖 Resumo


📝 Exercícios

  1. Questão básica (Dificuldade: ⭐): Configure um ambiente de replicação mestre-escravo.

  2. Problema avançado (Dificuldade ⭐⭐): Verifique a sincronização de dados entre mestre e escravo.

  3. Desafio (Dificuldade: ⭐⭐⭐): Simule uma falha no banco de dados primário e execute uma transição manual para o banco de dados de reserva.

Web-Tutorial.com

Equipe Técnica Web-Tutorial

Uma plataforma de tutoriais mantida por diversos desenvolvedores. Cada tutorial é escrito e revisado por profissionais da área correspondente. Trabalhamos para manter nosso conteúdo preciso e confiável — se encontrar algum problema, avise-nos.

100%