Gerenciar um RDS Proxy - Amazon Aurora

Gerenciar um RDS Proxy

A seguir, você encontra uma explicação de como gerenciar operações e configurações do RDS Proxy. Esses procedimentos ajudam a aplicação a fazer o uso mais eficiente de conexões de banco de dados e alcançar o máximo de reutilização de conexão. Quanto mais você puder aproveitar a reutilização de conexões, poderá economizar mais sobrecarga de CPU e de memória. Isso, por sua vez, reduz a latência da aplicação e permite que o banco de dados dedique mais de seus recursos ao processamento de solicitações da aplicação.

Modificar um RDS Proxy

Você pode alterar determinadas configurações associadas a um proxy depois de criar o proxy. Faça isso modificando o próprio proxy, seu grupo de destino associado ou ambos. Cada proxy tem um grupo de destino associado.

Importante

Os valores nos campos Client authentication type (Tipo de autenticação do cliente) e IAM authentication (Autenticação do IAM) se aplicam a todos os segredos do Secrets Manager associados a esse proxy. Para especificar valores diferentes para cada segredo, modifique seu proxy usando a AWS CLI ou a API.

Como modificar as configurações de um proxy
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Proxies.

  3. Na lista de proxies, escolha o proxy cujas configurações você deseja modificar ou vá para sua página de detalhes.

  4. Para Actions (Ações), escolha Modify (Modificar).

  5. Insira ou escolha as propriedades a serem modificadas. Você pode modificar o seguinte:

    • Proxy identifier (Identificador de proxy): renomeie o proxy inserindo um novo identificador.

    • Idle client connection timeout (Tempo limite da conexão do cliente ociosa): insira um período para o tempo limite da conexão do cliente ociosa.

    • IAM role (Perfil do IAM): altere o perfil do IAM usada para recuperar os segredos do Secrets Manager.

    • Secrets Manager secrets (Segredos do Secrets Manager): adicione ou remova segredos do Secrets Manager. Esses segredos correspondem a nomes de usuário e senhas de banco de dados.

    • Client authentication type (Tipo de autenticação do cliente): (somente PostgreSQL) Altere o tipo de autenticação das conexões do cliente com o proxy.

    • IAM Authentication (Autenticação do IAM): exija ou desabilite a autenticação do IAM para conexões com o proxy.

    • Require Transport Layer Security (Exija Transport Layer Security): ative ou desative o requisito de segurança do Transport layer Security (TLS).

    • VPC grupo de segurança (Grupos de segurança da VPC): adicione ou remova grupos de segurança da VPC para uso do proxy.

    • Enable enhanced logging (Habilite o registro em log aprimorado): habilite ou desabilite o registro em log aprimorado.

  6. Selecione Modify.

Se você não encontrou as configurações listadas que deseja alterar, use o procedimento a seguir para atualizar o grupo de destino para o proxy. O grupo de destino associado a um proxy controla as configurações relacionadas às conexões físicas do banco de dados. Cada proxy tem um grupo de destino associado, chamado default, que é criado automaticamente com o proxy.

Você só pode modificar o grupo de destino na página de detalhes do proxy, não na lista da página Proxies.

