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
Categoria |
Precaução |
---|---|
Restrições de versão |
|
Funções não suportadas |
|
Restrições de uso |
|
Análise HTAP |
|