9.4.太极平台旧版本升级部署——非全新安装

1.升级需求

客户系统一旦部署上线,开始使用后,以后再进行更新升级,就不会像以前全新部署那样简单和方便了。

在升级的过程中,需要考虑以下几个问题:

  1. 系统正在生产和使用,不能停工。升级过程中,不能影响到客户使用。
  2. 原有系统中的数据不能丢失。数据包括文件数据和数据库数据。
    1. 文件数据比较简单,直接复制拷贝即可同步。
    2. 数据库文件则比较麻烦,不仅要考虑到数据库表结构的变动,还涉及到每个表数据内容的变动。

针对升级过程中要注意的问题,特制定升级指导书。

2.升级过程

2.1.文件同步

文件的同步,只需要将最新的文件包上传到旧系统的文件夹,进行覆盖即可。

在覆盖之前,要进行备份,以免覆盖之后出现问题,还可以进行还原。

目前我们的文件,主要是指项目打包后,生成的war的文件包,需要放到Tomcat下的站点中。

2.2.数据库同步

数据库同步分为表结构同步和表数据同步。

2.2.1.表结构同步

首先需要弄清楚新旧数据库表结构存在哪些差异。

在开发的过程中,开发人员可能会记录改动了哪些表字段,以便将来升级时进行同步修改。但是这样记录就会存在很多遗漏。首先没法确保每次调整表结构都有记录备案,其次当多人同时维护数据库表结构时,也没法清楚其他人修改了哪些字段。因此,表结构的变动,我们要借助对比工具进行分析。

阿里云的DMS里面,自带有数据库表结构对比功能。当需要对比时,我们可以进行付费开通(按量购买,使用1天)。结束使用后,关闭服务(否则如果是按量购买,会持续每天进行扣费,而不会自动停掉,这是一个坑)。

以后在我们自己的太极平台中,要集成这个数据库表结构对比功能。

通过对比后,可以看到数据库表结构存在哪些差异。系统会自动生成差异的SQL语句。如下所示,是对比后产生的差异SQL脚本。通过执行这个脚本,即可实现表结构的同步。

ALTER TABLE `qd_user` 
	ADD KEY `FK_User_DutyId`(`DutyId`) USING BTREE,
	ADD KEY `FK_User_RoleId`(`RoleId`) USING BTREE,
	DROP KEY `Index_RoleId`;

ALTER TABLE `qd_user`
 ADD CONSTRAINT `FK_User_DutyId` FOREIGN KEY (`DutyId`) REFERENCES `taiji_dev`.`qd_user_duty` (`Id`) ON DELETE SET NULL ON UPDATE NO ACTION;

ALTER TABLE `qd_user`
 ADD CONSTRAINT `FK_User_RoleId` FOREIGN KEY (`RoleId`) REFERENCES `taiji_dev`.`qd_user_role` (`Id`) ON UPDATE NO ACTION;

特别注意:表结构的对比也存在不完善的地方即没法区分一个新的字段(名称不同的字段)到底是新增的字段,还是原来改名的字段。因为通过字段名称进行比对时,只会发现旧表中少了某个字段,新表中多了某个字段,不会自动的关联旧表少的字段就是新表增加的字段。

所以当看到有新增字段时,要特别注意到底是不是字段改名。切勿直接执行删除字段后,再添加字段,否则就会导致数据丢失。

另外,在需要太极平台内核升级时,要先进行内核升级,再进行表结果对比。因为框架升级也会自动变更一部分表结构。

2.2.2.表数据同步

表数据的同步,主要是指如果有新增表,且新增表中有初始化数据,那么也需要将初始化数据同步到新的数据库中。这方面可以通过执行insert脚本即可。将表数据导出为insert执行脚本,在新的数据库中执行即可。

2.3.太极框架升级

太极平台框架升级后,会变动数据库表结构,也会更新框架包文件。因此升级时,既要注意数据库表结构的升级,也要注意引入框架包的升级。

所以,切勿盲目冲动的进行数据库内核升级。因为如果仅仅只升级数据库内核,而不引入新版本的依赖包,并进行重新打包发布更新,那么当前正在运行的系统就会出错。因为数据库表结构已是新版本,但依赖包文件还是旧版本,必然会出错。

框架内核升级分为三个步骤:数据库升级、依赖包升级、项目文件升级。

2.3.1数据库升级

在太极平台管理后台,有2个地方可以进行数据库升级。

1、在我的项目数据库中,对相应的项目进行升级。点开我的项目数据库,如下图所示。

在列表数据的最后面,有升级内核操作。同时,在旁边也可以看到当前系统的内核版本号。

点击升级内核后,会弹出升级对话框。

1)升级过程会验证当前数据库账号权限。因为要修改表结构,所以需要账号有DDL权限。

2)也会验证版本号是否是最新,是否需要升级。

3)不是最新版本,才可以升级。点击“升级”按钮,即可对当前数据库进行内核升级。

每次升级都只能升级一个版本号。版本号相隔太远,也只能一次次升级。升级过程执行完毕后,可以看到升级日志,知道是否升级成功。

2、单独的数据库表升级

针对有些没有添加到项目中的数据库,也可以进行单独的升级。在“我的”菜单中有“数据库升级”菜单,点击后加载升级页面。如下图所示,可以进行单独的升级。

此时升级,需要手动的把数据库的连接地址、账号、密码输入进去。测试连接成功后,才可以进行升级。升级过程一样,系统同样会验证账号权限、版本号等。

2.3.2.依赖包升级

数据库升级后,依赖包也必须升级到对应的版本,否则就会不匹配。

在IDEA编辑器中,打开pom.xml文件,找到奇点框架的依赖包配置项。如下图所示,确保数据库内核的版本号,与依赖包的版本号一致。

内核依赖包有2个文件:QiDianAdminCommon和QiDianAdminTemplate文件,分别是Java文件包和前端的jsp文件包。

另外还有一个QiDianWebCommon,这个是QiDianAdminCommon的依赖包,以后会考虑直接整合到QiDianAdminCommon中,以免版本号不好控制。

2.3.3项目文件升级

引入最新的依赖包后,项目文件需要重新编译打包。并用最新的包文件替换掉之前的旧版本,从而完成项目文件的升级。

可通过FTP上传最新项目文件,或远程桌面进行更新。更新完毕后,重启站点,完成升级。

注意覆盖文件后,进行数据库连接地址的调整修改。

发布成功后,访问系统,进入后台,在主页面的最底部右下角,查看版本号是否是最新版本。

至此,升级过程完毕。

3.生产环境升级

如果数据库已经加入到了太极平台的管理后台,那么数据库的升级会非常方便。但是在真实环境中,特别是当系统部署在企业内网,连不上外网时,升级也不会这么方便。可以按下面的步骤进行升级。

  1. 将客户的数据库导出一份出来。如果涉及到敏感数据,只需要导出太极框架相关的表数据即可,其他业务数据不需要导出。
  2. 将导出的数据,导入到测试库中。可以是自己的测试库,或者是当前项目的测试版本库,或者重写再建一个数据库。
  3. 通过太极平台的升级功能,连接上这个数据库,进行升级。
  4. 升级完成,测试是否功能升级成功。
  5. 导出升级后的数据库脚本,再次导入到生产环境中进行覆盖。
  6. 覆盖之前,一定要先备份数据库。以免出错后,可以还原。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值