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:
- CLI
- npx
logto db alteration deploy
npx @logto/cli 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:
- CLI
- npx
logto db alteration deploy 1.2.0
npx @logto/cli 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.
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:
- CLI
- npx
logto db alteration rollback 1.0.0
npx @logto/cli db alteration rollback 1.0.0
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:
- CLI
- npx
logto db alteration deploy next
npx @logto/cli 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.