Skip to main content

Visão geral

O VillageSQL segue políticas claras de versionamento e compatibilidade para ajudar você a tomar decisões bem fundamentadas sobre implantação e atualizações.

Versionamento do VillageSQL

O VillageSQL usa o Versionamento Semântico (SemVer) para comunicar a natureza e o impacto das mudanças em cada lançamento.

Formato da versão

As versões seguem o formato: MAJOR.MINOR.PATCH

Regras de incremento de versão

  • Versão MAJOR (por exemplo, 1.0.0 → 2.0.0): mudanças incompatíveis que podem exigir modificações no código ou migrações de banco de dados
  • Versão MINOR (por exemplo, 0.1.0 → 0.2.0): novos recursos e funcionalidades adicionados de forma compatível com versões anteriores
  • Versão PATCH (por exemplo, 0.0.1 → 0.0.2): correções de bugs e pequenas melhorias compatíveis com versões anteriores
O VillageSQL está atualmente em desenvolvimento pré-1.0 (versão 0.x.x). Durante essa fase, as interfaces de API e de extensões podem mudar com mais frequência à medida que estabilizamos a plataforma.

Builds de desenvolvimento

Versões com um sufixo de pré-lançamento (por exemplo, 0.0.6-dev) são builds de desenvolvimento. Por padrão, o servidor bloqueia atualizações a partir de um banco de dados inicializado com um build de desenvolvimento. Os builds de desenvolvimento não são testados quanto à compatibilidade de atualização e podem incluir mudanças incompatíveis de esquema ou de protocol. Para permitir isso, inicie o servidor com --villagesql-allow-unsafe-dev-upgrade:
Sem a flag, o servidor sai com um erro se detectar um banco de dados de versão de desenvolvimento:
Com a flag, o servidor registra um aviso e prossegue:
O servidor sai com um erro se a flag for especificada, mas a versão atual não for um build de desenvolvimento:
Ou se nenhuma atualização de esquema estiver sendo realizada:

Atualizações mínimas

Iniciar o servidor com --upgrade=MINIMAL ignora as etapas de atualização que não são absolutamente necessárias. As atualizações de esquema do VillageSQL não estão entre as etapas ignoradas. Quando uma atualização do servidor é necessária e o servidor é iniciado nesse modo, ele registra um aviso informando que ignorou a atualização do servidor e, em seguida, executa as atualizações de esquema do VillageSQL se a versão de esquema do VillageSQL armazenada não corresponder à versão do build.
Se a atualização de esquema do VillageSQL falhar nesse modo, o servidor aborta a inicialização. Um datadir inicializado por um build de desenvolvimento continua sendo recusado nesse modo. Inicie com --villagesql-allow-unsafe-dev-upgrade para permitir isso.

Mudanças de base de código

Cada versão do VillageSQL está vinculada a uma base de código — o fork upstream sobre o qual o servidor é compilado. Por exemplo, mysql-9.7_0.0.6 é a versão 0.0.6 da base de código mysql-9.7. Números de versão de bases de código diferentes não são comparáveis, portanto uma mudança entre bases de código não é uma atualização suportada: você pode atualizar de mysql-9.7_0.0.5 para mysql-9.7_0.0.6, mas não de mysql-9.7_0.0.6 para mysql-8.4_0.0.6. Um diretório de dados registra a base de código do servidor que o criou, como villagesql_schema_version. Se você iniciar um servidor compilado a partir de uma base de código diferente nesse diretório de dados, a inicialização falha e o log de erros nomeia as duas versões, no mesmo formato {codebase}_{version} usado por villagesql_schema_version:
Não há uma forma suportada de mover um diretório de dados entre bases de código. Continue usando um binário de servidor da base de código que o criou. --upgrade=MINIMAL não contorna essa verificação.

Compatibilidade de extensões

As extensões do VillageSQL são específicas de cada versão. Uma extensão compilada para uma versão do VillageSQL pode não funcionar com outra versão. Ao atualizar o VillageSQL:
  1. Verifique a compatibilidade da extensão com a nova versão
  2. Atualize ou recompile as extensões conforme necessário
  3. Teste as extensões em um ambiente de desenvolvimento antes da implantação em produção
Consulte o Guia de Atualização para procedimentos detalhados de atualização.