Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Set read/write splitting attributes and read weights

Última atualização: Sep 17, 2026

Cada endpoint de proxy de banco de dados do ApsaraDB RDS for MySQL possui duas configurações que controlam o roteamento do tráfego SQL: um read/write attribute (define quais nós processam gravações e leituras) e um peso de leitura (determina como o tráfego de leitura é distribuído entre esses nós). A configuração correta desses parâmetros permite dimensionar o throughput de leitura, isolar cargas de trabalho de relatórios e executar manutenções com segurança, sem interromper o service.

Pré-requisitos

Antes de começar, verifique se você tem:

  • Enabled the database proxy para sua instância RDS

  • Uma instância executando a High-availability Edition ou Cluster Edition

    • High-availability Edition: Create at least one read-only instance para ativar a separação de leitura/gravação

    • Cluster Edition: Os nós primário e secundário gerenciam a separação de leitura/gravação nativamente

Atributos de leitura/gravação

Escolha um modo

Modo

Mais indicado para

Solicitações de gravação

Solicitações de leitura

Leitura/Gravação

Dimensionar o throughput de leitura nas instâncias primária e somente leitura

Sempre roteadas para a instância primária

Distribuídas pelos nós configurados com base no peso

Somente leitura

Isolar cargas de trabalho somente leitura, como relatórios

Não aceitas — os clientes recebem um erro de conexão

Distribuídas entre as instâncias somente leitura em round-robin

O modo Leitura/Gravação exige pelo menos uma instância primária e uma instância somente leitura na política de acesso do proxy. Ele oferece suporte a transaction splitting e connection pools.

O modo Somente leitura requer pelo menos uma instância somente leitura. A instância primária não participa do roteamento e não há suporte para separação de transações. Cada conexão de cliente mapeia para uma única conexão em uma instância somente leitura. A capacidade total de conexões equivale à soma das conexões de todas as instâncias somente leitura configuradas.

Para instâncias da Cluster Edition, o modo Leitura/Gravação envia gravações apenas ao nó primário, enquanto o modo Somente leitura roteia as leituras para os nós secundários em round-robin. A lista de permissões de IP do proxy de banco de dados permanece sincronizada automaticamente com a lista de permissões da instância primária.

Comportamento de roteamento em casos extremos

A tabela abaixo mostra o que acontece no modo Leitura/Gravação quando as instâncias somente leitura ficam indisponíveis e no modo Somente leitura em todos os cenários de peso.

Modo

Método de peso

Peso da primária

Operação normal

Última instância somente leitura excluída

Todas as instâncias somente leitura falham

Somente leitura

Atribuído pelo sistema ou Personalizado

Não pode ser definido

Primária: sem leituras ou gravações (sem encaminhamento). Proxy: legível, não gravável

Primária: sem leituras ou gravações. Proxy: erro de conexão

Primária: sem leituras ou gravações. Proxy: erro de conexão

Leitura/Gravação

Atribuído pelo sistema

0 (padrão)

Primária: apenas gravações, sem leituras. Proxy: leituras e gravações

Primária: leituras e gravações. Proxy: leituras e gravações

Primária: leituras e gravações. Proxy: leituras e gravações

Leitura/Gravação

Personalizado

Maior que 0

Primária: leituras e gravações. Proxy: leituras e gravações

Primária: leituras e gravações. Proxy: leituras e gravações

Primária: leituras e gravações. Proxy: leituras e gravações

Leitura/Gravação

Personalizado

0

Primária: apenas gravações, sem leituras. Proxy: leituras e gravações

Primária: leituras e gravações. Proxy: leituras e gravações

Primária: leituras e gravações. Proxy: leituras e gravações

No modo Somente leitura, "sem encaminhamento" significa que a instância primária não aceita solicitações de leitura. Se o proxy não tiver instâncias legíveis, os clientes receberão um erro de conexão.
No modo Leitura/Gravação com o peso da primária definido como 0, as leituras não são enviadas à instância primária por padrão. As leituras vão para a instância primária apenas se um nó somente leitura estiver íntegro, se um hint forçar o roteamento para ela ou se a separação de transações estiver ativada.

Algoritmos de balanceamento de carga

O proxy oferece suporte a dois algoritmos para distribuir solicitações de leitura entre os nós.

Versões anteriores à 2.25.4: Apenas o balanceamento de carga baseado em peso está disponível.

Versões 2.25.4 e posteriores: Ambos os algoritmos estão disponíveis. Use o balanceamento de carga baseado em solicitações ativas, a menos que tenha um motivo específico para preferir a distribuição estrita por peso — ele oferece melhor desempenho de pico para clusters e reduz o impacto da falha de um único nó.

Balanceamento de carga baseado em solicitações ativas (recomendado)

Roteia cada solicitação para o nó com a menor proporção (Active Requests / Node Weight). Esse método se adapta em tempo real a cargas desiguais e sofre menos impacto de nós lentos.

