PolarDB for MySQL oferece um recurso nativo de separação de leitura e escrita. Sua aplicação precisa se conectar apenas a um único endpoint de cluster em Read/Write (Automatic Read/Write Splitting). O sistema encaminha automaticamente as requisições de escrita para o nó primário. As requisições de leitura são direcionadas ao nó primário ou a um nó somente de leitura, conforme a carga (quantidade atual de requisições não concluídas) de cada nó.
Benefícios
-
Read Consistency
Quando um cliente se conecta ao backend por meio de um endpoint de cluster, o middleware de separação de leitura e escrita estabelece automaticamente conexões com o nó primário e com cada nó somente de leitura. Dentro de uma única conexão (sessão), o middleware selecione o nó mais adequado ao verificar o status de sincronização de dados de cada nó de banco de dados. Essa abordagem garante resultados corretos (leituras após escritas retornam os dados esperados) e fornece balanceamento de carga para requisições de leitura e escrita.

-
Separação nativa de leitura e escrita para melhor desempenho
Se você criar sua própria camada de proxy na cloud para implementar a separação de leitura e escrita, as requisições precisarão passar por vários componentes para análise e encaminhamento de SQL antes de chegar ao banco de dados, o que aumenta a latência. Em contraste, a separação de leitura e escrita do PolarDB é integrada diretamente ao link de alta segurança existente. Ela não adiciona componentes extras nem sobrecarga, reduzindo a latência e melhorando o throughput.
-
Manutenção simplificada
No modelo tradicional, é necessário configure os endpoints de conexão do nó primário e de cada nó somente de leitura na sua aplicação. Além disso, você precisa dividir a lógica de negócios para garantir que as requisições de escrita sejam enviadas ao nó primário e as de leitura, a todos os nós.
O PolarDB fornece um único endpoint de cluster. Após sua aplicação se conectar a esse endpoint, ela poderá execute operações de leitura e escrita nos nós primários e somente de leitura. O encaminhamento das requisições ocorre automaticamente, e a lógica de roteamento é totalmente transparente, o que reduz os custos de manutenção.
Também é possível aumentar a capacidade de processamento adicionando mais nós somente de leitura, sem precisar alterar sua aplicação.
-
Verificações de integridade dos nós para alta disponibilidade
O módulo de separação de leitura e escrita verifica automaticamente a integridade de todos os nós do cluster. Se um nó falhar ou sua latência exceder um limiar especificado, o PolarDB interrompe o roteamento de requisições de leitura para esse nó. As requisições são então distribuídas entre os demais nós íntegros. Isso garante que a falha de um único nó somente de leitura não afete sua aplicação. Após a recuperação do nó, o PolarDB o readiciona automaticamente ao pool de roteamento.
-
Uso gratuito, com redução de custos de recursos e manutenção
O recurso de separação de leitura e escrita é fornecido sem custo adicional.
Lógica de roteamento de requisições
No modo Read/Write, as requisições são roteadas da seguinte forma:
-
Encaminhadas exclusivamente para o nó primário:
Todas as operações DML (INSERT, UPDATE, DELETE e SELECT FOR UPDATE)
Todas as operações DDL (como criação ou exclusão de bancos de dados e tabelas, alteração de esquemas de tabela e gerenciamento de permissões)
-
Todas as requisições dentro de uma transação quando a divisão de transações está desativada
NotaPara detalhes de roteamento quando a divisão de transações está ativada, consulte transaction splitting.
Funções definidas pelo usuário
Procedimentos armazenados
Instruções LOCK/UNLOCK TABLES
Consultas Multi-statement
Requisições que utilizam tabelas temporárias
SELECT last_insert_id()Todas as consultas e modificações de variáveis de usuário
Requisições de dump de binlog
-
Encaminhadas para nós somente de leitura ou para o nó primário:
NotaAs requisições são encaminhadas para o nó primário somente quando Primary Node Accepts Read Requests estiver defina como Yes.
Requisições de leitura fora de uma transação
Transações somente de leitura (START TRANSACTION READ ONLY)
-
Sempre encaminhadas para todos os nós:
Todas as alterações em variáveis de sistema
O comando USE
Os comandos PREPARE e DEALLOCATE PREPARE
Comandos como COM_CHANGE_USER, COM_RESET_CONNECTION, COM_QUIT e COM_SET_OPTION
-
SHOW PROCESSLISTNotaAo execute o comando
SHOW PROCESSLIST, o PolarDB retorna informações da lista de processos de todos os nós. KILL (a instrução KILL em SQL, não o comando KILL da linha de comando)
No modo Read Only, as requisições são roteadas da seguinte forma:
Operações DDL e DML não são permitidas.
Todas as requisições de leitura são encaminhadas para nós somente de leitura com balanceamento de carga.
Requisições de leitura nunca são encaminhadas ao nó primário, mesmo que ele tenha sido adicionado aos nós de service.
O PolarDB fixa um dump de binlog em um nó somente de leitura específico.
Recursos
A separação de leitura e escrita do PolarDB inclui os seguintes recursos: