Quando o tráfego de leitura e gravação compartilha um único caminho de conexão, cargas de trabalho intensas em gravação podem bloquear consultas analíticas, e você não tem controle direto sobre como o tráfego de leitura é distribuído entre as instâncias somente leitura. O endpoint de proxy de banco de dados resolve isso permitindo que você atribua um atributo de leitura/gravação a cada endpoint e defina pesos de leitura por instância, para rotear o tráfego com precisão e dimensionar a capacidade de leitura de forma independente.
Pré-requisitos
Antes de começar, verifique se você tem:
O recurso de proxy de banco de dados ativado para sua instância RDS. Consulte Ativar o recurso de proxy de banco de dados
Pelo menos uma instância somente leitura associada à sua instância RDS, obrigatória para a divisão de leitura/gravação. Consulte Criar uma instância somente leitura do ApsaraDB RDS for PostgreSQL
Atributos de leitura/gravação
Um endpoint de proxy opera em um dos dois modos:
|
Atributo |
Caso de uso típico |
Comportamento do tráfego |
|
Read/Write |
Tráfego geral de aplicação com divisão de leitura/gravação |
Todas as solicitações de gravação são encaminhadas para a instância primária. As solicitações de leitura são distribuídas entre as instâncias somente leitura com base no peso de leitura. O endpoint deve estar conectado à instância primária e a pelo menos uma instância somente leitura. |
|
Read-only |
Relatórios, análises e outras cargas de trabalho somente leitura |
A instância primária não recebe tráfego por esse endpoint. As novas conexões são distribuídas entre as instâncias somente leitura conectadas em ordem round-robin. Cada conexão de cliente é direcionada a uma instância somente leitura. A capacidade total de conexão equivale à soma das conexões disponíveis em todas as instâncias somente leitura conectadas. |
A lista de permissões de IP do proxy de banco de dados é mantida automaticamente em sincronia com a lista de permissões de IP da instância primária. Qualquer atualização na lista de permissões da instância primária é aplicada imediatamente ao proxy.
Comportamento por atributo e peso
A tabela a seguir descreve como o tráfego é tratado em cada combinação de atributo de leitura/gravação e configurações de peso.
| Atributo | Método de peso | Peso da instância primária | Operação normal | Após a exclusão da última instância somente leitura | Após todas as instâncias somente leitura apresentarem falha |
|---|---|---|---|---|---|
| Somente leitura | Automático ou personalizado | Não configurável | Primária: sem tráfego. Proxy: somente solicitações de leitura. | Primária: sem tráfego. Proxy: erro de conexão. | Primária: sem tráfego. Proxy: erro de conexão. |
| Leitura/Gravação | Automático | 0 (consulte Pesos de leitura padrão) | Primária: somente solicitações de gravação. Proxy: solicitações de leitura e gravação. | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. |
| Personalizado | Peso > 0 | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. | |
| Peso = 0 | Primária: somente solicitações de gravação. Proxy: solicitações de leitura e gravação. | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. | Primária: solicitações de leitura e gravação. Proxy: solicitações de leitura e gravação. |
Observações sobre os termos da tabela:
Sem tráfego para a instância primária: a instância primária é excluída do encaminhamento de solicitações somente leitura.
Erro de conexão: ocorre quando um endpoint de proxy somente leitura não tem instâncias somente leitura disponíveis para atender às solicitações.
Modo leitura/gravação com peso da instância primária = 0: as solicitações de leitura não são encaminhadas para a instância primária em condições normais. Se todas as instâncias somente leitura apresentarem falha, um hint forçado for especificado ou a divisão de transações estiver ativa, o proxy encaminha as solicitações de leitura para a instância primária como fallback.
Configure os atributos de leitura/gravação e o peso de leitura
Acesse a página Instances. Na barra de navegação superior, selecione a região onde sua instância RDS reside e clique em no ID da instância.
No painel de navegação à esquerda, clique em Database Proxy.
Na seção Connection Information, localize o endpoint a ser modificado na coluna Proxy Endpoint (Terminal) ID e clique em Modify Configuration na coluna Actions.
-
Defina Read/Write Attributes como uma das seguintes opções:
Read/Write (Read/Write Splitting)
Read-only (Primary Instance Not Connected to Receive Write Requests)
-
Defina Read Weight Allocation como Automatic ou Custom:
Automatic: O sistema atribui um peso de leitura a cada instância com base em suas especificações. Ao adicionar uma instância somente leitura, o sistema a inclui automaticamente na divisão de leitura/gravação com um peso adequado — sem necessidade de atualização manual. Para os valores de peso atribuídos pelo sistema, consulte Pesos de leitura padrão.
Custom: Especifique um peso de leitura para cada instância somente leitura. Valores válidos: 0–10000. Ao criar uma nova instância somente leitura, o peso inicial é 0 — atualize o peso para incluí-la na distribuição de tráfego.
NotaUm peso maior significa que a instância recebe proporcionalmente mais solicitações de leitura. Por exemplo, se três instâncias somente leitura têm pesos 100, 200 e 200 e o peso da instância primária é 0, a instância primária processa apenas gravações e as instâncias somente leitura recebem tráfego na proporção
1:2:2
.
As alterações de peso entram em vigor imediatamente, sem interrupção de conexões. As conexões existentes não são afetadas; somente as novas conexões utilizam os pesos atualizados.
Os pesos de leitura são automaticamente invalidados quando uma instância somente leitura é liberada, ou quando a instância primária apresenta falha ou ultrapassa o limiar de latência de replicação. Os pesos voltam a ser válidos após a recuperação da instância.
Rotear solicitações com hints SQL
Para substituir a decisão de roteamento do proxy em uma consulta específica, adicione um hint de roteamento à instrução SQL:
-
Force a consulta para a instância primária:
/*FORCE_MASTER*/ SELECT * FROM table_name; -
Force a consulta para uma instância somente leitura:
/*FORCE_SLAVE*/ SELECT * FROM table_name;
Referência de API
|
Operação |
Descrição |
|
Consultar os detalhes de um proxy de banco de dados |
|
|
Consultar os detalhes de um endpoint de proxy de banco de dados |
|
|
Modificar o atributo de leitura/gravação e o peso de leitura de um endpoint de proxy de banco de dados |