Pular para o conteúdo principal

Alteração de banco de dados

Ao desenvolver novas funcionalidades ou refatorar as existentes, às vezes é inevitável alterar esquemas de banco de dados.

As coisas podem parecer assustadoras, pois, como usuário, geralmente você precisa:

  • Verificar duas vezes a diferença entre duas ou mais versões
  • Alterar o banco de dados de maneira segura e compatível com versões anteriores
  • Estar preparado para falhas potenciais, como ter um script de reversão
  • Substituir gradualmente as instâncias do Logto em execução pela nova versão

Ei, nós também somos desenvolvedores e sabemos que é desagradável fazer todas essas coisas arriscadas, mas obrigatórias. Então, por que não deixamos isso para alguém que não cometerá erros, como um CLI?

A partir de agora, seu processo de atualização será:

  • Execute logto db alt deploy de qualquer lugar que possa acessar o banco de dados
  • Substitua gradualmente as instâncias do Logto em execução pela nova versão

Vamos começar!

Determinar a versão a ser implantada

Se você tiver o Logto CLI instalado globalmente, é altamente recomendado atualizar o CLI para a versão mais recente antes de implantar para obter todas as alterações de banco de dados disponíveis. Em seguida, execute o comando:

logto db alteration deploy

Se o seu banco de dados estiver atualizado, você verá a mensagem abaixo:

[info] Found 0 alteration to deploy

Se você tiver alterações não implantadas, o CLI pedirá que você escolha a versão desejada:

? Choose the alteration target version (Use arrow keys)
> 1.2.0
1.0.0

Teoricamente, a versão a ser implantada deve corresponder à versão da sua instância do Logto. Enquanto isso, você pode usar o comando com uma versão alvo:

logto db alteration deploy 1.2.0

É útil quando você gostaria de fazer a alteração em um pipeline não-TTY, apenas lembre-se de passar a URL do banco de dados usando --db-url. Veja Implantação e configuração para configurar um trabalho de alteração em seu cluster.

nota

Para cada script de alteração, o Logto CLI executará todo o script em uma transação. Portanto, se uma implantação falhar, você pode facilmente continuar com o mesmo comando após corrigir o problema.

Reverter alterações

Nossos scripts de alteração também vêm com um script down que pode reverter as alterações. Para reverter o status do banco de dados para uma versão específica, substitua 1.0.0 pela sua versão alvo e execute o comando abaixo:

logto db alteration rollback 1.0.0
nota

Você pode encontrar todos os scripts de alteração neste diretório.

Para colaboradores

O branch master do repositório Logto pode conter scripts de alteração não publicados. Você pode precisar implantar manualmente as alterações "next" executando:

logto db alteration deploy next

Se você estiver desenvolvendo uma funcionalidade que requer alterações no banco de dados, além de atualizar o esquema do banco de dados, você também precisa fornecer um script no seguinte formato:

next-[timestamp]-what-to-do.ts

Verifique este diretório para referência.