升级过程遇到的问题

熊旭


背景:

   项目是现在测试环境进行开发,然后到了上线时刻,需要把测试环境的功能升级到生产环境。


1. Frame库中的运行数据表是否需要升级?

问题描述:

   Frame库通过navicat工具进行数据对比,这种很容易升级。但是里面也会有一些小问题。我理解的框架库里的表应该分为定义表,运行表,比如表单基础信息,表单字段表这些属于定义表,需要正常升级到生产环境,但是一些运行数据表是不需要升级的。比如下图的日志表

问题:

  1.这种lowcode_log前缀表需要是否需要升级到生成环境,如果不需要我可以过滤掉这些表的比对,可以减少升级干扰,同时提升数据比对效率。每次数据比对,lowcode_log_module_usage_records表都会产生差异数据。

  2.Frame库中有那些表是这种运行表。


2. Master库的结构化比对问题。

 这次升级使用navicat的结构化对比,能对比出结构化差异,并且生成差异化脚本,因为使用的是达梦数据库,生成的脚本没有对应的主键信息?

我怀疑是因为,我在对比的时没有选项,比较主键、索引、约束这些。


问题:是否有一些好的办法规避,或者有其他的升级办法?


3.Master数据对比,每次都需要全量对比,对比会很慢,是否可以罗列出框架的定义表和运行表?

  我现在采用的模式只比较一些特定模块表:

 3.1 ACT_GE_、ACT_RE_前缀表:Flowable引擎需要的表,这两个前缀时静态资源表和流程定义表,其他的ACT_RU_、ACT_HI_这种前缀的表属于运行中的数据表,忽略掉了?

 3.2 dingding_前缀的表,但是这里我不好区分哪些时定义表,哪些时运行表?

 3.3 FLW_前缀表

 3.4 qrtz_ 前缀表,但是里面我页无法区分哪些是定义表,哪些是运行表

 3.5 infra_job表,配置定时任务

 3.6 系统框架表:数据字典(system_dict_data, system_dict_type), 系统菜单(system_menu),  站内消息模板, 目前只用到了站内消息(system_notify_template)

问题:上面的表是否还需要完善,是否还有漏掉的?还有帮忙梳理一下dingding_、qrtz_ 开头表中有哪些是必须要升级的,哪些可以忽略掉的



4.Master库中的ACT_GE_BYTEARRAY表的升级

 这个表的升级需要单独说,因为这次升级过程中这个表造成的困扰最大

 1.首先这个表通过navicat进行数据差异化比较,能正常生成差异化sql,但是这个表里面有个Blob字段,该字段是二进制,sql中该字段被转成了十六进制,导致超出了数据库的sql长度,被截断无法正常插入

 2.后面我又采用达梦的dexp、dimp的命令的表方式进行导出导入,可能是达梦的版本差异,dimp无法使用表格的增量数据导入,导致导入的时候有主键冲突  

3.然后我只能删除生产库的ACT_GE_BYTEARRAY表,因为这个表是引擎的通用依赖表,表上面有很多级联关系,导致我只能删除该表和级联关系,才将这个表导入成功,但是级联关系不能自动创建,也没有梳理清楚里面哪些表与这个表有级联关系,导致无法重建这些级联关

4.最后我就只能把所有ACT







回答4

熊旭

续上

4.Master库中的ACT_GE_BYTEARRAY表的升级


这个表的升级需要单独说,因为这次升级过程中这个表造成的困扰最大


1.首先这个表通过navicat进行数据差异化比较,能正常生成差异化sql,但是这个表里面有个Blob字段,该字段是二进制,sql中该字段被转成了十六进制,导致超出了数据库的sql长度,被截断无法正常插入


2.后面我又采用达梦的dexp、dimp的命令的表方式进行导出导入,可能是达梦的版本差异,dimp无法使用表格的增量数据导入,导致导入的时候有主键冲突  


3.然后我只能删除生产库的ACT_GE_BYTEARRAY表,因为这个表是引擎的通用依赖表,表上面有很多级联关系,导致我只能删除该表和级联关系,才将这个表导入成功,但是级联关系不能自动创建,也没有梳理清楚里面哪些表与这个表有级联关系,导致无法重建这些级联关


4.最后我就只能把所有ACT_前缀表都删除,然后通过达梦迁移工具,将ACT_前缀的表重新迁移


问题:这个表的迁移过程简直是痛苦,并且现在是因为生产上还没有产生运行数据,否则后面无法升级,因为ACT_RU表也会与ACT_GE_BYTEARRAY表有级联关系,导致以后无法直接删除ACT_前缀的所有表?请问是否有更好的升级方案

超级管理员

1.1:lowcode_log表不用管,这些都是记录数据来的

1.2:除了log example 表外,其他都是框架所需要的表数据 ,需要更新

2:一般是对比出自己的修改字段然后复制出来人工过一遍的,像你里面那种的navicat对比差异应该规避不了吧

3.dingding表的话,其实只需要管dingding_bpm_model模型表就可以了,其他的都是属于数据表来的,然后到线上点击重新部署。

其他框架的system表的话,应该就是你里面的这几个

4.act flw表也属于flowable表来的,也不用管,就是首次启动的时候会自动产生的,你不用管

也就是流程那块的话,你只需要吧流程模型弄上去,然后重新部署可以了



超级管理员

注意:flw  act表都不用管的,首次的话,他会自动创建,后续都不用管了,都属于数据表来的,我们只需要把我们的模型部署上去,重新发起就可以了,开发的数据不能用到线上的

熊旭

与支持人员沟通后结果:

流程变化需要手动在生产点击部署:

     同步表:dingding_bpm_group_flow, dingding_bpm_model, dingding_bpm_model tenant, dingding_bpm_proxy, dingding_bpm_role

    忽略表:ACT_、FLW_

配置定时任务需要手动在生成上部署:可以直接忽略infra_job表、qrtz_前缀表



写回答

扫码关注

微信公众号二维码