系统迁移
在实际项目中会有迁移合并正在使用中的环境的需求,本文将以把B环境迁移合并到A环境为例,介绍如何迁移合并两个环境。
TIP
迁移前准备工作如下:
- 防止迁移过程中出现不可控的错误,迁移之前请备份目标环境default数据源库
- 确保两个环境的版本号相同,若不同请更换相同的war
- 获得被迁移系统的所有数据源信息
迁移合并系统的主要步骤为:
#系统迁移步骤
#迁移数据源配置
在A系统中添加B系统中的所有数据源连接(详见数据源连接),此处需要添加ODS数据源
当需要迁移的数据源较多时,可以在B系统的系统数据项目下,进入资源
模块,导出data-source
下的所有项目,再导入到A系统的相同位置即可
#备份恢复项目元数据
备份元数据步骤如下:
在B系统的
系统设置-备份
页面中,点击立即备份
生成备份包在
备份日志
列表中,点击下载新生成的备份包
恢复元数据分为以下两部分:
- 恢复项目元数据:恢复备份包中的模型、仪表板、表单等元数据
- 迁移系统权限数据:包括部门、用户、用户组、用户组成员、权限数据,分别对应default数据源中的SZSYS_4_DEPTS、SZSYS_4_USERS、SZSYS_4_USER_GROUPS、SZSYS_4_USER_GROUP_MEMBERS、SZSYS_4_PERMISSIONS
恢复元数据步骤如下:
- 在A系统的
系统设置-恢复
页面上传备份元数据步骤中下载的备份包 - 在
选择需要恢复的项目
列表中勾选B,不勾选恢复系统设置
WARNING
由于元数据恢复功能支持将备份包中的权限数据覆盖到当前系统,所以此处根据对权限迁移的实际需求不同有不同的处理方式,常见情况及其处理方式见迁移权限数据
#迁移权限数据
迁移权限数据常见需求及处理方式如下:
使用迁移目标系统权限数据:在元数据恢复时不勾选
恢复用户和权限数据
使用被迁移系统权限数据:在元数据恢复时勾选
恢复用户和权限数据
选择性保留双方权限数据:在元数据恢复时不勾选
恢复用户和权限数据
,手动处理权限数据,步骤如下:- 备份两系统权限相关数据
- 在A系统中连接B系统default数据源,将B中的权限相关系统表以新表的方式导入A系统
- 插入权限数据,顺序依次为部门,用户,用户组,用户组成员,权限。
- 备份当前权限信息表
- 删除不需要的权限数据,顺序依次为权限、用户组成员、用户组、用户、部门
- 合并部门信息
#使用迁移目标系统权限数据
若合并后的系统中,不需要原B系统的权限设置,则在元数据恢复时不勾选恢复用户和权限数据
,点击恢复即可完成元数据恢复
#使用被迁移系统权限数据
若合并后的系统中,使用原B系统的权限设置,且A系统中的权限设置不再使用,则在元数据恢复时勾选恢复用户和权限数据
,将备份包中的权限数据覆盖当前系统中的数据,然后点击恢复
即可完成元数据恢复
#保留双方权限数据
本次迁移合并需求为保留A系统中的"上级单位" "外单位"部门,B中的"无锡市市场监督管理局"部门,并合并dev、赛思部门,保留所有用户组,因此在元数据恢复时不勾选恢复用户和权限数据
,点击恢复
完成项目元数据恢复
为实现需求需要手动处理权限相关数据,具体步骤如下:
防止处理权限数据时出现误操作,需要先备份相关表,推荐使用
CREATE TABLE SZSYS_4_DEPTS_SJZT AS SELECT * FROM SZSYS_4_DEPTS
语句在A系统中连接B系统default数据源,将B中的权限相关系统表以新表的方式导入A系统,具体方法如下:
进入恢复的A项目,将原A系统default数据源添加到数据中台系统中,命名为ZHJGDEFAULT
右键点击ZHJGDEFAULT中的部门表(SZSYS_4_DEPTS),选择开始加工
给模型添加输出节点,设置目标物理表为
default/SDI/SZSYS_4_DEPTS_B
,并提取数据依次导入用户、用户组、用户组成员、权限数据,物理表名依次为SZSYS_4_USERS_B、SZSYS_4_USER_GROUPS_B、SZSYS_4_USER_GROUP_MEMBERS_B、SZSYS_4_PERMISSIONS_B
插入权限相关数据,可使用数据库管理工具或直接运行INSERT语句的方式,顺序依次为部门,用户,用户组,用户组成员,权限。插入时注意:
- 确保各表主键字段数据不重复,重复部分以A系统优先,可使用
NOT EXISTS(SELECT 1 FROM t1 WHERE t1.PK=t2.PK)
语句 - 用户组成员、权限确保导入的用户、用户组数据在当前系统是存在的,可使用
EXISTS (SELECT 1 FROM t1 WHERE t1.GROUP_ID=t2.GROUP_ID)
- 确保各表主键字段数据不重复,重复部分以A系统优先,可使用
备份当前权限信息表,方法与步骤1相同
删除权限相关数据,可使用数据库管理工具或直接运行DELETE语句的方式,顺序依次为权限、用户组成员、用户组、用户、部门。删除时注意:
- 部门表以
SZ_PID
字段记录部门层级,因此通过SZ_PID0=xx
条件筛选出部门ID为xx的部门及其所有下级部门的权限数据 - 权限表中
OWNER_TYPE
字段记录权限拥有者类型,'u'为用户,'g'为用户组,语句中需要增加类型的判断,例如WHERE t2.USER_ID=t1.OWNER_ID AND t1.OWNER_TYPE='u')
- 部门表以
合并部门信息,可使用数据库管理工具或直接运行UPDATE语句的方式,例如将dev(DEPT_ID为'01')和赛思(DEPT_ID为'Succez')合并步骤如下:
- 在用户表中将DEPT_ID为'01'的DEPT_ID列修改为'Succez'
- 在部门表中删除dev部门
本次迁移权限数据SQL如下
#迁移文件数据源
经过以上步骤,B项目已经合并迁移到了A项目所在的系统中来,但由于文件数据源不包含在元数据内且目前文件数据源不支持导出,所以需要在服务器中手动将文件数据源迁移,步骤如下:
- 进入原B项目所在服务器的
workdir/cluster-share/data-files/B
目录,拷贝该目录下的所有文件到A项目所在服务器的相同目录下,工作目录在/Tomcat/bin/setenv.sh
下配置,详见此处 - 重启Tomcat
#迁移完工验证
经过以上步骤,迁移合并系统已完成,需要对迁移后的系统进行相关测试,确定该系统下的项目都能稳定运行,大致范围如下:
- 数据源:连接其他数据库
- 数据:上传数据文件,数据加工,SQL查询等
- 分析:设计、分享、评论仪表板
- 表单:设计表单、流程并发布表单应用
- 应用:设计门户
- 资源:管理系统资源,如新建、删除、移动、复制资源等
- 系统设置:设置系统登录页