Introdução à divisão de leitura/gravação
As instâncias de proxy de banco de dados permitem que as solicitações de leitura e gravação sejam roteadas automaticamente por meio de um endereço de divisão de leitura/gravação. Você pode ativar a divisão de leitura/gravação após a criação das instâncias. As solicitações de gravação são roteadas automaticamente para o nó primário e as solicitações de leitura são roteadas para réplicas de leitura e para o nó primário por pesos definidos pelo usuário. Atualmente, você pode criar até quatro instâncias de proxy para serviços complexos que exigem isolamento. Você pode usar os endereços de conexão correspondentes para se conectar a instâncias de proxy com base nos requisitos de serviço.
O proxy do banco de dados é gratuito.
Restrições
- A divisão de leitura/gravação pode ser ativada somente quando pelo menos uma réplica de leitura é criada.
- Depois que a divisão de leitura/gravação estiver ativada, a porta do banco de dados, o endereço IP privado e o grupo de segurança das instâncias do GaussDB(for MySQL) não poderão ser alterados.
- A divisão de leitura/gravação não suporta o protocolo de compressão.
- Se forem executadas várias declarações, todas as solicitações subsequentes serão encaminhadas para o nó primário. Para restaurar a função de divisão de leitura/gravação, você precisa desconectar a conexão entre as aplicações e o endereço de divisão de leitura/gravação e estabelecer uma conexão novamente.
- Quando o endereço de divisão de leitura/gravação é usado, todas as solicitações de transação são roteadas para o nó primário (você pode usar o recurso de divisão de transações para rotear solicitações de leitura antes de operações de gravação 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 divisão de leitura/gravação é usado, você pode executar o comando show processlist em uma instância de proxy ou de GaussDB(for MySQL). 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.
- Quando um nó de proxy é 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, a carga de trabalho no nó de proxy excluído pode ser exibida quando show processlist é executado na instância de proxy.
- Quando kill é executado, informações de erro, como tempo limite, podem 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. O resultado será retornado normalmente.
- As instâncias de proxy não podem ser criadas se o isolamento da transação for READ-UNCOMMITTED.
- Até quatro instâncias de proxy podem ser criadas para uma instância do GaussDB(for MySQL).
- Para criar instâncias de proxy, certifique-se de que os dados em uma única coluna de uma tabela não podem exceder 16 MB.
- Quando instâncias de proxy são usadas, o tamanho total das instruções não pode exceder 100 MB. Caso contrário, as instâncias de proxy precisarão consumir muitos recursos para analisar as instruções SQL.
Cenários
Ao ativar a divisão de leitura/gravação, você precisa vincular os nós (incluindo o nó primário e a réplica de leitura) a instâncias de proxy.
- Diferentes aplicações podem se conectar à instância do GaussDB(for MySQL) por meio dos endereços de divisão de leitura/gravação de diferentes instâncias de proxy. As solicitações de leitura são roteadas para as instâncias de proxy às quais as aplicações se conectam. Você também pode vincular nós a ou remover nós de instâncias de proxy.
- Um nó primário ou réplica de leitura pode ser vinculado a várias instâncias de proxy ao mesmo tempo e, em seguida, é atribuído diferentes pesos de leitura. Para obter detalhes sobre como atribuir pesos, consulte Atribuição de pesos de leitura.
- No modo de leitura/gravação, todas as solicitações de gravação são roteadas para o nó primário e as solicitações de leitura são roteadas para cada nó com base nos pesos de leitura.
- No modo somente de leitura, somente solicitações de leitura podem ser roteadas para réplicas de leitura com base nos pesos de leitura. Mesmo que o nó primário seja atribuído com um peso de leitura, o peso não terá efeito.
- Por padrão, as instâncias de proxy fornecem proteção contra sobrecarga para evitar OOM (memória esgotada) do servidor devido à forte pressão quando os usuários executam operações em grandes conjuntos de resultados. Esta função é ativada por padrão e não precisa ser configurada separadamente. Se a pressão for causada pelo kernel do banco de dados, será necessário configurar a política de controle de fluxo.