Como modificar as configurações de um grupo de destino de proxy
  1. Na página Proxies, acesse a página de detalhes de um proxy.

  2. Em Target groups (Grupos de destino), escolha o link default. Atualmente, todos os proxies têm um único grupo de destino chamado default.

  3. Na página de detalhes do grupo de destino default (padrão) escolha Modify (Modificar).

  4. Escolha novas configurações para as propriedades que você pode modificar:

    • Database (Banco de dados): escolha outra instância de banco de dados do RDS ou outro cluster do Aurora.

    • Connection pool maximum connections (Conexões máximas do grupo de conexões): ajuste a porcentagem das conexões máximas disponíveis que o proxy pode usar.

    • Session pinning filters (Filtros de fixação de sessões): (opcional) escolha um filtro de fixação de sessões. Isso pode ajudar a reduzir problemas de performance devido à reutilização insuficiente no nível de transação para conexões. O uso dessa configuração exige compreensão do comportamento da aplicação e das circunstâncias em que o proxy do RDS fixa uma sessão a uma conexão de banco de dados. Atualmente, a configuração não é compatível com o PostgreSQL e a única opção é EXCLUDE_VARIABLE_SETS.

    • Connection borrow timeout (Tempo limite do empréstimo de conexões): ajuste o intervalo do tempo limite de empréstimo de conexões. Essa configuração se aplica quando o número máximo de conexões já está sendo usado para o proxy. A configuração determina quanto tempo o proxy espera que uma conexão fique disponível antes de retornar um erro de tempo limite.

    • Initialization query (Consulta de inicialização): (opcional) adicione uma consulta de inicialização ou modifique a atual. Você pode especificar uma ou mais instruções SQL para o proxy executar ao abrir cada nova conexão de banco de dados. A configuração normalmente é usada com instruções SET para garantir que cada conexão tenha configurações idênticas, como fuso horário e conjunto de caracteres. Para várias instruções, use um ponto e vírgula como separador. Também é possível incluir diversas variáveis em uma única instrução SET, como SET x=1, y=2. No momento, não há suporte à consulta de inicialização no PostgreSQL.

    Não é possível alterar determinadas propriedades, como o identificador do grupo de destino e o mecanismo de banco de dados.

  5. Escolha Modify target group (Modificar grupo de destino).

Para modificar um proxy usando a AWS CLI, use os comandos modify-db-proxy, modify-db-proxy-target-group, deregister-db-proxy-targets e register-db-proxy-targets.

Com o comando modify-db-proxy, é possível alterar propriedades como as seguintes:

  • O conjunto de segredos do Secrets Manager usados pelo proxy.

  • Se o TLS é necessário.

  • O tempo limite do cliente ocioso.

  • Se deseja registrar em log informações adicionais de instruções SQL para depuração.

  • O perfil do IAM usada para recuperar segredos do Secrets Manager.

  • Os grupos de segurança usados pelo proxy.

O exemplo a seguir mostra como renomear um proxy existente.

aws rds modify-db-proxy --db-proxy-name the-proxy --new-db-proxy-name the_new_name

Para modificar configurações relacionadas à conexão ou renomear o grupo de destino, use o comando modify-db-proxy-target-group. Atualmente, todos os proxies têm um único grupo de destino chamado default. Ao trabalhar com esse grupo de destino, especifique o nome do proxy e default para o nome do grupo de destino.

O exemplo a seguir mostra como verificar primeiro a configuração de MaxIdleConnectionsPercent de um proxy e alterá-la usando o grupo de destino.

