A separação de leitura e escrita encaminha solicitações de escrita para a instância primária e solicitações de leitura para instâncias somente leitura por meio de um único endpoint de proxy de banco de dados. Utilize este recurso quando sua carga de trabalho tiver significativamente mais leituras do que escritas e a instância primária não conseguir mais lidar sozinha com o volume de leitura.
Conecte sua aplicação a um único endpoint do proxy de banco de dados em vez de gerenciar endpoints separados para a instância primária e para cada instância somente leitura. O proxy cuida de todo o roteamento automaticamente.
Quando usar a separação de leitura e escrita
A separação de leitura e escrita é indicada se você enfrentar qualquer uma das situações abaixo:
Cargas de trabalho com predominância de leitura: Sua aplicação executa muito mais consultas SELECT do que operações INSERT, UPDATE ou DELETE.
Gargalo na instância primária: A CPU ou a E/S da instância primária está saturada pelo tráfego de leitura, mesmo que o volume de escrita seja gerenciável.
Dimensionamento de leitura sem alteração de conexões: Adicione capacidade de leitura sem modificar a lógica de conexão da sua aplicação.
Benefícios
Endpoint único, sem código de roteamento: Conecte-se uma única vez ao endpoint do proxy de banco de dados. O proxy encaminha as escritas para a instância primária e distribui as leituras entre as instâncias somente leitura automaticamente, eliminando a necessidade de manter strings de conexão separadas por instância.
Menor latência em comparação a um proxy autoconstruído: A separação de leitura e escrita está integrada ao ecossistema do ApsaraDB RDS. Os dados não passam por camadas intermediárias adicionais, o que reduz a latência de resposta em comparação à criação de um proxy próprio na nuvem.
Pesos de leitura e limiar de latência configuráveis: Especifique um peso de leitura para cada instância a fim de controlar a distribuição das solicitações de leitura. Defina um limiar de latência de replicação para excluir automaticamente do pool de leitura as instâncias somente leitura com atraso.
Verificação de integridade e failover automáticos: O proxy monitora continuamente cada instância. Se uma instância somente leitura falhar ou se sua latência de replicação exceder o limiar, o proxy interrompe o roteamento de leituras para ela e redistribui essas solicitações para instâncias íntegras. Após a recuperação da instância, o roteamento é retomado automaticamente.
Crie pelo menos duas instâncias somente leitura para evitar um ponto único de falha (SPOF).
Pré-requisitos
Antes de ativar a separação de leitura e escrita, certifique-se de ter:
Uma instância do ApsaraDB RDS for MySQL executando a RDS High-availability Edition ou a RDS Cluster Edition
Para a RDS High-availability Edition: pelo menos uma instância somente leitura criada (recomenda-se duas ou mais)
Para a RDS Cluster Edition: nenhuma instância somente leitura é necessária — o nó secundário pode ser acessado e processa apenas solicitações de leitura
A separação de leitura e escrita não é suportada na RDS Basic Edition .
Como funciona
Após ativar o recurso de proxy de banco de dados, a separação de leitura e escrita torna-se ativa automaticamente, sem necessidade de configuração adicional. Acesse Database Proxy no painel de navegação à esquerda da página de instance details para obter o endpoint do proxy de banco de dados (anteriormente chamado de terminal de proxy) e atualize a string de conexão da sua aplicação para utilizá-lo.
Roteamento de solicitações
O proxy dedicado roteia cada solicitação com base em seu tipo:
Instância primária do RDS
Instruções de escrita: INSERT, UPDATE, DELETE, SELECT FOR UPDATE
Todas as operações DDL (criação ou exclusão de bancos de dados/tabelas, alterações de esquema e permissões)
Todas as solicitações dentro de transações (a menos que o recurso de separação de transações esteja ativado)
Transações não somente leitura no nível de isolamento Repeatable Read (RR) e superiores
Funções definidas pelo usuário e procedimentos armazenados
Tabelas temporárias criadas explicitamente
SELECT last_insert_id()Consultas e atualizações de variáveis de usuário
Instruções
KILLem SQL (diferentes dos comandos KILL),LOCK TABLE,UNLOCK TABLEInstruções
FLUSH, incluindoFLUSH TABLES WITH READ LOCK(FTWRL)SAVEPOINT
Instância primária do RDS ou instância somente leitura do RDS
Instruções
SELECTfora de transaçõesSTART TRANSACTION READ ONLY
Todas as instâncias do RDS
Atualizações de variáveis de sistema
Instruções
USESHOW PROCESSLIST— o proxy dedicado agrega e retorna processos de todas as instânciasNAMED PREPARECOM_CHANGE_USER,COM_QUIT,COM_SET_OPTION
Comportamento dos atributos de leitura e escrita
O endpoint do proxy de banco de dados suporta dois modos de atributos de leitura e escrita. A tabela abaixo mostra como cada modo se comporta em condições normais e quando as instâncias somente leitura ficam indisponíveis.
| Atributos de leitura e escrita | Método de peso de leitura | Peso da instância primária | Normal | Após a exclusão da última instância somente leitura | Após falha de todas as instâncias somente leitura |
|---|---|---|---|---|---|
| Read-only | Automático ou Personalizado | Não pode ser especificado | Primária: nenhuma solicitação. Proxy: apenas solicitações de leitura. | Primária: nenhuma solicitação. Proxy: erro de conexão. | Primária: nenhuma solicitação. Proxy: erro de conexão. |
| Read and write | Automático | 0 (consulte Regras de alocação de peso de leitura pelo sistema) | Primária: apenas solicitações de escrita. Proxy: solicitações de leitura e escrita. | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. |
| Personalizado | Maior que 0 | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. | |
| 0 | Primária: apenas solicitações de escrita. Proxy: solicitações de leitura e escrita. | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. | Primária: solicitações de leitura e escrita. Proxy: solicitações de leitura e escrita. |
Nenhuma solicitação na primária : A instância primária não participa do encaminhamento de solicitações somente leitura.
Erro de conexão : Ocorre um erro de conexão quando o endpoint do proxy não possui instâncias disponíveis para roteamento.
No modo Read and write com o peso da primária definido como 0, as solicitações de leitura são direcionadas às instâncias somente leitura por padrão. Exceções: todas as instâncias somente leitura estão com falha, uma dica forçada foi especificada ou a separação de transações está ativada.
Para detalhes de configuração, consulte Configurar os atributos de leitura e escrita e pesos de leitura .
Próximos passos
Após ativar a separação de leitura e escrita, você pode:
Configurar atributos de leitura e escrita e pesos de leitura — ajuste quais instâncias lidam com as leituras e em qual proporção.
Verificar a separação de leitura e escrita — confirme se o tráfego está sendo roteado corretamente.
Ative temporariamente o SQL Explorer and Audit para inspecionar como as instruções SQL são distribuídas entre as instâncias (nota: este recurso é faturado separadamente; desative-o quando não for mais necessário).