Exemplo com peso da primária 100, peso do nó somente leitura 1 igual a 200 e peso do nó somente leitura 2 igual a 200:

Rodada

Solicitações ativas da primária

Solicitações ativas do nó somente leitura 1

Solicitações ativas do nó somente leitura 2

Roteado para

1

1 (proporção: 0,01)

5 (proporção: 0,025)

6 (proporção: 0,03)

Nó primário

2

2

4

6

Nó somente leitura 1

3

2

5

3

Nó somente leitura 2

4

1

2

3

Nó somente leitura 1

5

1

2

1

Nó somente leitura 2

6

0

3

3

Nó primário

Balanceamento de carga baseado em peso

Distribui as solicitações de leitura estritamente pela proporção de peso usando um algoritmo round-robin. Cada rodada de agendamento seleciona o nó com o maior valor de current_weight e depois ajusta os pesos da seguinte forma:

  1. Seleção: O nó com o maior current_weight é selecionado. Empates são resolvidos pela posição na lista de configuração.

  2. Acumulação: Após cada rodada, o current_weight de cada nó aumenta pelo seu próprio peso.

  3. Redefinição: O current_weight do nó selecionado é reduzido pela soma dos pesos de todos os nós.

Exemplo com peso da primária 100, peso do nó somente leitura 1 igual a 200 e peso do nó somente leitura 2 igual a 200:

Rodada

**current_weight da primária**

**current_weight do nó somente leitura 1**

**current_weight do nó somente leitura 2**

Roteado para

1

0

0

0

Nó primário

2

−400

200

200

Nó somente leitura 1

3

−300

−100

400

Nó somente leitura 2

4

−200

100

100

Nó somente leitura 1

5

−100

−200

300

Nó somente leitura 2

6

0

0

0

Nó primário

Configure atributos de leitura/gravação e pesos de leitura

  1. Acesse a página RDS Instances. Na barra de navegação superior, selecione uma região e clique em no ID da instância de destino.

  2. No painel de navegação à esquerda, clique em Database Proxy.

  3. Na seção Connection Information, localize o endpoint de proxy de destino e clique em Modify Configuration na coluna Actions.

  4. Na caixa de diálogo, defina Read/Write Attributes como uma das opções a seguir:

    • Read/Write (Read/Write Splitting)

    • Read-only (Primary Instance Not Connected to Receive Write Requests)

  5. Na seção Read Weight Allocation, selecione um método de peso:

    Método

    Comportamento

    Quando usar

    Automatic Distribution

    O sistema atribui pesos com base no tipo de instância. Novas instâncias somente leitura são incluídas automaticamente com system-assigned weights — nenhuma atualização manual necessária.

    Clusters homogêneos em que a capacidade das instâncias é semelhante

    Custom

    Defina um peso explícito (0–10.000) para cada instância. Novas instâncias somente leitura têm peso padrão 0 e devem ser configuradas manualmente.

    Clusters heterogêneos em que você deseja controle preciso sobre a distribuição de tráfego

    Como funcionam os pesos: Um peso maior significa mais solicitações de leitura. Por exemplo, se a primária tiver peso 0 e três instâncias somente leitura tiverem pesos 100, 200 e 200, as leituras serão distribuídas na proporção 1:2:2. A primária ainda recebe todas as gravações.

O peso de leitura controla como o proxy distribui as leituras para os bancos de dados de back-end e é independente do recurso nearest access . Use ambos juntos para minimizar a latência.
Instâncias com replication delay configurado não podem ter seu peso definido.
Excluir uma instância somente leitura remove seu peso automaticamente. Os pesos das outras instâncias permanecem inalterados.
As alterações de peso entram em vigor imediatamente, sem interrupção do service. As conexões existentes não são desconectadas; tanto as novas quanto as existentes são roteadas com base nos pesos atualizados.
Antes de remover uma instância somente leitura do proxy: Defina seu peso como 0 primeiro, aguarde as sessões ativas serem drenadas e então remova-a. Consulte Tire uma instância somente leitura de operação sem interrupção do service para obter o procedimento completo.

Efeito das alterações de peso nas sessões existentes

O comportamento das alterações de peso nas sessões ativas depende da versão do mecanismo do proxy de banco de dados. Para verificar ou atualizar sua versão, consulte View the minor engine version of a database proxy e Upgrade the minor engine version of a database proxy.

Cenário

Versão do mecanismo 2.8.41 e posterior

Anterior à 2.8.41

Nova sessão se conecta a um nó com peso 0?

Não

Não

Peso alterado de diferente de zero para 0: nó removido das sessões existentes?

Não

Não

Peso alterado de diferente de zero para 0: sessões existentes roteadas pelo novo peso?

Não

Protocolo PS (Prepared Statement): Não. Protocolo baseado em texto: Sim

Peso alterado de 0 para diferente de zero: nó adicionado às sessões existentes?

Não

