Este conteúdo foi traduzido por máquina para sua conveniência e a Huawei Cloud não pode garantir que o conteúdo foi traduzido com precisão. Para exibir o conteúdo original, use o link no canto superior direito para mudar para a página em inglês.
Atualizado em 2025-05-23 GMT+08:00

O que é Database Proxy?

Database Proxy é um serviço de proxy de rede localizado entre o TaurusDB e as aplicações. Ele é usado para lidar com todas as solicitações das aplicações para acessar instâncias de TaurusDB.

A separação de leitura/gravação significa que as solicitações de leitura e gravação são encaminhadas automaticamente por meio de endereços de proxy do banco de dados. Depois de criar uma instância de TaurusDB, você pode criar uma instância de proxy. Com o endereço de proxy, as solicitações de gravação são encaminhadas automaticamente para o nó primário e as solicitações de leitura são encaminhadas para cada nó com base na política de roteamento da instância de proxy, descarregando a pressão de leitura do nó primário.

Conceitos básicos

  • Endereço de proxy

    Depois de comprar uma instância de proxy, você pode exibir o endereço do proxy na página Database Proxy. A instância de proxy envia solicitações de gravação para o nó primário e solicitações de leitura para ler réplicas por meio desse endereço.

  • Modo de proxy

    Existem modos de proxy de leitura/gravação e somente leitura.

    Read/Write: todas as solicitações de gravação são roteadas apenas para o nó primário, e todas as solicitações de leitura são roteadas para os nós selecionados com base nos pesos de leitura ou nas conexões ativas.

    Read-only: todas as solicitações de leitura são roteadas para as réplicas de leitura selecionadas com base nos pesos de leitura ou nas conexões ativas. As solicitações de leitura não serão roteadas para o nó primário.

  • Separação de transação

    Com a separação de transações ativada para uma instância de proxy, a instância de proxy pode rotear solicitações de leitura antes das operações de gravação em uma transação para ler réplicas, reduzindo a carga no nó primário.

    Para obter mais informações sobre separação de transações, consulte Ativação da separação de transações para uma instância de proxy.

  • Pool de conexões

    As instâncias de proxy fornecem pools de conexão no nível da sessão, que ajudam a reduzir a carga do banco de dados causada pelo estabelecimento frequente de conexões curtas.

    Para obter mais informações sobre pools de conexão, consulte Ativação do pool de conexões para uma instância de proxy.

  • Política de roteamento

    As instâncias proxy suportam políticas de roteamento ponderadas e de balanceamento de carga.

    • Weighted: as solicitações de leitura são atribuídas aos nós com base nos pesos especificados.
    • Load balancing: as solicitações de leitura são atribuídas a nós com menos conexões ativas. Na política de balanceamento de carga, você não precisa configurar os pesos dos nós.

    Para obter mais informações sobre políticas de roteamento, consulte Modificação da política de roteamento de uma instância de proxy.

Como funciona a separação de leitura/gravação

Você pode criar uma ou mais instâncias de proxy para sua instância do TaurusDB para habilitar a separação de leitura/gravação.

  • Instância de proxy única

    Se sua instância de TaurusDB tiver apenas uma instância de proxy, as aplicações se conectarão à instância de proxy por meio do endereço de proxy. As solicitações de gravação são encaminhadas para o nó primário e as solicitações de leitura para o nó primário ou réplicas de leitura com base na política de roteamento que você especificar.

    Figura 1 Separação de leitura/gravação com apenas uma instância de proxy
  • Várias instâncias de proxy

    Para isolar cargas de trabalho umas das outras, você pode criar até quatro instâncias de proxy para uma instância de TaurusDB. Diferentes aplicações podem se conectar a diferentes instâncias de proxy, conforme necessário. As réplicas de leitura associadas das instâncias de proxy processam solicitações de leitura de diferentes aplicações para isolamento de carga de trabalho.

    Figura 2 Separação de leitura/gravação com várias instâncias de proxy

Cenários de aplicações

  • O nó primário está sobrecarregado devido a um grande número de solicitações em uma transação.
  • O nó primário está sobrecarregado devido a conexões excessivas.
  • A separação de leitura/gravação é necessária.

