# 合版工具使用说明
北京致远互联软件股份有限公司 2024年6月
# 适用范围及用途
范围:适用于V5产品线V8.0及以上版本。
用途:多套相同版本和产品线的集团版/多组织版合并为一套集团版/多组织版。
需检查这几套协同系统是否从一套数据库复制而来,在此基础做了改名。对于此类项目不适合用该合版工具。 仅适合每套都使用标准的安装、初始的协同系统。
暂不支持不同版本合版,也不支持企业版/单组织版合版,这类产品可通过升级到相同版本+转版到集团版/多组织版后进行合版。
# 合版须知
# 统一术语
为避免歧义,下面文档对被合并的系统称为从属方,相对的另一方称为主导方。
# 执行者需要具备以下知识和技能
1、数据库导出和导入:能够进行数据库的导出、导入操作,了解导出、导入流程以及可能遇到的问题和解决方案。
2、操作系统文件复制:熟悉操作系统的文件复制操作,包括文件的拷贝、移动、删除等操作,并了解如何处理文件权限和属性。
请注意,这些要求是为了确保操作的安全性和准确性,避免数据丢失或损坏。在执行操作前,请确保您已经充分了解并掌握了相关的知识和技能。
# 基本要求
多套系统合版为一套,必须满足如下要求:
1、产品线相同:支持多套A8+合版,支持多套A8-N合版,不支持A8+、A8-N混合合版。
2、版本号(含BuildID)相同:如支持多套V8.2 B230831
合版,不支持 V8.2 B230415
与 V8.2 B230831
合版(BuildID不一致),也不支持 V8.2
与 V8.2SP1
合版(版本号不一致)。
3、数据库相同:支持多套Oracle合版,多套DM达梦合版,不支持MySQL、高斯forMySQL不同数据库产品合版。
4、数据结构相同:每一套系统相同表字段及字段类型要完全保持一致。如多套系统ORG_MEMBER表字段和类型相同支持合版,如A系统有ORG_MEMBER.NAME,B系统没有则无法合版。
如果不满足以上要求,则需要通过别的工具实现同产品线、同版本、同数据库、同数据结构后再进行合版。涉及动作如下:
第一步,确认合版系统的产品线、版本号、数据库信息,制定可行的升级、转版、转库路线,涉及数据库升级转换等操作均要提前做好备份,示例如下:
第二步,检查最终的数据库表结构,确保每一套系统的相同数据库表字段、类型结构一致,如不一致,需要项目组技术分析解决,涉及数据库升级转换等操作均要提前做好备份。示例如:
需求场景示例:上级集团B(主导方)协同管理软件需要升级并转版信创A8-NV8.2SP1集团版,使用达梦数据库;其子单位A(从属方)协同管理软件需要并入集团统一管控。
# 执行方案建议
# 1、单位A路线
1)使用安装程序升级至A8+ 企业版V8.2SP1,sqlserver数据库
2)使用转版工具将A8+ 企业版V8.2SP1转版集团版
3)使用转库工具将sqlserver数据库转为Oracle数据库(与上级集团Oracle数据库版本一致)
4)升级后验证单位A基础功能
5)使用合版工具将单位A的数据做处理,完成以后导出处理后的数据
# 2、集团B路线
1)使用安装程序升级至A8+ 集团版V8.2SP1,Oracle数据库
2)将子单位A的同版本、同数据库已被合版工具处理后的数据库备份,导入合并到集团的数据库中(提前做好数据备份)
3)将子单位A的附件upload合并到集团的附件upload(提前做好附件备份)
4)验证合并后的协同管理软件集团版基础功能;子单位业务包过户给上级集团需要研发支持单独处理
5)将验证后的Oracle数据迁移至达梦数据库
6)信创环境上检查客开功能以及子单位A的基础功能
# 关于从属单位版本升级
若从属单位需要版本升级,并且从V8.1之前版本升级到V8.1及更高版本,此时之前的管理员权限会被撤销,需在升级或者合版之后对从属单位的管理员进行重新按角色授权。
# 关于空间数据
因模块兼容问题,不合并空间数据。
# 关于客开
1、若对标准产品数据库的表做过字段增加,需要进行技术分析处理,相关处理意见在上一章节有陈述。
2、多套系统的客开功能不同,需要确认客开功能如何合并、如何适配到最终版本。
# 大数据风险应对
1、需要提前考虑多套产品合并以后CTP_AFFAIR等等数据表的数据量带来的性能问题风险,多套产品合版以后表的数据量是累加。
2、根据现有大数据客户案例,非信创数据库在物理服务器硬件资源充足的情况下,合版后数据在5000万行记录以上,建议进行优化处理,处理方向根据实际情况操作:
1)方案一:跟客户沟通,不做全部数据合并,只保留一定时间范围内的数据;
2)方案二:使用历史数据分库组件(当前只支持协同、表单,不支持公文、信创环境);
3)方案三:项目化定制开发实现按年拆分大表,或基于数据库特性适配读写分离特性。
# 关于合版后子单位业务包的处理
因为业务包存在单独加密授权,子单位的业务包过户给集团,需要走《业务应用包授权变更申请》流程。系统如果可以连接功能,流程完成后在系统刷新授权完成过户。
如果无法连接公网,请根据申请提示更新数据库。
# 关于合版工具成本
商务报价时,不要只计算合版工具成本,如果多套系统不满足同版本、同库、同字段的基本要求,需要额外采购并计算升级、转版、转库、定制化等实施运维客开成本。
# 关于研发支持
除《关于合版后子单位业务包的处理》外,其他过程不需要研发支持,整个过程实施团队可独立完成。
# 合版工具实施流程
# 项目实施步骤:
合并多个单位的数据,一般会跨服务器,甚至地域。整个过程主要分为下面几类:
使用合版工具对数据进行调整
特殊情况下需使用其他工具(转版工具、转库工具)对版本、数据库进行调整
数据库厂商的导出、导出工具
数据库的拷贝、附件的合并
流程如下:
# 整个过程为:
从属方协同管理软件相关操作
导出当前协同的数据库;
复制协同附件;
复制以上两份数据到可靠存储,并在其他存储上放一份,作为安全备份;
复制协同应用及配置(V5目录)到可靠存储;
将协同管理软件产品升级、转版、转库至目标版本目标数据库;
使用合版工具进行子单位数据的处理;
用数据库厂商工具导出合版工具处理后的数据库数据;
主导方协同管理软件相关操作
导出当前协同的数据库;
复制协同附件;
复制以上两份数据到可靠存储,并在其他存储上放一份,作为安全备份;
复制协同应用及配置(V5目录)到可靠存储;
如果已经是目标版本目标数据库类型,则跳过此步,否则将协同管理软件产品升级、转版、转库至目标版本目标数据库;
将从属方经过合版工具处理后的数据库数据导入主导方数据库;
将从属方附件upload复制至主导方附件upload,确保路径对应,即年份相同;
将从属方的业务包过户给主导方,需要研发支持单独处理;具体说明见上方须知;
客开功能处理,验证功能;
# 各步用时参考
下面为常见服务器性能下的耗时预估,作为项目计划参考。不同不服务性能差异会比较大,建议预留充足时间。
主要步骤 | 数据库大小50GB | |
---|---|---|
1 | 执行合版工具 | 1小时 |
2 | 导出数据库 | 1小时 |
3 | 导入数据库 | 2小时 |
4 | 转移数据(拷贝附件1T,以及数据库) | 8小时,可提前拷贝节约时间到1小时 |
左侧为每套系统的大致用时,若多套系统,需考虑是否可以并行操作,以及其他因素对数据转移的耗时影响。
# 合版工具部署
将合版工具放置在与产品ApacheJetspeed平级的目录;
combine-edition/conf目录下需要放置授权文件mergeedition.seeyonkey(商务提供)
# 合版工具操作
# 启动
Windows环境下启动start.bat
Linux和国产化操作系统环境下启动start.sh
启动成功后,可以看到如下界面:
请阅读使用说明并勾选后再点击开始使用,会进入到数据库配置页面,若将合版工具放置在与产品ApacheJetspeed平级的目录,工具会将数据库信息自动解析出来。
# 数据库连接配置
若未将工具按推荐路径放置,此处需要通过应用部署里浏览按钮进行目录选择,目录位置选择到协同base目录即可,非信创环境下,数据库信息在选择路径后,也可以自动解析出来。
对于数据库信息自动解析到的情况,可以点击测试链接看数据库连接是否正常,若连接正常,导入授权文件后点击下一步即可。
若环境为信创环境,目录仍旧是选择到协同 base 目录下,并且手动输入数据库信息,测试链接无误后,导入授权文件,然后点击下一步即可。
点击下一步后,若配置信息验证通过后,会进入到单位信息页面,
若存在默认单位ID,会展示默认单位相关信息,并生成新ID,手动设置动态表后缀名后即可进行下一步。
# 表后缀设置
点击下一步开始清理静态表数据
# 静态表修改
点击下一步开始修改动态表表名
# 动态表修改
# 未使用默认单位ID
若未使用默认单位ID,仅显示动态表后缀:
点击下一步开始修改动态表的名称
# 数据处理完成
# 主导方数据库调整
修改主导方数据库索引
在主导方数据库中执行下面语句:
drop index IDX_CAP_CONTROL_KEY_VALUE on cap_control;
create unique index IDX_CAP_CONTROL_KEY_VALUE on cap_control(KEY_VALUE); create unique index IDX_ctp_formulas_name on ctp_formulas(formula_name);
create unique index IDX_form_custom_function_name on form_custom_function(function_name);
# 导出、导入数据
使用数据库厂商提供的导出、导入工具把调整后的数据库合并入目标数据库。
# 注意事项
因每个数据库中存在预置的相同数据,在导入时确保遇到相同主键的数据可以跳过,不同的数据可以正常合并。下面列出不同数据库需要注意的导入参数。
下面示例可根据实际情况进行调整。
# Oracle
# 导出示例:
在从属方数据库中执行:
$ sqlplus / as sysdba
SQL>create directory dmp_dir as '/usr/local/tomcat';
SQL>grant read,write on directory dmp_dir to public;
$ expdp 用户名/密码@orcl DIRECTORY=dmp_dir DUMPFILE=从属方数据库.dmp logfile=exp从属方.log;
# 导入示例
在导入时,impdp命令必须包含下面两个参数:
TABLE_EXISTS_ACTION=APPEND data_options=SKIP_CONSTRAINT_ERRORS
在主导方数据库执行:
$ sqlplus / as sysdba
SQL>create directory dmp_dir as '/usr/local/tomcat';
SQL>grant read,write on directory dmp_dir to public;
$ impdp 用户名/密码@orcl directory=dmp_dir dumpfile=从属方数据库.dmp TABLE_EXISTS_ACTION=APPEND data_options=SKIP_CONSTRAINT_ERRORS
如果 从属方数据库和主导方数据库账号名不同,添加下面参数:
REMAP_SCHEMA=user1:user2
如果 从属方数据库和主导方表空间不同,添加下面参数:
remap_tablespace=user1space:user2space
例如:
$ impdp 用户名/密码@orcl directory=dmp_dir dumpfile=从属方数据库.dmp TABLE_EXISTS_ACTION=APPEND data_options=SKIP_CONSTRAINT_ERRORS REMAP_SCHEMA=user1:user2 remap_tablespace=user1space:user2space
# 导入后主导方数据库调整
为避免一致文号脏数据引起的问题,请在导入后,在主导方数据库执行下面语句:
Oracle使用下面语句
delete from ctp_config where CONFIG_CATEGORY ='edoc_mark_year' and config_item='edoc_mark_year_cuurent' and org_account_id=1 and MODIFY_DATE not in (select max(MODIFY_DATE) from ctp_config where CONFIG_CATEGORY ='edoc_mark_year' and config_item='edoc_mark_year_cuurent' and org_account_id=1 group by config_category, config_item, org_account_id);
Mysql使用如下语句
elete from ctp_config where CONFIG_CATEGORY ='edoc_mark_year' and config_item='edoc_mark_year_cuurent' and org_account_id=1 and CONFIG_VALUE not in (select temp.max_id from (select max(CONFIG_VALUE) as max_id from ctp_config group by config_category, config_item, org_account_id) as temp);
注意:务必在导入后,启动协同之前执行。否则一旦启动协同就会产生脏数据。
# 功能测试验证
合版工具是对系统全部数据的合并,即所有功能的数据。
在合并完成,启动协同及相关服务后,请对协同系统用到的所有模块进行测试验证。
# 失败情况处理
对于可能错误分类如下:
断电、硬件故障等中途故障导致未能正常结束,请根据所处阶段重新执行相关步骤。
a. 备份步骤出错,请重新备份。
b. 导入步骤出错,请先恢复目标库,再重新导入
c. 拷贝(转移导出数据)出错,请重新拷贝。
转库工具执行异常,未正常结束。(未看到修改完成提示窗)
a. 请重新执行转库工具,后续步骤继续执行。
# 常见问题
# 1、M3接收测试消息问题
合版后测试防止消息发送到生产环境。因合版测试环境大都合并的是实际生产数据,若不想在测试时发送消息到生产账号的移动端,请在测试前使用下面功能注销所有移动端。
# 2、致信图标显示问题
若不显示致信图标,请先判断有没有致信(zx)插件商务授权和是否国产化环境。
# 3、会议联络员角色
只有购买会议管理(高级版)插件才会显示该角色。只具备会议管理普通版插件不会显示该角色。
快速跳转
