Skip to main content

概述

VillageSQL 遵循明确的版本控制和兼容性策略,以帮助您做出关于部署和升级的明智决策。

VillageSQL 版本控制

VillageSQL 使用 语义化版本 (SemVer) 来传达每个版本中更改的性质和影响。

版本格式

版本遵循以下格式:MAJOR.MINOR.PATCH

版本递增规则

  • MAJOR 版本(例如,1.0.0 → 2.0.0):可能需要代码修改或数据库迁移的破坏性变更
  • MINOR 版本(例如,0.1.0 → 0.2.0):以向后兼容的方式添加的新功能
  • PATCH 版本(例如,0.0.1 → 0.0.2):向后兼容的错误修复和次要改进
VillageSQL 目前处于 1.0 之前的开发阶段(版本 0.x.x)。在此阶段,随着平台逐步稳定,API 和扩展接口可能会更频繁地更改。

开发版本

带有预发布后缀的版本(例如,0.0.6-dev)是开发版本。默认情况下,服务器会阻止从使用开发版本初始化的数据库进行升级。开发版本未经过升级兼容性测试,并且可能包含破坏性模式或协议更改。 要允许这样做,请使用 --villagesql-allow-unsafe-dev-upgrade 启动服务器:
若不指定该标志,且服务器检测到开发版本数据库,则会出错退出:
如果使用了该标志,服务器会记录警告并继续:
如果指定了该标志但当前版本不是开发版本,服务器将出错退出:
或者如果没有执行模式升级:

最小升级

使用 --upgrade=MINIMAL 启动服务器会跳过并非绝对必要的升级步骤。VillageSQL 的模式升级不在其跳过的步骤之列。当需要执行服务器升级且以此模式启动服务器时,服务器会记录一条已跳过服务器升级的警告,然后在存储的 VillageSQL 模式版本与构建版本不匹配时运行 VillageSQL 的模式升级。
如果在此模式下 VillageSQL 的模式升级失败,服务器将中止启动。由开发版本初始化的数据目录在此模式下仍会被拒绝。要允许这样做,请使用 --villagesql-allow-unsafe-dev-upgrade 启动。

代码库变更

每个 VillageSQL 版本都与一个代码库相关联,即服务器所基于的上游分支。例如,mysql-9.7_0.0.6mysql-9.7 代码库的 0.0.6 版本。来自不同代码库的版本号无法比较,因此在代码库之间迁移不是受支持的升级:您可以从 mysql-9.7_0.0.5 升级到 mysql-9.7_0.0.6,但无法从 mysql-9.7_0.0.6 升级到 mysql-8.4_0.0.6 数据目录会将创建它的服务器的代码库记录为 villagesql_schema_version。如果您在该数据目录上启动一个由不同代码库构建的服务器,启动将失败,并且错误日志会以与 villagesql_schema_version 相同的 {codebase}_{version} 格式指出这两个版本:
没有受支持的方法可以在代码库之间迁移数据目录。请继续使用创建该数据目录的代码库的服务器二进制文件。--upgrade=MINIMAL 不会绕过此项检查。

扩展兼容性

VillageSQL 扩展是特定于版本的。为 VillageSQL 的一个版本构建的扩展可能无法在另一个版本中正常运行。 升级 VillageSQL 时:
  1. 检查新版本的扩展兼容性
  2. 根据需要更新或重新构建扩展
  3. 在生产环境中部署之前,在开发环境中测试扩展
请参阅 升级指南,了解详细的升级步骤。