Vantagens da separação de leitura/gravação

  • Em comparação com a separação manual de leitura/gravação em aplicações, a separação de leitura/gravação usando endereços de proxy apresenta dimensionamento flexível e baixos custos de manutenção.
  • As solicitações de leitura são distribuídas para suas réplicas de leitura com base em pesos para equilibrar o tráfego do banco de dados e melhorar a utilização de recursos.
  • Uma instância de proxy roteia solicitações de leitura de uma aplicação apenas para suas réplicas de leitura associadas para isolar cargas de trabalho.
  • Por padrão, as instâncias de proxy fornecem proteção contra sobrecarga para evitar o OOM do servidor (memória esgotada) devido à pressão pesada quando você executa operações em grandes conjuntos de resultados. Esta função é ativada por padrão e não precisa ser configurada separadamente. A pressão causada pelo kernel lento depende do controle de fluxo.

Regras de roteamento de solicitação

  • Solicitações de gravação enviadas apenas para o nó primário
    • INSERT, UPDATE e DELETE
    • Todas as operações DDL (como criação de tabela/banco de dados, exclusão de tabela/banco de dados, alteração da estrutura da tabela e alteração de permissão)
    • Todas as solicitações em transações (Mas se a separação de transações estiver habilitada, algumas solicitações de leitura em transações poderão ser enviadas para réplicas de leitura. Para obter detalhes, consulte Ativação da separação de transações para uma instância de proxy.)
    • Funções definidas pelo usuário
    • Procedimentos armazenados
    • Instruções EXECUTE
    • Solicitações de várias declarações
    • Solicitações que usam tabelas temporárias
    • Todas as alterações nas variáveis de usuário
    • KILL em instruções SQL (não no comando KILL)
  • Solicitações de leitura enviadas apenas para o nó primário
    • Se as instruções de consulta estiverem em transações, as solicitações de transação serão roteadas para o nó primário. Se SET AUTOCOMMIT=0 for adicionado antes de uma instrução de consulta, as solicitações de transação serão roteadas para o nó primário.
    • Se todas as réplicas de leitura forem anormais ou se os pesos de leitura alocados para as réplicas de leitura forem 0, as solicitações serão roteadas para o nó primário. Você pode definir pesos de leitura para o nó primário e réplicas de leitura após a ativação da separação de leitura/gravação.
    • Ao executar instruções SQL:
      • Se várias instruções (por exemplo, insert xxx;select xxx) forem executadas, todas as solicitações subsequentes serão roteadas para o nó primário. Para restaurar a separação de leitura/gravação, desconecte a aplicação da instância e, em seguida, conecte-a novamente.
      • As operações de leitura com bloqueios (por exemplo, SELECT for UPDATE) serão roteadas para o nó primário.
      • Quando /*FORCE_MASTER*/ é usado, as solicitações serão roteadas para o nó primário.
      • Se a instrução HANDLER for executada, todas as solicitações subsequentes serão roteadas para o nó primário. Para restaurar a separação de leitura/gravação, desconecte a aplicação da instância e, em seguida, conecte-a novamente.
    • SELECT last_insert_id()
    • Todas as consultas de variáveis de usuário
  • Solicitações enviadas para o nó primário ou para uma réplica de leitura
    • SELECT não está em uma transação
    • O comando COM_STMT_EXECUTE
  • Solicitações sempre enviadas para todos os nós
    • Alterações em todas as variáveis do sistema
    • O comando USE

Lógica de processamento de atributos de leitura/gravação

Existem modos somente leitura e leitura/gravação para instâncias de proxy. A lógica de processamento de atributos de leitura/gravação varia dependendo do modo de proxy.

Modo de proxy

Política de roteamento

Peso do nó primário

Caso normal

Todas as réplicas de leitura estão com defeito

Somente leitura

Ponderada

Balanceamento de carga

Não configurável

O nó primário não processa solicitações somente leitura.

Endereço proxy: legível, mas não gravável

O nó primário não processa solicitações somente leitura.

