本文介绍了作者将本地苍穹版本从3.009升级到4.006的过程,包括升级前的准备、升级流程、遇到的问题及解决方案。升级前需下载补丁并备份,升级过程中电脑无法执行其他任务,且服务需启动。文中详细描述了ZK和DB升级时遇到的问题及解决方法,如ZK链接失败需替换lib和jar包,DB升级错误需开启debug模式等。此外,还提及了集群管理参数的修改和数据库问题的处理。
近来无事,闲的把自己本地的轻量化苍穹版本升级,是从3.009升级到4.006,在升级的过程碰到了一些问题,特意把过程写下来,分享给大家,也让大家在后续升级的过程中少踩一些坑吧.
升级前的准备:
1 标准补丁下载地址:https://download.kdcloud.com/,整个补丁包大小在1.4G左右,
2 升级之前一定要备份,可以把本地苍穹目录下的所有文件打个一个压缩包,升级过程难免会碰到各种问题,如果此时问题又比较棘手,有备份可以直接删除升级失败的本地项目,再解压压缩包即可
3 升级过程中,磁盘写入数据会很厉害,基本上你的电脑干不了其他重活,而且整体升级过程中,时间也比较久,所以不要在项目紧急的情况下去升级.
4 升级过程中苍穹服务是要出于启动状态的才能升级,用start-cosmic.bat启动即可
升级流程
登录mc,打开集群管理,选中集群“cosmic”,点击“上传升级包”,并选择已下载好的升级补丁包,如下图所示。
耐心等待几分钟,如上传成功,会出现如下图所示界面,选择分应用标准补丁点击“升级”即可。
升级中碰到的问题:
ZK升级
我在MC升级第一次失败后,我发现再次启动ZK,发现链接不上ZK了,查阅了相关文档, 苍穹4.0.006版本,ZK都要升级到3.5.9版本,而本地轻量windows版本的ZK升级可以参照这个链接: https://vip.kingdee.com/article/223751991011154944
这里有两部替换步骤:
1, 将包中的lib目录解压到苍穹环境的zookeeper目录的lib目录,
2, 将新版的zk.jar替换掉外层的jar
我在最开始是的只替换了外层的jar包,发现也是启不来,这里大家别忘记了
DB debug模式
失败了第一次,第二次升级的时候,需要把所有启动的服务都重启一次,然后再来升级,
第二次升级碰到这个问题:
如果出现deploy error dym file :bos_devpn_operationmes.dymkd.bos.exception.KDException: Database execute exception.这个错误,这里是说明执行DB脚本出错,但是具体的错误却没有显示,这里就需要我们开启一个db.error.throw.showExceptionMode=debug
配置这个参数,就能显示DB升级的错误
参数修改
在集群管理中跟升级相关的几个参数
通过修改可以影响升级升级的
附参数含义:
mc.upgrade.appstore 是否执行应用仓库升级 true/false
mc.upgrade.staticresource 是否执行静态资源升级 true/false
mc.upgrade.clusterrestart 是否重启集群 true/false
mc.upgrade.datacenter 是否执行数据中心升级 true/false
mc.upgrade.maxq 每个数据库升级最大队列长度 默认值为 3
mc.upgrade.dmtimeout dm升级超时时间 默认4800000毫秒
mc.upgrade.prioritydm 配置优先执行业务dm包,dm包前缀加逗号分隔 bd-mpdm,mmc-pdm,mpscmm-msplan
mc.upgrade.disablerebuild 不启用升级数据中心前后接口调用 true/false
mc.upgrade.ignorefailed 无视升级阶段失败,继续执行升级 true/false
mc.upgrade.splitdcupgrade 数据中心升级拆分 true/false
启动项start_comic添加参数
在后续升级的过程中也碰到这种问题,cosmic:kd.occ.ocdbd.servicehelper.ServiceFactory not find 的报错,这是因为启动的时候没有加载对应的jar包造成的,解决的方法是:
在start-cosmic.bat 启动项BIZLIBS里面添加occ.xml即可
数据库相关问题
1,数据唯一索引问题:Duplicate entry 'bos_devpn_operationmes' for key 'IDX_META_ENTITYDESIGN_NUMBER'
碰到这个问题的原因可能是在之前的升级失败过程中已经把数据插入到表中了,现在继续升级因为唯一索引的问题,导致了不能插入成功,解决方法是登录数据库把唯一索引删除,等待升级成功后再把重复数据删除再来重建索引
2, 表不存在,或字段不存在的问题,
碰到这个问题,有可能是脚本执行顺序的问题,我在升级过程中碰到表不存在的问题,然后登录数据查询,却又发现表是存在的,这个是有可能执行脚本在前,建表脚本在后造成的,针对这个问题,重新升级即可
3, Lock wait timeout exceeded; try restarting transaction
这个问题出现的时候,当时我除了再升级,还用数据库在查询其他数据,造成了锁等待超时,解决方法是,重新升级即可,注意升级的时候不要去操作数据库和去登录操作本地苍穹
附之前参考的升级文档: https://vip.kingdee.com/article/146672300673186816
https://dev.kingdee.com/index/docsNew/0bf17786-7f42-4893-814f-2f1ef2f76a53
推荐阅读