系统升级

System upgrade

在经历了架构比较大的重构之后,在本版本将会为当前还在使用2.7版本的用户安全稳定可靠的升级方案。

升级方式的介绍

综合考虑到任务安全,系统稳定,可操作程度等因素,因此升级方式采用如下步骤完成。

  • 在新的服务器上,新建一套3.2的系统

  • 然后将原2.7的系统相关的一些环境参数设置及用户等信息通过脚本的方式优先导出。

    • 脚本会作为重要的检查项,除了导出重要的环境信息及用户信息,还会提供一些影响导入的重要检查项。详情请见下文脚本详细介绍

  • 处理脚本信息返回的结果,包括环境变量参数对比,错误队列统计,节点的重名处理,资源组配置检查等信息。

  • 准备3.2的环境,并且将用户等信息提前导入到新的系统中。

  • 在2.7的系统配置中,导出任务。可以通过选项,选择导出配置,还是导出进度。导出进度时,可以选择等任务确定lag为0时才导出任务进度及配置,或者优先导出进度及配置,待2.7的lag 为0后,再在3.2上启动任务。减少任务的等待时间。

通过上面的步骤,您会注意到,我们的软件,在任务导出的时候,提供了配置迁移及进度迁移的选项。您可以根据实际的业务场景需要,进行选择。

选项
说明
优势

只迁移配置

仅迁移所勾选任务的配置

无需暂停任务,效率最高

迁移进度并等待任务lag为0

需要等待所有所选的任务lag为0时,才一起迁出,任意一个任务失败,则导出失败

迁移后,可以直接将配置导入到新系统并直接激活任务无需等待,既可以保证数据的一致性

直接迁移进度

暂停任务的source端后,直接迁移出任务的配置及当前的读取进度

迁移较快,几乎等同于迁移配置。但是当导入到新系统后,如果想保证写入端的一致性中的顺序,需要等老系统该任务的lag为0时,在启动任务较好。

推荐方案3,因为当导出后,可以提前导入到新版本的系统中,进行一些配置的检查及新选项的配置。等待2.7同步完成后,即可激活任务。

导入时,会有几个特殊的处理。首先在2.7的系统中读取方式只有批量读取和日志读取。但是在3.2的架构中增加了全量同步和增量同步,因此这里升级过来全部都会变成增量同步。如果是日志读取,则会变成增量同步的监听模式,如果是批量读取会变成增量读取的JDBC模式。此时假如有where条件,则where条件会被设置到相应的链路中。

另外,由于2.7的目的地表的创建机制是任务启动并开始写入数据的时候,才创建表,因此会存在有的任务下,存在有些表是已经在目的地创建成功,并且开始同步的,有的任务则是在目的地尚未开始同步,因此也没有创建目的地表的场景。而我们进行迁入的时候,对于第一种情况,有进度的表,是可以迁移进度的,并且导入后,起点为使用暂定时的进度。对于第二种情况,因为没有在目的地实际的创建表,因此导入后并没有进度,同时起点也会被设置为使用激活时的起点,因此在2.7的任务中,如果存在有的映射已经同步了并且有进度,而有的映射没有进度,目前的处理方案是,按照只迁移配置不迁移进度。

临时的解决方案,可以在2.7通过复制任务的方式,将该任务进行拆分,有进度的表在一个任务中,没有进度的表放在另外一个任务里。然后在进行迁出的操作。

对于清空目的地的选项设置,则对应到3.2中,会变成同步前清空目的地的开启选项。

对于Hive 的源节点,由于新版本上hive的分区需要进行大量的人工设置。因此针对此种情况,升级做出如下的处理:

2.7
3.2

hive源:非分区表,定时同步

hive源,范围同步

hive源:分区表

只迁移配置,不支持迁移进度,导入到3.2以后只要范围同步,并且需要在3.2上进行设置

对于2.7升级到3.2有一些场景任务配置的对应:(不包含hive的源)

其他节点的任务的迁移

进度迁移:仅有激活过的任务才会涉及到进度迁移

2.7任务配置
3.2任务配置

日志读取方式;开启存量读取

日志方式,监听模式,增量同步,使用暂停时进度;开启全量初始化,开启同步清空目的地

日志读取方式;不开启存量读取

日志方式,监听模式,增量同步,使用暂停时进度;开启全量初始化,不开启同步清空目的地

批量读取;定时模式/同步一次,开启清空目标表数据

JDBC,增量同步,定时模式(同步一次定时间隔为52周),全量初始化,开启清空目的地

批量读取;定时模式/同步一次,不开启清空目标表数据

JDBC,增量同步,定时模式(同步一次定时间隔为52周),全量初始化,不开启清空目的地

仅迁移配置:激活过的任务,可以选择仅迁移配置,然后在迁移到系统重新指定起点进行同步。当然也有在2.7中完成了配置,但是未激活过的任务,也可以选择配置迁移。因为2.7中可以存在不完整的配置,即仅配置了读取条件,未配置写入条件。这种情况不迁移到新的系统中。

2.7 任务配置
3.2任务配置

日志方式;激活任务为起点;开启存量读取;

日志方式;增量同步;监听模式;全量初始化;开启同步清空目的地

日志方式:激活任务为起点;不开启存量读取;

日志方式;增量同步;监听模式;激活任务为时间起点

日志方式;启动为自定义;开启存量读取

日志方式;增量同步;监听模式;因为无直接对应项,所以选择全量初始化,开启同步清空目的地

日志方式;启动为自定义;不开启存量读取

日志方式;增量同步;监听模式;指定起点

批量读取;定时读取/同步一次;开启清空目标表数据

JDBC;增量同步;定时模式(同步一次定时间隔为52周),全量初始化,开启清空目的地

批量读取;定时读取/同步一次;不开启清空目标表数据

JDBC;增量同步;定时模式(同步一次定时间隔为52周),全量初始化,不开启清空目的地

特殊情况说明,由于MS SQL-server 的ct模式和Oracle 的logminer模式均只有定时模式,因此这种会变成相应的增量同步,定时模式。

最后更新于

这有帮助吗?