Endereço de proxy: erro de conexão

Leitura/gravação

Balanceamento de carga

Atribuído pelo sistema

Nó primário: legível e gravável

Endereço do proxy: legível e gravável

Nó primário: legível e gravável

Endereço do proxy: legível e gravável

Ponderada

> 0

Nó primário: legível e gravável

Endereço do proxy: legível e gravável

Nó primário: legível e gravável

Endereço do proxy: legível e gravável

= 0

Nó primário: não legível, mas gravável

Endereço do proxy: legível e gravável

Nó primário: legível e gravável

Endereço do proxy: legível e gravável

Cobrança

As instâncias de proxy são gratuitas.

Precauções

Tabela 1 Precauções para instâncias de proxy

Categoria

Precaução

Restrições de versão

  • Se a versão do kernel da sua instância de TaurusDB for uma das seguintes, as instâncias de proxy não poderão ser criadas:
    • De 2.0.26.2 a 2.0.28.3
    • 2.0.29.1
  • Se a versão do kernel da sua instância de TaurusDB for anterior a 2.0.42.230601, apenas uma instância de proxy poderá ser criada.
  • Se a versão do kernel da sua instância de TaurusDB for 2.0.42.230601 ou posterior, até quatro instâncias de proxy poderão ser criadas.

Funções não suportadas

  • Instâncias de proxy não oferecem suporte a protocolos de compactação.
  • Instâncias de proxy não oferecem suporte ao nível de isolamento de transação READ-UNCOMMITTED.
  • As instâncias de proxy não oferecem suporte a leituras e gravações em nenhuma coluna que contenha mais de 16 MB de dados em uma tabela.
  • Os proxies de banco de dados não suportam o parâmetro de modo SQL PAD_CHAR_TO_FULL_LENGTH.

Restrições de uso

  • Para criar uma instância de proxy, a instância do TaurusDB deve ter pelo menos 8 vCPUs.
  • A separação de leitura/gravação pode ser ativada somente quando pelo menos uma réplica de leitura é criada.
  • Depois que a separação de leitura/gravação estiver ativada, a porta do banco de dados e o endereço IP privado da sua instância de TaurusDB não poderão ser alterados.
  • Se várias instruções forem executadas, todas as solicitações subsequentes serão roteadas para o nó primário. Para restaurar a função de divisão de leitura/gravação, desconecte a conexão de seus aplicativos e estabeleça uma conexão novamente.
  • Quando um endereço de proxy é usado, todas as solicitações de transação são roteadas para o nó primário (você pode usar a divisão de transações para rotear solicitações de leitura antes de gravar operações em uma transação para ler réplicas). A consistência de leitura sem transação não é garantida. Para garantir a consistência de leitura, encapsule as solicitações de leitura em uma transação.
  • Quando um endereço de proxy é usado, você pode executar o comando show processlist na instância de proxy ou na instância do TaurusDB. Se show processlist for executado em uma instância de proxy, somente os serviços entregues por meio de nós de proxy serão exibidos.
  • Se um nó de proxy estiver anormal, a execução de show processlist ou Kill na instância de proxy pode levar muito tempo, mas os serviços não são afetados.
  • Depois que um nó de proxy é excluído, os serviços no nó de proxy excluído podem ser exibidos quando show processlist é executado na instância de proxy.
  • Se Kill for executado na instância de proxy, informações de erro, como tempo limite, poderão ser exibidas ocasionalmente. Você pode executar show processlist novamente para verificar se os serviços foram eliminados com sucesso.
  • Se um nó de proxy for anormal, pode haver congelamento de quadros por 2 segundos quando você executa show processlist na instância de proxy. Os resultados ainda serão retornados.
  • Quando uma instância de proxy é usada, o tamanho de uma instrução SQL concatenada não pode exceder 100 MB para evitar que a análise da instrução consuma muitos recursos.

Análise HTAP

  • Níveis de consistência e pools de conexão não são suportados.
  • Somente a política de roteamento ponderado é suportada.
  • Somente o modo de proxy de leitura/gravação é suportado.