Sim

Peso alterado de 0 para diferente de zero: sessões existentes roteadas pelo novo peso?

Não

Protocolo PS: Não. Protocolo baseado em texto: Sim

Remover um nó somente leitura com peso diferente de zero causa conexões transitórias?

Não. O proxy possui um mecanismo retry_failed_reads, mas retornar um conjunto de resultados no momento da remoção ainda pode causar uma conexão transitória.

Sim

Remover um nó somente leitura com peso 0 causa conexões transitórias?

Não

Sim, se houver solicitações sendo executadas nesse nó no momento da remoção; caso contrário, Não

Encerrar uma conexão em um nó somente leitura com peso 0: a conexão é terminada?

Sim

Proxy 1.x: terminada apenas se existirem sessões ativas; caso contrário, a conexão não é terminada e é restabelecida automaticamente

Encerrar uma conexão em um nó somente leitura com peso diferente de zero: a conexão é terminada?

Práticas recomendadas

Tire uma instância somente leitura de operação sem interrupção do service

Para remover uma instância somente leitura (por exemplo, a instância C em um cluster com a primária A e as instâncias somente leitura B e C) sem interromper o tráfego:

  1. Acesse a página RDS Instances, selecione a região e clique em no ID da instância primária A.

  2. No painel de navegação à esquerda, clique em Database Proxy. Na seção Connection Topology Management, clique em Modify Configuration.

  3. Na caixa de diálogo Modify Proxy Endpoint (Terminal) Configuration, defina o peso de leitura do nó somente leitura C como 0.

  4. Acesse a página Monitoring and Alerts da instância somente leitura C. Na seção Session Connection, monitore a métrica active_session e aguarde até que ela caia para 0.

    Se active_session não chegar a 0 após uma espera razoável, encerre as sessões restantes manualmente.
  5. Na aba Database Proxy da instância primária A, remova a instância somente leitura C do endpoint de proxy.

Roteie instruções SQL específicas com hints

Use hints SQL para forçar a execução de uma instrução em um nó específico — útil para gravações dentro de um SELECT ou consultas que devem sempre usar uma instância somente leitura.

Instâncias da High-availability Edition:

  • /*FORCE_MASTER*/ — roteia a instrução para a instância primária, mesmo que seu peso de leitura seja 0

  • /*FORCE_SLAVE*/ — roteia a instrução para uma instância somente leitura

Instâncias da Cluster Edition:

  • /*FORCE_MASTER*/ — roteia a instrução para o nó primário, mesmo que seu peso de leitura seja 0

  • /*FORCE_SLAVE*/ — roteia a instrução para um nó secundário

Adicione o hint no início da instrução:

/*FORCE_MASTER*/ SELECT * FROM table_name;

Reduza a latência entre zonas

Para evitar um ponto único de falha, crie pelo menos duas instâncias somente leitura para uma instância primária e implante-as em zonas diferentes. Ative o recurso nearest access para minimizar a latência de rede do tráfego entre zonas. O recurso de acesso mais próximo controla como sua aplicação se conecta ao proxy; os pesos de leitura controlam como o proxy roteia as solicitações para os bancos de dados de back-end. Configure ambos juntos para obter desempenho ideal.

Perguntas frequentes

A instância primária ainda é legível após eu adicionar instâncias somente leitura?

Após a adição de instâncias somente leitura, a instância primária permanece legível e gravável o tempo todo. Adicionar instâncias somente leitura não afeta a capacidade de leitura ou gravação da instância primária.

A instância primária possui seu próprio endpoint de conexão direta. Esse endpoint conecta-se diretamente à instância primária sem passar pelo proxy de banco de dados, portanto, a instância primária é sempre legível e gravável por meio desse endpoint, independentemente da configuração de peso de leitura.

O endpoint do proxy de banco de dados é usado para separação de leitura/gravação. Quando conectado por meio do endpoint de proxy, as solicitações de leitura e gravação são roteadas com base nos pesos de leitura configurados. Quando o peso de leitura da instância primária é definido como 0, o proxy não encaminha solicitações de leitura para a instância primária por padrão. No entanto, a própria instância primária permanece legível e gravável por meio de seu endpoint de conexão direta. Quando todas as instâncias somente leitura apresentam latência superior ao limiar ou ficam indisponíveis, as solicitações de leitura são roteadas automaticamente de volta para a instância primária para garantir a continuidade dos negócios.

Para controlar o roteamento de leitura/gravação por meio do endpoint de proxy, ajuste os pesos de leitura na configuração do Database Proxy.

Referência de API

Operação de API

Descrição

DescribeDBProxy

Consulta os detalhes do proxy de banco de dados de uma instância RDS

DescribeDBProxyEndpoint

Consulta a política de acesso de um endpoint de proxy de banco de dados

ModifyDBProxyEndpoint

Modifica a política de acesso de um endpoint de proxy de banco de dados

Próximos passos