中坤 旧版本升级注意事项

注意

  • 升级前请务必备份数据库数据

1. 从v1.11.1之前的版本升级到v1.12.0之后版本的步骤

  • 必须先正常升级到v1.11.1,执行数据库迁移;

  • 然后升级到v1.12.0

    v1.12.0版本主要的依赖包做了升级,django3.2升级到4.2,DRF3.13升到3.14,新使用的django-tidb4.2包。
    先升级Python环境pip3 install -r requirements.txt
    如果数据库是TiDB,配置文件中数据库后端需要修改为'ENGINE': 'django_tidb'

  • 创建新数据库迁移文件的迁移记录

    v1.12.0重新生成了几乎所有app的数据库迁移文件,需要处理迁移记录。
    先执行下面假迁移命令添加新的迁移文件的迁移记录,
    大多数迁移文件(因为文件名相同)已有对应的旧的迁移记录存在。

    python3 manage.py migrate --fake
  • 删除已经不存在的旧迁移文件的旧的迁移记录

    需要为每个app移除旧的迁移文件的迁移记录

    python3 manage.py migrate users --prune
    python3 manage.py migrate service --prune
    python3 manage.py migrate servers --prune
    python3 manage.py migrate storage --prune
    python3 manage.py migrate report --prune
    python3 manage.py migrate order --prune
    python3 manage.py migrate metering --prune
    python3 manage.py migrate monitor --prune
    python3 manage.py migrate bill --prune
  • 然后再升级到后续版本

2. 从v1.14.0、v1.14.1版本升级到v1.14.2之后版本的步骤

原因:由于v1.14.0版本开始增加了link app,在v1.14.2版本对link下的迁移文件进行了压缩,
所以从v1.14.0、v1.14.1这2个版本升级到v1.14.2(不含)之后的版本,需要先升级到v1.14.2版本,再升级到之后的版本。
备注:v1.14.0(不含)之前版本升级到v1.14.2(不含)之后版本可以掠过此升级步骤。
  • 必须先正常升级到v1.14.2,执行数据库迁移;
  • 再升级到之后的版本。
  • v1.14.2之后的版本会移除被压缩的旧迁移文件,可以删除这些不存在的旧迁移文件的旧的迁移记录
    python3 manage.py migrate link --prune

3. 从v1.16.0之前的版本升级到v1.16.0(含)之后版本的步骤

原因:由于v1.16.0版本对ipam和link app重构合并为了一个新的app netbox,数据库迁移会把原ipam和link的数据库表数据复制到netbox对
应的表中,原ipam和link的API接口在v1.16.0之后版本将弃用,netbox有对应的新api。
新api主要变更:
    原ipam和link的用户角色权限API接口合并为了一个接口;其他接口只是url路径做了更改。
  • 必须先正常升级到v1.16.0,执行数据库迁移,创建netbox模型的数据库表,并从ipam和link的数据库表复制数据;
  • 再升级到v1.17.0,执行数据库迁移,会删除ipam和link的数据库表和api;
  • 再升级到之后的版本。

4. 从v2.3.0(含)之前的版本升级到v2.3.1之后版本的步骤

原因:由于v2.3.1版本对 monitor、service、app_alert、app_netflow 的迁移文件进行了压缩。
  • 必须先正常升级到v2.3.1,执行数据库迁移,把压缩后的迁移文件记录更新到数据库迁移记录表;
  • 再升级到v2.3.1之后的版本。

5. 从v2.4.1之前的版本升级到v2.5.0及之后版本的步骤

原因:由于v2.4.1版本 把 app_netbox 拆分成了app_net_manage、app_net_link和app_net_ipam 3个app,需要数据库迁移把原app_netbox的数据库表数据复制到app_net_manage、app_net_link和app_net_ipam对
应的表中,原app_netbox的API接口在v2.5.0之后版本将弃用,app_net_manage、app_net_link和app_net_ipam有对应的新api替换netbox原接口。
新api主要变更:
    ipam和link新增各自的用户角色权限API接口;其他接口只是url路径做了更改。
    app_net_manage有自己的用户角色权限,来限制机构二级的管理权限。
  • 注意:当数据库为mysql时(MariaDB和TiDB除外),在升级到 v2.6.0(含)- v2.7.1(含)之间版本时(此问题在v2.7.1之后的版本中修复了),apps/users下的0003迁移文件中函数“update_user_fed_admin”中的sql无法在mysql数据库上执行通过,修改临时手动修改为下面SQL格式:

    UPDATE users_userprofile SET is_fed_admin = 1 WHERE users_userprofile.username IN (
        SELECT T.username FROM (
            SELECT U0.username FROM users_userprofile U0 WHERE
            LOWER(JSON_UNQUOTE(U0.role)) LIKE LOWER('%federal-admin%')
        )T
    );
  • 升级前先备份数据库数据;

  • 必须先正常升级到v2.4.1,执行数据库迁移,创建app_net_manage、app_net_link和app_net_ipam 3个app模型的数据库表,
    并从app_netbox的数据库表复制数据,然后删除app_netbox的数据库表;

  • 再升级到v2.5.0之后的版本。

Recent Comments

您尚未收到任何评论。