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 é ALT?

Sessões de banco de dados podem ser interrompidas quando uma réplica de leitura é promovida para primária, uma versão secundária é atualizada ou as especificações são alteradas. As aplicações precisam verificar o status da sessão e reagir às alterações determinando: se uma conexão ou transação de banco de dados foi interrompida, como compensar as transações e como reconstruir os contextos da sessão.

Para resolver esses problemas, o TaurusDB fornece ALT, que impede interrupções de conexão e transação de banco de dados durante a alternância do sistema de banco de dados. Não há necessidade de compensar transações ou reconstruir contextos de sessão, garantindo a continuidade da aplicação.

Arquitetura

Figura 1 Arquitetura

ALT pode ser ativada para suas conexões de aplicação. Quando você se conecta a uma instância de proxy e, em seguida, promove uma réplica de leitura para primária, altera especificações ou atualiza a versão secundária, o sistema pode replicar suas sessões de back-end. Depois que um limite de transação segura for atingido, as sessões de back-end serão totalmente clonadas no nó de destino, e as cargas de trabalho nem sequer serão notadas.

Um limite de transação segura refere-se ao status de que uma transação na sessão atual foi confirmada, mas a próxima transação não foi iniciada. Um limite de transação segura pode ser alcançado em qualquer uma das seguintes situações:

  • Cada instrução em um bloco de transação com autocommit ativado é executada.
    start transaction;
    DML;
    commit;
  • A operação de commit está completa com o autocommit desativado.
  • Uma única instrução DML ou DDL é executada.
  • O bloqueio é liberado quando um bloqueio de tabela, bloqueio de backup ou bloqueio definido pelo usuário é usado.

Precauções

Tabela 1 Precauções

Categoria

Precaução

Restrições de versão

  • A versão do kernel da instância de TaurusDB deve ser 2.0.54.240600 ou posterior.
  • A versão do kernel da instância de proxy deve ser 2.24.06.000 ou posterior.

Restrições de uso

  • Para usar o ALT, envie uma solicitação escolhendo Service Tickets > Create Service Ticket no canto superior direito do console de gerenciamento.
  • A instância do TaurusDB tem pelo menos uma réplica de leitura. Uma instância de proxy foi criada e a instância do TaurusDB deve ser conectada por meio do endereço de proxy.
  • Instâncias de proxy no modo somente leitura não suportam ALT.
  • Instâncias de proxy no modo primário/em espera não oferecem suporte a ALT.
  • Instâncias do TaurusDB de nó único ou multiprimárias não oferecem suporte a ALT.
  • Quando você ativar ALT pela primeira vez, a instância de TaurusDB será reinicializada. Ativar ou desativar ALT fará com que uma instância de proxy seja reinicializada. Depois que o ALT for desativado para todas as instâncias de proxy, a instância de TaurusDB também será reinicializada.
  • O intervalo de tempo limite de drenagem de transação para ALT é controlado por rds_tac_drain_timeout. Este parâmetro tem como padrão 5s e varia de 1s a 60s.
    • Aumente esse intervalo para cargas de trabalho pesadas, várias declarações preparadas ou transações demoradas.
    • Diminuir este intervalo não é recomendado. Se houver conexões que não drenam transações dentro do intervalo de tempo limite de drenagem de transação configurado, a ALT não entrará em vigor para essas conexões.
  • Durante uma alternância de ALT, as conexões em espera serão estabelecidas no novo host por um breve período, igual em número às do nó primário original. Certifique-se de que o número máximo de conexões da instância do TaurusDB seja pelo menos o dobro do número atual de conexões. Para alterar o número máximo de conexões, você precisa avaliar as especificações da instância e o uso de memória. Para obter detalhes, consulte Qual é o número máximo de conexões com uma instância de TaurusDB?
  • ALT suporta instruções preparadas. Durante uma alternância, os contextos das instruções preparadas são reconstruídos. Se houver um grande número de instruções preparadas, a taxa de sucesso da alternância pode ser afetada.
  • É aconselhável realizar uma alternância de ALT fora do horário de pico. Se o nó primário e as réplicas de leitura estiverem sobrecarregados, a taxa de sucesso da alternância poderá ser afetada.
  • Para obter detalhes sobre restrições de sintaxe e função de instâncias de proxy, consulte Precauções para instâncias de proxy.

Funções não suportadas

  • A habilitação de ALT faz com que sua instância perca o suporte para alguns valores de variáveis de sistema.
    • innodb_ft_user_stopword_table: só pode ser definido como NULL.
    • transaction_write_set_extraction: só pode ser definido como OFF.
    • profiling: não pode ser ajustado para 1 ou ON.
  • ALT não suporta Transparent Data Encryption (TDE).
  • ALT não está disponível quando qualquer um dos seguintes recursos de proxy está ativado:
    • Pool de conexões em nível de sessão
    • Qualquer coluna que contenha mais de 16 MB de dados
    • Qualquer conjunto de resultados de consulta que contenha mais de 16 MB de dados
    • Cache de instruções preparado
  • ALT não suporta tabelas temporárias criadas por usuários.
  • ALT não é suportada nos seguintes cenários em que um limite de transação segura não pode ser alcançado:
    • Os blocos de transação do InnoDB não são confirmados em tempo hábil.
    • Existem bloqueios de tabela não liberados, bloqueios de usuário, bloqueios de backup e bloqueios de binlog.
    • As transações XA não são confirmadas ou revertidas.
  • O ALT provavelmente falhará se uma alternância, atualização de versão secundária ou alteração de especificação ocorrer com frequência dentro de um curto período de tempo.
  • Se ALT estiver ativado, as instruções preparadas não poderão ser transferidas nos seguintes cenários:
    • O cursor é aberto e não fechado em uma instrução preparada.
    • A variável de uma instrução preparada salvou o tipo LONG_DATA.