Antes de usar o proxy de banco de dados do ApsaraDB RDS for MySQL, revise estas notas para evitar comportamento inesperado na sua aplicação.
Faturamento
Os proxies da General-purpose Edition são gratuitos. Há cobrança separada para proxies dedicados, instâncias somente leitura e instâncias primárias.
Ao liberar a instância primária, o proxy de banco de dados é liberado automaticamente, e não há cobrança pelo proxy dedicado após a liberação.
Modelo de conexão
O proxy de banco de dados usa um modelo de conexão 1:N: quando a sua aplicação se conecta ao proxy, ele estabelece, simultaneamente, conexões com a instância primária e com todas as instâncias somente leitura configuradas.
O proxy em si não limita o número máximo de conexões — as especificações dos nós de banco de dados de back-end determinam esse limite. Se o pool de conexões no nível da transação estiver desativado, cada conexão de cliente cria uma conexão correspondente na instância primária e em cada instância somente leitura. Mantenha as especificações de conexão máxima da instância primária e das instâncias somente leitura o mais consistentes possível. Caso contrário, a instância com o menor limite de conexão definirá o limite efetivo para a sua aplicação.
O recurso de pool de conexões vem habilitado por padrão, o que pode fazer com que o comando show processlist exiba conexões de usuário ociosas. Quando a conexão é feita por meio de um endpoint de proxy, o show processlist mescla e retorna os resultados de todos os nós.
Condições que bloqueiam o roteamento para a instância primária
Determinadas condições levam o proxy a rotear todas as solicitações subsequentes na conexão atual para a instância primária, ignorando a divisão de leitura e escrita. Para retomar a divisão de leitura e escrita após qualquer uma das condições a seguir, feche a conexão atual e estabeleça uma nova.
|
Condição |
Descrição |
Como mitigar |
|
Divisão de transações desativada |
Todas as solicitações de transação são enviadas para a instância primária. |
Ative a divisão de transações nas configurações do proxy. |
|
Execução de múltiplas instruções |
Uma consulta multi-statement é executada. |
Reescreva as consultas para usar instruções únicas sempre que possível. |
|
Chamada de stored procedure |
Uma stored procedure é chamada. |
Reconecte-se após a conclusão da stored procedure. |
Divisão de leitura e escrita
Não há garantia de consistência de leitura para leituras não transacionais ao usar um endpoint de proxy para divisão de leitura e escrita. Para garantir a consistência de leitura, encapsule as solicitações de leitura em uma transação ou use a sintaxe de hint.
Ao usar instruções de hint com a linha de comando do MySQL, inclua a opção -c. Sem ela, a ferramenta de linha de comando do MySQL filtra os hints silenciosamente. Para obter mais informações, acesse Usar sintaxe de hint.
Operações de instância somente leitura
Adicionar ou reiniciar uma instância somente leitura: Após adicionar uma instância somente leitura a um endpoint de proxy ou reiniciar uma instância somente leitura conectada, o sistema roteia as solicitações de conexões novas e existentes para a instância nova ou reiniciada.
Remover uma instância somente leitura: As instruções em execução nessa instância falham imediatamente. Para retirar uma instância somente leitura de serviço sem interromper a sua aplicação, atualize a versão menor do mecanismo do proxy para 2.8.41 ou posterior e defina o atributo de leitura e escrita do proxy como Read/Write antes de remover a instância. Para obter instruções de atualização, acesse Atualizar a versão menor do mecanismo de um proxy de banco de dados. Para configurar pesos, acesse Configure atributos de leitura e escrita e pesos de leitura.
Switchover de instância
Se o recurso de conexões persistentes não estiver ativado, alterar a configuração da instância primária ou de uma instância somente leitura pode desencadear um switchover de instância. Para obter mais informações sobre os efeitos de um switchover, acesse Efeitos de um switchover de instância.
Se a instância primária estiver bloqueada, as instâncias de proxy na versão 2.9.5 ou posterior não são liberadas — elas continuam a processar solicitações de leitura, mas não processam solicitações de escrita.
Limitações
|
Área |
Limitação |
|
Protocolo |
Os endpoints de proxy não oferecem suporte ao protocolo de compactação. |
|
Paridade de parâmetros |
Para instâncias da High-availability Edition, o parâmetro |
|
VPC e vSwitch |
O proxy não oferece suporte à alteração de Virtual Private Clouds (VPCs) ou vSwitches. Modificar a VPC da instância primária não altera a VPC do proxy. O proxy ainda pode se comunicar com a instância primária, mas o endpoint de proxy fica inacessível por meio da VPC modificada. |
|
Formato CIDR |
Ao usar uma conta privilegiada para configurar o intervalo de hosts de uma conta, o proxy oferece suporte a blocos CIDR no formato |
|
Lista de permissões de IP |
O proxy compartilha a lista de permissões de IP da instância primária. A atualização da lista de permissões de IP da instância primária atualiza automaticamente a lista de permissões de IP do proxy. |
Log binário por meio do proxy
Em redes de alta latência, o consumo de logs binários (Binlog) por meio de um endpoint de proxy pode fazer com que o throughput de rede do Binlog Dump se torne um gargalo de desempenho, o que causa atraso de replicação em sistemas downstream. Em vez disso, obtenha os dados do Binlog configurando uma conexão direta com o nó do banco de dados na sua aplicação ou serviço.
Recurso de acesso mais próximo
A migração da zona pode invalidar o recurso de acesso mais próximo para algumas zonas. Após a migração, a nova zona fica acessível por padrão, e o recurso de acesso mais próximo para a zona original se torna inválido. Se você configurar a zona de destino de um endpoint de proxy para uma zona diferente da zona padrão, o recurso de acesso mais próximo para essa zona também se torna inválido.
A tabela a seguir mostra exemplos de cenários.
| Cenário | Zona atual da instância de proxy | Endpoint de proxy | Acesso mais próximo | Zona de destino da instância de proxy | Zona padrão do endpoint de proxy | Zona de destino do endpoint de proxy | Acesso mais próximo após a migração |
|---|---|---|---|---|---|---|---|
Cenário 1: Migrar de Zona A + Zona B para Zona A + Zona C |
Zona A | Endpoint de proxy a | Zona A | Zona A | Zona A | Zona A | Zona A |
| Zona C | Inválido | ||||||
| Zona B | Endpoint de proxy b | Zona B | Zona C | Zona C | Zona C | Zona C | |
| Zona D | Inválido | ||||||
Cenário 2: Migrar de Zona A + Zona B para Zona C + Zona D |
Zona A | Endpoint de proxy a | Zona A | Zona C | Zona C | Zona C | Zona C |
| Zona E | Inválido | ||||||
| Zona B | Endpoint de proxy b | Zona B | Zona D | Zona D | Zona D | Zona D | |
| Zona E | Inválido |
O recurso de acesso mais próximo é compatível apenas com o Modo de Implantação 1 de proxies dedicados. Se esse recurso estiver ativado e você quiser mudar para um proxy de uso geral ou para um modo de implantação diferente, desative primeiro o recurso de acesso mais próximo. Para obter instruções, acesse Configure o acesso mais próximo. Para obter mais informações sobre as arquiteturas de implantação de proxy, acesse Arquitetura de implantação de proxy.