aws rds describe-db-proxy-target-groups --db-proxy-name the-proxy { "TargetGroups": [ { "Status": "available", "UpdatedDate": "2019-11-30T16:49:30.342Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 50, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } ] } aws rds modify-db-proxy-target-group --db-proxy-name the-proxy --target-group-name default --connection-pool-config ' { "MaxIdleConnectionsPercent": 75 }' { "DBProxyTargetGroup": { "Status": "available", "UpdatedDate": "2019-12-02T04:09:50.420Z", "ConnectionPoolConfig": { "MaxIdleConnectionsPercent": 75, "ConnectionBorrowTimeout": 120, "MaxConnectionsPercent": 100, "SessionPinningFilters": [] }, "TargetGroupName": "default", "CreatedDate": "2019-11-30T16:49:27.940Z", "DBProxyName": "the-proxy", "IsDefault": true } }

Com os comandos deregister-db-proxy-targets e register-db-proxy-targets, você altera a qual instância de banco de dados do RDS ou cluster de bancos de dados Aurora o proxy está associado por meio de seu grupo de destino. Atualmente, cada proxy pode se conectar a uma instância de banco de dados do RDS ou cluster de bancos de dados Aurora. O grupo de destino controla os detalhes da conexão de todas as instâncias de banco de dados do RDS em uma configuração multi-AZ. Ou o grupo de destino controla os detalhes da conexão de todas as instâncias de banco de dados em um cluster do Aurora.

O exemplo a seguir começa com um proxy associado a um cluster do Aurora MySQL chamado cluster-56-2020-02-25-1399. O exemplo mostra como alterar o proxy para que ele possa se conectar a outro cluster chamado provisioned-cluster.

Ao trabalhar com uma instância de banco de dados do RDS, você especifica a opção --db-instance-identifier. Ao trabalhar com um cluster de bancos de dados Aurora, você especifica a opção --db-cluster-identifier.

O exemplo a seguir modifica um proxy Aurora MySQL. Um proxy Aurora PostgreSQL tem a porta 5432.

aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [ { "Endpoint": "instance-9814.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-9814" }, { "Endpoint": "instance-8898.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-8898" }, { "Endpoint": "instance-1018.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-1018" }, { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "cluster-56-2020-02-25-1399" }, { "Endpoint": "instance-4330.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "instance-4330" } ] } aws rds deregister-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier cluster-56-2020-02-25-1399 aws rds describe-db-proxy-targets --db-proxy-name the-proxy { "Targets": [] } aws rds register-db-proxy-targets --db-proxy-name the-proxy --db-cluster-identifier provisioned-cluster { "DBProxyTargets": [ { "Type": "TRACKED_CLUSTER", "Port": 0, "RdsResourceId": "provisioned-cluster" }, { "Endpoint": "gkldje.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "gkldje" }, { "Endpoint": "provisioned-1.demo.us-east-1.rds.amazonaws.com", "Type": "RDS_INSTANCE", "Port": 3306, "RdsResourceId": "provisioned-1" } ] }

Para modificar um proxy utilizando a API do RDS, utilize as operações ModifyDBProxy, ModifyDBProxyTargetGroup, DeregisterDBProxyTargets e RegisterDBProxyTargets.

Com ModifyDBProxy, é possível alterar propriedades como as seguintes:

  • O conjunto de segredos do Secrets Manager usados pelo proxy.

  • Se o TLS é necessário.

  • O tempo limite do cliente ocioso.

  • Se deseja registrar em log informações adicionais de instruções SQL para depuração.

  • O perfil do IAM usada para recuperar segredos do Secrets Manager.

  • Os grupos de segurança usados pelo proxy.

Com ModifyDBProxyTargetGroup, você pode modificar as configurações relacionadas à conexão ou renomear o grupo de destino. Atualmente, todos os proxies têm um único grupo de destino chamado default. Ao trabalhar com esse grupo de destino, especifique o nome do proxy e default para o nome do grupo de destino.

Com DeregisterDBProxyTargets e RegisterDBProxyTargets, você altera a qual instância de banco de dados do RDS ou cluster de bancos de dados Aurora o proxy está associado por meio de seu grupo de destino. Atualmente, cada proxy pode se conectar a uma instância de banco de dados do RDS ou cluster de bancos de dados Aurora. O grupo de destino controla os detalhes da conexão de todas as instâncias de banco de dados do RDS em uma configuração multi-AZ ou todas as instâncias de banco de dados em um cluster do Aurora.

Adicionar um novo usuário do banco de dados

Em alguns casos, é possível adicionar um novo usuário de banco de dados a uma instância de banco de dados do RDS ou um cluster do Aurora associado a um proxy. Nesse caso, adicione ou reformule um segredo do Secrets Manager para armazenar as credenciais desse usuário. Para fazer isso, escolha uma das seguintes opções:

  • Crie um segredo do Secrets Manager usando o procedimento descrito em Configuração de credenciais de banco de dados no AWS Secrets Manager.

  • Atualize o perfil do IAM para conceder ao proxy do RDS acesso ao novo segredo do Secrets Manager. Para fazer isso, atualize a seção de recursos da política de perfil do IAM.

  • Se o novo usuário tomar o lugar de um existente, atualize as credenciais armazenadas no segredo do Secrets Manager do proxy do usuário existente.

Alterar a senha de um usuário de banco de dados

Em alguns casos, você pode alterar a senha de um usuário de banco de dados em uma instância de banco de dados do RDS ou cluster do Aurora associado a um proxy. Nesse caso, atualize o segredo do Secrets Manager correspondente com a nova senha.

Configurar configurações de conexões

Para ajustar o grupo de conexões do RDS Proxy, você pode modificar as seguintes configurações:

IdleClientTimeout

Você pode especificar por quanto tempo uma conexão de cliente pode ficar ociosa para que o proxy possa fechá-la. O padrão é de 1.800 segundos (30 minutos).

Uma conexão de cliente é considerada ociosa quando a aplicação não envia uma nova solicitação dentro do tempo especificado após a conclusão da solicitação anterior. A conexão de banco de dados subjacente permanece aberta e é retornada ao grupo de conexões. Portanto, ela está disponível para ser reutilizada para novas conexões de cliente. Considere reduzir o tempo limite de conexão do cliente ocioso se desejar que o proxy remova proativamente as conexões obsoletas. Se a workload estabelecer conexões frequentes com o proxy, considere aumentar o tempo limite de conexão do cliente ocioso para economizar o custo de estabelecimento de conexões.

Essa configuração é representada pelo Tempo limite de conexão do cliente ocioso no console do RDS e na configuração IdleClientTimeout na AWS CLI e a API. Para saber como alterar o valor do Tempo limite de conexão do cliente ocioso no console do RDS, consulte AWS Management Console. Para saber como alterar o valor da configuração IdleClientTimeout, use o comando da CLI modify-db-proxy ou a operação da API ModifyDBProxy.

MaxConnectionsPercent

Você pode limitar o número de conexões que um Proxy RDS pode estabelecer com o banco de dados. Você especifica o limite como uma porcentagem do máximo de conexões disponíveis para o banco de dados. O proxy não cria todas essas conexões com antecedência. Essa configuração reserva o direito do proxy de estabelecer essas conexões conforme a necessidade do workload.

Por exemplo, suponha que você configure o RDS Proxy para usar 75% do máximo de conexões para o banco de dados. Nesse caso, o banco de dados oferece compatibilidade com no máximo 1.000 conexões simultâneas. Nesse caso, o RDS Proxy pode abrir até 750 conexões de banco de dados.

Essa configuração é representada pelo campo Connection pool maximum connections (Número máximo de conexões para o grupo de conexões) no console do proxy do RDS ou pelo parâmetro MaxConnectionsPercent na AWS CLI e na API. Para saber como alterar o valor Connection pool maximum connections (Número máximo de conexões para o grupo de conexões) no console do RDS, consulte AWS Management Console. Para saber como alterar o valor de MaxConnectionsPercent, consulte o comando da CLI modify-db-proxy-target-group ou a operação da API ModifyDBProxyTargetGroup.

Importante

Se o cluster de banco de dados fizer parte de um banco de dados global com o encaminhamento de gravação ativado, reduza o valor MaxConnectionsPercent de seu proxy pela cota alocada para o encaminhamento de gravação. A cota de encaminhamento de gravação é definida no parâmetro do cluster de banco de dados aurora_fwd_writer_max_connections_pct. Para obter informações sobre o encaminhamento de gravação, consulte Como usar o encaminhamento de gravação em um banco de dados global Amazon Aurora.

Para obter informações sobre os limites de conexões de banco de dados, consulte Número máximo de conexões com uma instância de bancos de dados Aurora MySQL e Número máximo de conexões com uma instância de bancos de dados Aurora PostgreSQL.

MaxIdleConnectionsPercent

Você pode controlar o número de conexões de banco de dados ociosas que o proxy do RDS pode manter no grupo de conexões. O proxy do RDS considera uma conexão de banco de dados em seu grupo como ociosa quando não há atividade na conexão por cinco minutos.

Você especifica o limite como uma porcentagem do máximo de conexões disponíveis para o banco de dados. O valor padrão é 50% de MaxConnectionsPercent e o limite superior é o valor de MaxConnectionsPercent. Com um valor alto, o proxy deixa uma alta porcentagem de conexões de banco de dados ociosas abertas. Com um valor baixo, o proxy fecha uma alta porcentagem de conexões de banco de dados ociosas. Se suas workloads forem imprevisíveis, considere definir um valor alto para MaxIdleConnectionsPercent. Isso significa que o RDS Proxy pode acomodar picos de atividade sem abrir muitas novas conexões de banco de dados.

Essa configuração é representada pela configuração MaxIdleConnectionsPercent do DBProxyTargetGroup na AWS CLI e na API. Para saber como alterar o valor de MaxIdleConnectionsPercent, consulte o comando da CLI modify-db-proxy-target-group ou a operação da API ModifyDBProxyTargetGroup.

nota

O proxy do RDS encerra as conexões com o banco de dados depois de 24 horas, quando elas não estiverem mais em uso. O proxy executa essa ação independentemente do valor da configuração máxima de conexões ociosas.

Para obter informações sobre os limites de conexões de banco de dados, consulte Número máximo de conexões com uma instância de bancos de dados Aurora MySQL e Número máximo de conexões com uma instância de bancos de dados Aurora PostgreSQL.

ConnectionBorrowTimeout

É possível especificar quanto tempo o proxy do RDS espera que uma conexão de banco de dados no grupo de conexão fique disponível antes de retornar um erro de tempo limite. O padrão é 120 segundos. Esta configuração se aplica quando o número de conexões está no máximo e, portanto, nenhuma conexão está disponível no grupo de conexões. Isso também se aplica caso nenhuma instância de banco de dados apropriada esteja disponível para lidar com a solicitação porque, por exemplo, uma operação de failover está em andamento. Usando essa configuração, é possível definir o melhor período de espera para a sua aplicação sem precisar alterar o tempo limite da consulta no código da sua aplicação.

Essa configuração é representada pelo campo Connection borrow timeout (Tempo limite de empréstimo de conexões) no console do RDS ou pela configuração ConnectionBorrowTimeout de DBProxyTargetGroup na AWS CLI ou API. Para saber como alterar o valor do campo Connection borrow timeout (Tempo limite de empréstimo de conexões) no console do RDS, consulte AWS Management Console. Para saber como alterar o valor de ConnectionBorrowTimeout, consulte o comando da CLI modify-db-proxy-target-group ou a operação da API ModifyDBProxyTargetGroup.

Como evitar fixação

A multiplexação é mais eficiente quando as solicitações de banco de dados não dependem de informações de estado de solicitações anteriores. Nesse caso, o proxy do RDS pode reutilizar uma conexão na conclusão de cada transação. Exemplos de tais informações de estado incluem a maioria das variáveis e parâmetros de configuração que você pode alterar por meio de instruções SET ou SELECT. Por padrão, as transações SQL em uma conexão de cliente podem multiplexar entre conexões de banco de dados subjacentes.

Suas conexões com o proxy podem entrar em um estado conhecido como fixação. Quando uma conexão é fixada, cada transação posterior usa a mesma conexão de banco de dados subjacente até que a sessão termine. Outras conexões de cliente também não podem reutilizar essa conexão de banco de dados até que a sessão termine. A sessão termina quando a conexão do cliente é descartada.

O proxy do RDS automaticamente fixa uma conexão de cliente a uma conexão de banco de dados específica quando detecta uma alteração no estado de sessão que não é apropriada para outras sessões. A fixação reduz a eficácia da reutilização de conexões. Se todas ou quase todas as suas conexões forem fixadas, considere modificar o código da aplicação ou a workload para reduzir as condições que provocam a fixação.

Por exemplo, suponha que a aplicação altere uma variável de sessão ou um parâmetro de configuração. Nesse caso, as declarações posteriores poderão contar que a nova variável ou parâmetro estará em vigor. Assim, quando o proxy do RDS processa solicitações para alterar variáveis ou definições da configuração da sessão, ele fixa essa sessão para a conexão com o banco de dados. Dessa forma, o estado da sessão permanece em vigor para todas as transações posteriores na mesma sessão.

Em alguns mecanismos de banco de dados, essa regra não se aplica a todos os parâmetros que você pode definir. O proxy do RDS monitora determinadas instruções e variáveis. Portanto, o proxy do RDS não fixa a sessão quando você a modifica. Nesse caso, o proxy do RDS apenas reutiliza a conexão para outras sessões que tenham os mesmos valores para essas configurações. Para obter as listas de declarações e variáveis monitoradas do Aurora MySQL, consulte O que o RDS Proxy monitora para bancos de dados do Aurora MySQL.

O que o RDS Proxy monitora para bancos de dados do Aurora MySQL

Veja a seguir as instruções do MySQL que o proxy do RDS monitora:

  • DROP DATABASE

  • DROP SCHEMA

  • USE

Veja a seguir as variáveis do MySQL que o proxy do RDS monitora:

  • AUTOCOMMIT

  • AUTO_INCREMENT_INCREMENT

  • CHARACTER SET (or CHAR SET)

  • CHARACTER_SET_CLIENT

  • CHARACTER_SET_DATABASE

  • CHARACTER_SET_FILESYSTEM

  • CHARACTER_SET_CONNECTION

  • CHARACTER_SET_RESULTS

  • CHARACTER_SET_SERVER

  • COLLATION_CONNECTION

  • COLLATION_DATABASE

  • COLLATION_SERVER

  • INTERACTIVE_TIMEOUT

  • NAMES

  • NET_WRITE_TIMEOUT

  • QUERY_CACHE_TYPE

  • SESSION_TRACK_SCHEMA

  • SQL_MODE

  • TIME_ZONE

  • TRANSACTION_ISOLATION (or TX_ISOLATION)

  • TRANSACTION_READ_ONLY (or TX_READ_ONLY)

  • WAIT_TIMEOUT

Reduzir a fixação

O ajuste de performance do proxy do RDS envolve a tentativa de maximizar a reutilização de conexões em nível de transação (multiplexação) minimizando a fixação.

Em alguns casos, o proxy do RDS não consegue ter certeza de que é seguro reutilizar uma conexão de banco de dados fora da sessão atual. Nesses casos, ele mantém a sessão na mesma conexão até que a sessão termine. Esse comportamento de fallback é chamado de fixação.

É possível reduzir a fixação da seguinte maneira:

  • Evite solicitações de banco de dados desnecessárias que podem causar fixação.

  • Defina variáveis e definições de configuração de forma consistente em todas as conexões. Dessa forma, as sessões posteriores têm mais probabilidade de reutilizar conexões que têm essas configurações específicas.

    No entanto, para a configuração do PostgreSQL, uma variável leva à fixação da sessão.

  • Para um banco de dados da família de mecanismos do MySQL, aplique um filtro de fixação de sessão ao proxy. Você pode isentar certos tipos de operações de fixar a sessão se souber que isso não afeta o funcionamento correto da aplicação.

  • Veja com que frequência a fixação ocorre monitorando a métrica DatabaseConnectionsCurrentlySessionPinned do Amazon CloudWatch. Para obter informações sobre essa e outras métricas do CloudWatch, consulte Monitorar métricas do proxy do RDS com o Amazon CloudWatch.

  • Se você usar instruções SET para executar uma inicialização idêntica para cada conexão de cliente, poderá fazê-lo enquanto preserva a multiplexação no nível de transação. Nesse caso, você move as instruções que configuram o estado da sessão inicial para a consulta de inicialização usada por um proxy. Esta propriedade é uma string que contém uma ou mais instruções SQL, separadas por ponto e vírgula.

    Por exemplo, você pode definir uma consulta de inicialização para um proxy que define determinados parâmetros de configuração. O proxy do RDS aplica essas configurações sempre que configura uma nova conexão para esse proxy. Você pode remover as instruções SET correspondentes do código de sua aplicação, para que elas não interfiram na multiplexação em nível de transação.

    Para ver métricas sobre a frequência com que a fixação ocorre para um proxy, consulte Monitorar métricas do proxy do RDS com o Amazon CloudWatch.

Condições que causam fixação para todas as famílias de mecanismos

O proxy fixa a sessão à conexão atual nas seguintes situações em que a multiplexação pode causar um comportamento inesperado:

  • Qualquer instrução com um tamanho de texto maior do que 16 KB faz com que o proxy fixe a sessão.

  • As instruções preparadas fazem com que o proxy fixe a sessão. Essa regra se aplicará se a instrução preparada usar texto SQL ou o protocolo binário.

Condições que causam fixação no Aurora MySQL

Para o MySQL, as seguintes interações também geram fixação:

  • As instruções explícitas de bloqueio de tabela LOCK TABLE, LOCK TABLES ou FLUSH TABLES WITH READ LOCK fazem com que o proxy fixe a sessão.

  • A criação de bloqueios nomeados usando GET_LOCK faz com que o proxy fixe a sessão.

  • A definição de uma variável de usuário ou definir uma variável de sistema (com algumas exceções) faz com que o proxy fixe a sessão. Se essa situação reduzir muito a reutilização de conexões, você poderá optar por operações SET para não causar fixação. Para obter informações sobre como fazer isso definindo a propriedade de fixação de filtros, consulte Criar um RDS Proxy e Modificar um RDS Proxy.

  • A criação de uma tabela temporária faz com que o proxy fixe a sessão. Dessa forma, o conteúdo da tabela temporária é preservado durante toda a sessão, independentemente dos limites de transação.

  • A chamada das funções ROW_COUNT, FOUND_ROWS e LAST_INSERT_ID às vezes causa fixação.

    As circunstâncias exatas em que essas funções causam fixação podem diferir entre versões do Aurora MySQL compatíveis com MySQL 5.6 e MySQL 5.7.

A chamada de procedimentos armazenados e de funções armazenadas não causa fixação. O proxy do RDS não detecta nenhuma alteração de estado de sessão resultante dessas chamadas. Portanto, verifique se a aplicação não altera o estado da sessão dentro de rotinas armazenadas e confie nesse estado de sessão para persistir entre transações. Por exemplo, se um procedimento armazenado criar uma tabela temporária que se destina a persistir entre transações, essa aplicação não será compatível com proxy do RDS atualmente.

Se você tiver conhecimento especializado sobre o comportamento da aplicação, poderá ignorar o comportamento de fixação de determinadas instruções da aplicação. Para fazer isso, escolha a opção Filtros de fixação de sessão ao criar o proxy. Atualmente, é possível cancelar a fixação de sessão para definir variáveis de sessão e configurações.

Condições que causam fixação no Aurora PostgreSQL

Para o PostgreSQL, as seguintes interações também geram a fixação:

  • Usar comandos SET

  • Usar o protocolo de consulta estendida do PostgreSQL, como ao usar configurações padrão do JDBC

  • Criar sequências, tabelas ou visualizações temporárias

  • Declarar cursores

  • Descartar o estado da sessão

  • Escutar em um canal de notificação

  • Carregar um módulo de biblioteca, como auto_explain

  • Manipular sequências usando funções como nextval e setval

  • Interagir com bloqueios usando funções como pg_advisory_lock e pg_try_advisory_lock

  • Usar instruções preparadas, definir parâmetros ou redefinir um parâmetro ao seu padrão

Excluir um RDS Proxy

Você pode excluir um proxy quando não precisar mais dele. Você pode excluir um proxy porque a aplicação que o estava usando não é mais relevante. Ou poderá excluir um proxy se você tirar de serviço a instância ou o cluster de banco de dados associado.

Como excluir um proxy
  1. Faça login no AWS Management Console e abra o console do Amazon RDS em https://console.aws.amazon.com/rds/.

  2. No painel de navegação, escolha Proxies.

  3. Escolha o proxy a ser excluído da lista.

  4. Escolha Delete Proxy (Excluir proxy).

Para excluir um proxy de banco de dados, use o comando delete-db-proxy da AWS CLI. Para remover associações relacionadas, use também o comando deregister-db-proxy-targets.

aws rds delete-db-proxy --name proxy_name
aws rds deregister-db-proxy-targets --db-proxy-name proxy_name [--target-group-name target_group_name] [--target-ids comma_separated_list] # or [--db-instance-identifiers instance_id] # or [--db-cluster-identifiers cluster_id]

Para excluir um proxy de banco de dados, chame a função DeleteDBProxy da API do Amazon RDS. Para excluir itens e associações relacionados, você também chama as funções DeleteDBProxyTargetGroup e DeregisterDBProxyTargets.