Quando um único nó primário não suporta a carga de leitura, os clusters do PolarDB for MySQL distribuem automaticamente as solicitações de leitura entre vários nós. Conecte-se a um endpoint de cluster no modo Read/Write (Automatic Read/Write Splitting). Nesse cenário, o sistema encaminha as solicitações de escrita ao nó primário e distribui as de leitura entre o nó primário e os nós somente leitura, com base na quantidade de solicitações pendentes em cada nó. O recurso de separação de leitura e escrita é gratuito.

Quando usar a separação de leitura e escrita
A separação de leitura e escrita é recomendada nas seguintes situações:
Cargas de trabalho com predominância de leitura: sua aplicação executa muito mais leituras do que escritas (como relatórios, análises ou buscas) e um único nó não suporta a demanda de leitura.
Dimensionamento sem alterações de código: você precisa aumentar a capacidade de leitura adicionando mais nós somente leitura, sem atualizar strings de conexão ou a lógica da aplicação.
Alta disponibilidade para leituras: as leituras devem continuar mesmo se um nó somente leitura falhar, com failover automático para nós íntegros.
Como funciona
Um proxy de banco de dados integrado, implantado nos links seguros existentes, gerencia todo o roteamento. Quando uma aplicação se conecta por meio do endpoint de cluster, o proxy estabelece conexões tanto com o nó primário quanto com os nós somente leitura. Em cada sessão de conexão, o proxy encaminha cada solicitação ao nó mais adequado conforme o status de sincronização de dados desse nó. Isso garante que as leituras sempre reflitam as escritas mais recentes.
Como o proxy faz parte do link seguro, em vez de ser um componente de nuvem separado, os dados não passam por múltiplas camadas de encaminhamento. Essa arquitetura mantém a latência baixa em comparação com soluções externas baseadas em proxy para separação de leitura e escrita.
Regras de roteamento de solicitações
O endpoint de cluster opera em dois modos: Read/Write e Read-Only. As tabelas a seguir descrevem o roteamento das solicitações em cada modo.
Modo Read/Write
|
Destino |
Solicitações roteadas |
|
Somente nó primário |
Todas as instruções DML: INSERT, UPDATE, DELETE, SELECT FOR UPDATE |
|
Todas as instruções DDL (criar, excluir ou alterar bancos de dados, tabelas, esquemas ou permissões) |
|
|
Todas as transações quando a separação de transações está desativada |
|
|
Funções definidas pelo usuário |
|
|
Procedimentos armazenados |
|
|
Instruções LOCK TABLES e UNLOCK TABLES |
|
|
Consultas Multi-statement |
|
|
Solicitações que envolvem tabelas temporárias |
|
|
Instruções |
|
|
Consultas ou modificações de variáveis de ambiente do usuário |
|
|
Instruções |
|
|
Nó primário ou nós somente leitura |
Solicitações de leitura não transacionais (apenas quando Primary Node Accepts Read Requests estiver definido como Yes) |
|
Transações somente leitura usando |
|
|
Todos os nós |
Modificações de variáveis de ambiente do sistema |
|
Instruções USE |
|
|
Instruções PREPARE e DEALLOCATE PREPARE |
|
|
Instruções COM_CHANGE_USER, COM_RESET_CONNECTION, COM_QUIT e COM_SET_OPTION |
|
|
Instruções |
|
|
Instruções KILL em SQL (não confundir com comandos |
Para regras de roteamento de transações com a separação de transações ativada, consulte a seção "Transaction splitting" em Balanceamento de carga .
Modo Read-Only
|
Comportamento |
Detalhes |
|
DML e DDL |
Não suportado |
|
Solicitações de leitura |
Distribuídas entre nós somente leitura no modo de balanceamento de carga |
|
Nó primário |
Não utilizado, mesmo que esteja incluído na lista de nós selecionados |
|
|
Encaminhado exclusivamente para um nó somente leitura específico |
Verificações de integridade dos nós
O módulo de separação de leitura e escrita verifica automaticamente a integridade de todos os nós. Caso um nó apresente falha ou a latência ultrapasse o limiar especificado, o PolarDB interrompe o roteamento de solicitações de leitura para esse nó e as redireciona para nós íntegros. Após a recuperação, o PolarDB reinsere automaticamente o nó no pool de roteamento.
Recursos relacionados
Consulte os recursos abaixo para ajustar o comportamento da separação de leitura e escrita no seu cluster: