Todos os produtos
Search
Central de documentação

ApsaraDB RDS:Configure persistent connections

Última atualização: Jun 26, 2026

Operações de O&M, como switchovers na instância ApsaraDB RDS for MySQL, podem causar quedas de conexão que afetam as aplicações. O recurso de conexão persistente evita essas interrupções ao manter as conexões ativas durante tais operações, melhorando a disponibilidade e reduzindo os custos de O&M.

Visão geral

O recurso de conexão persistente do database proxy para ApsaraDB RDS for MySQL garante que as conexões entre a aplicação e o proxy permaneçam ativas durante eventos como switchovers de instância. Isso impede que aplicações conectadas por meio de um endpoint de database proxy recebam mensagens de erro de conexão, conforme ilustram as figuras a seguir.

image.png

image.png

Como funciona

O database proxy utiliza dois tipos de conexão: conexões de frontend entre o proxy e o cliente, e conexões de backend entre o proxy e o banco de dados. Durante um switchover de instância, o proxy mantém a conexão de frontend mesmo quando a conexão de backend é interrompida. Esse mecanismo permite que o proxy forneça conexões persistentes.

Para conexões de backend com uma instância ApsaraDB RDS for MySQL, a chave para a persistência é restaurar o estado da conexão após uma interrupção.

O estado da conexão para ApsaraDB RDS for MySQL geralmente inclui variáveis de sistema, variáveis definidas pelo usuário, tabelas temporárias, codificação de conjunto de caracteres, status de transação e informações de prepared statement. Este tópico usa set names utf8mb4 como exemplo para explicar o funcionamento do recurso de conexão persistente para ApsaraDB RDS for MySQL.

Switchover

Durante um switchover, o database proxy para ApsaraDB RDS for MySQL mantém uma conexão persistente em três etapas:

Nota

As operações de O&M que envolvem um switchover incluem:

  • Switchover primário/secundário

  • Atualização de versão secundária do mecanismo

  • Alteração de parâmetro que exige reinicialização da instância

  • Alteração de configuração da instância primária

  1. Início do switchover: Bloqueio de novas conexões e solicitações

    O proxy não consegue preservar transações. Por isso, trata as sessões de forma diferente com base em seus estados:

    • Sessões com transações ativas durante o período de bloqueio: o proxy encaminha as solicitações à instância primária de backend para execução.

    • Sessões que iniciam novas transações durante o período de bloqueio: o proxy bloqueia as solicitações e o cliente aguarda uma resposta do servidor.

    • Sessões com transações ainda ativas após o término do período de bloqueio: o proxy encerra a conexão e o banco de dados de backend reverte as transações não confirmadas.

    image.png

  2. Durante o switchover: Alternância das conexões existentes

    Durante o switchover, o estado das conexões existentes é modificado:

    • Conexões que não podem ser mantidas: o proxy encerra toda a conexão.

    • Conexões que podem ser mantidas: o proxy as alterna para a nova instância de banco de dados.

    • Limpeza do pool: o proxy remove as conexões com a instância primária original do pool de conexões.

    image.png

  3. Após o switchover: Restauração das conexões

    Para conexões mantidas com sucesso, o proxy estabelece conexões com a nova instância primária e restaura o estado da conexão.

    image.png

Failover

Um failover é um evento não planejado no qual uma falha do sistema faz com que uma instância ApsaraDB RDS promova automaticamente uma instância secundária para se tornar a nova primária.

O proxy armazena em cache as instruções SQL em execução no banco de dados ou pendentes de encaminhamento. Quando ocorre uma falha no banco de dados, a conexão de backend entre o proxy e o banco de dados é interrompida. Após detectar o failover, o proxy não se desconecta imediatamente do cliente. Em vez disso, ele encaminha solicitações de leitura com falha para uma instância de banco de dados disponível e restaura o estado da conexão.

Importante

Para solicitações de gravação com falha, o proxy não consegue determinar se as gravações no banco de dados foram bem-sucedidas. Portanto, a persistência de sessão durante um failover não oferece suporte a solicitações de gravação.

Ativar conexões persistentes

Nota

A partir de 9 de janeiro de 2024, o recurso de conexão persistente é ativado por padrão para instâncias ApsaraDB RDS for MySQL elegíveis ao ativar o database proxy. É possível desativar esse recurso a qualquer momento.

Pré-requisitos

Conexões persistentes para switchovers

A instância ApsaraDB RDS deve atender aos seguintes requisitos:

  • Versão do mecanismo: MySQL 5.6, 5,7, 8,0 ou 8,4

  • Edição: RDS High-availability Edition ou RDS Cluster Edition

  • Tipo de armazenamento: disco em nuvem ou Premium Local SSDs

  • Tipo de proxy: uso geral ou dedicado

  • O database proxy está ativado e a versão do proxy é 1.14.5_20231207 ou posterior.

Conexões persistentes para failovers

A instância ApsaraDB RDS deve atender aos seguintes requisitos:

  • Versão do mecanismo: MySQL 5.6, 5,7 ou 8,0

  • Edição: RDS High-availability Edition ou RDS Cluster Edition

  • Tipo de armazenamento: disco em nuvem ou Premium Local SSDs

  • Tipo de proxy: dedicado

    Nota

    O database proxy de uso geral oferece suporte a conexões persistentes apenas para switchovers. O database proxy dedicado oferece suporte a conexões persistentes tanto para switchovers quanto para failovers.

  • O database proxy está ativado e a versão do proxy é 2.9.1 ou posterior.

Procedimento

  1. Acesse a página ApsaraDB RDS Instances. Na barra de navegação superior, selecione a região onde a instância está localizada. Em seguida, localize a instância e clique em seu ID.

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

  3. Na seção Basic Information, clique em Enable ao lado de Persistent Connection.

    Nota

    Se o texto 'persistent connection' não for exibido, significa que sua instância não atende aos requisitos para ativar conexões persistentes.

Usar conexões persistentes

Pré-requisitos

  • O database proxy está ativado.

  • O recurso de conexão persistente está ativado para o database proxy.

Procedimento

  1. Acesse a página ApsaraDB RDS Instances. Na barra de navegação superior, selecione a região onde a instância está localizada. Em seguida, localize a instância e clique em seu ID.

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

  3. Configure uma política de acesso para o endpoint de database proxy de destino conforme os requisitos do seu negócio. Para obter mais informações, consulte Configurar uma política de acesso para um endpoint de database proxy. Defina Read/Write Attributes como Read/Write (Read/Write Splitting).

  4. Solicite um endpoint interno ou público para o database proxy conforme os requisitos do seu negócio. Para obter mais informações, consulte Definir um endpoint de database proxy.

  5. Na aplicação, use o endpoint interno ou público e o número da porta do database proxy para se conectar ao banco de dados.

  6. Quando uma operação de O&M envolvendo um switchover ocorrer na instância de banco de dados, o database proxy manterá a conexão automaticamente. A conexão da aplicação com o proxy não será interrompida ao usar o endpoint de database proxy.

Limitações

Durante um switchover, o recurso de conexão persistente não consegue manter conexões nos seguintes cenários:

  • Conexões com um conjunto de resultados incompleto, nas quais o servidor MySQL ainda não terminou de enviar todos os dados.

  • Conexões com transações não confirmadas.

  • Conexões que usaram uma instrução change user.

  • Conexões que usaram uma instrução LOAD DATA.

  • Conexões com tabelas temporárias.

  • Conexões usadas para assinar logs binários por meio do endpoint de database proxy.

  • Chamadas às funções FOUND_ROWS(), ROW_COUNT() e LAST_INSERT_ID() não são suportadas. Embora essas funções possam ser chamadas, a precisão dos resultados retornados não pode ser garantida. O MySQL não recomenda mais o uso de SELECT FOUND_ROWS(). Recomendamos substituir SELECT FOUND_ROWS() por SELECT COUNT(*) FROM tb1 nas consultas. Para obter mais informações, consulte FOUND_ROWS().

Observações de uso

  • Como as conexões podem se reconectar, o ID de thread da conexão atual retornado pela consulta select connection_id() pode mudar.

  • Devido ao restabelecimento das conexões, o endereço IP e a porta exibidos em show processlist ou no SQL Explorer podem não corresponder ao endereço IP e à porta reais do cliente.

  • Se uma conexão possuir variáveis definidas pelo usuário, ela poderá ser mantida, mas as variáveis se tornarão inválidas.

Desativar conexões persistentes

  1. Acesse a página ApsaraDB RDS Instances. Na barra de navegação superior, selecione a região onde a instância está localizada. Em seguida, localize a instância e clique em seu ID.

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

  3. Na seção Basic Information, clique em Disable ao lado de Persistent Connection.

Teste do recurso

Este tópico fornece resultados de teste apenas para cenários de switchover.

Ambiente de teste

  • Instância ApsaraDB RDS for MySQL de teste:

    • MySQL 8.0, RDS High-availability Edition

    • Tipo de instância: mysql.x2.xlarge.2c (dedicada, 8 vCPUs, 16 GB de memória)

  • Ferramenta de teste: Sysbench

  • Dados de teste:

    • 100 tabelas, com 40.000 linhas em cada tabela.

    • Número de threads simultâneas: 128.

Método de teste

Teste a retenção de conexões de uma instância ApsaraDB RDS for MySQL em diferentes cenários de O&M. A retenção de conexões é a porcentagem de conexões que permanecem ativas após uma operação de O&M.

Execute o seguinte comando de teste:

sysbench --db-driver=mysql --mysql-host=127.X.X.1 --mysql-port=3306 --mysql-user=username --mysql-password='' --tables=100 --table-size=40000 --threads=128 --mysql-db=sbtest --report-interval=5  --time=600 oltp_read_write run
Nota

A tabela a seguir descreve os principais parâmetros no comando de teste.

  • db-driver: Especifica o mecanismo de banco de dados.

  • mysql-host: Especifica o endpoint de database proxy.

  • tables: Especifica o número de tabelas no banco de dados.

  • table-size: Especifica o número de registros em cada tabela.

  • threads: Especifica o número de threads simultâneas.

  • time: Especifica a duração do teste em segundos.

Resultados do teste

Nos cenários de O&M testados, a instância ApsaraDB RDS for MySQL atingiu 100% de retenção de conexões.

Cenário de switchover

Retenção

Atualização de versão secundária do mecanismo

100%

Switchover primário/secundário

100%

Alteração de configuração da instância primária

100%

Alteração de parâmetro que exige reinicialização

100%

Referência de API

API

Descrição

ModifyDBProxy

Modifica o recurso de database proxy para uma instância ApsaraDB RDS.

DescribeDBProxy

Consulta os detalhes do database proxy para uma instância ApsaraDB RDS.

Documentos relacionados

Ativar o database proxy