#Release Notes

# 版本信息

版本发布日期:2024年10月9日

版本号:v23.3.1.0

# 版本定位

崖山迁移平台(Yashan Migration Platform,YMP)是为YashanDB配套提供的数据迁移产品。v23.3版本新增实时数据同步能力,支持增量数据实时同步能力,助力用户构建安全、稳定、高效的数据复制架构。 全面提升离线数据迁移可用性,丰富数据源端,提升产品易用性,实现低门槛、低成本、高效率的异构数据库迁移实施。

# 特性更新

# 实时数据同步

  • 支持YashanDB数据源实时同步至Oracle,包括全量元数据、数据同步和部分DDL增量同步。
  • 支持YashanDB数据源实时同步至YashanDB,包括全量元数据、数据同步和部分DDL增量同步。
  • 支持同步范围的配置,用户可以通过设置任务配置文件的syncRange字段,配置源端schema/表的同步范围,以及与目标端表的映射关系。同时可以配置源端表的忽略范围,该类表在任务运行过程中产生的DDL、DML将不被同步到目标端。
  • 支持查看同步阶段监控指标,包括同步开始时间、同步结束时间、已查询的表总数量、已同步的表总数量、表查询速度、表同步速度等、每秒同步行数、每秒同步事务数等指标。
  • 支持增量DML同步断点续传,当出现网络断联,或者YashanDB/Oracle/YDS进程故障时,YDS可以重新连接源库和目标库,重新从断点处继续传输数据,用户无需推倒重来,提升同步的效率。

# 丰富数据源

  • 支持MySQL数据源迁移至YashanDB v23.3单机版本的MySQL模式。
    • 支持MySQL 5.7 版本到YashanDB MySQL模式的评估、元数据迁移。包括:表、视图、索引、约束、序列、函数。
    • 支持MySQL 5.7 版本到YashanDB MySQL模式的数据迁移,支持TINYINT、SMALLINT、MEDIUMINT、INTEGER、BIGINT、DECIMAL、FLOAT、DOUBLE、BOOLEAN、DATE、DATETIME、TIMESTAMP、TIME、CHAR、NCHAR、VARCHAR、NVARCHAR、BINARY、VARBINARY、TINYBLOB、TINYTEXT、BLOB、TEXT、MEDIUMBLOB、MEDIUMTEXT、LONGBLOB、LONGTEXT等数据类型。
    • 支持MySQL 5.7 版本到YashanDB MySQL模式的迁移前预检查,提前暴露数据迁移前可能遇到的风险,包括:连接检查、权限检查、容量检查、部署方式检查、版本检查、默认表类型检查、表空间检查、类型检查、字符集检查和其他检查。
    • 支持MySQL 5.7 版本到 YashanDB MySQL模式的数据量统计校验、全量数据内容校验,在迁移任务结束后,检查源端、目标端数据是否一致。
  • 支持YashanDB同版本和低到高版本之间的离线迁移。
    • 支持YashanDB v23.2.4及之后版本到YashanDB的评估、元数据迁移。包括:表、序列、索引、约束、AC(访问约束)、DBLINK、视图、物化视图、同义词、存储过程、函数(自定义函数)、高级包、定时任务、触发器。
    • 支持YashanDB v23.2.4及之后版本到YashanDB的数据迁移,支持TINYINT、SMALLINT、INT、BIGINT、FLOAT、DOUBLE、NUMBER、BIT、CHAR、VARCHAR、NCHAR和NVARCHAR、BOOL、DATE、TIME、TIMESTAMP、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND、BLOB、CLOB、NCLOB、RAW、JSON等数据类型。
    • 支持YashanDB v23.2.4及之后版本到YashanDB的迁移前预检查,提前暴露数据迁移前可能遇到的风险,包括:连接检查、权限检查、容量检查、部署方式检查、版本检查、默认表类型检查、表空间检查、类型检查、字符集检查和其他检查。
    • 支持YashanDB v23.2.4及之后版本到 YashanDB数据量统计校验、全量数据内容校验,在迁移任务结束后,检查源端、目标端数据是否一致。

# 评估能力增强

  • 支持上传SQL文件评估语法兼容性,通过解析文件内的SQL语法,完成词法、语法解析,并且在内置的YashanDB上进行评估,为数据迁移提供精准的兼容性评估以及应用逻辑改造建议。
    • 支持用户上传SQL文件、zip压缩包、tar压缩包进行评估,通过界面上的一键上传功能,支持单文件、多文件评估功能。
    • 支持展示详细的兼容信息,包括源端、目标端的SQL语句兼容详情,关联表,关联schema,不兼容的修改建议等信息,帮助用户快速全面的判断源端语法兼容性。
    • 支持对不兼容的SQL语句进行修改,YMP平台会给出针对性的改造建议,并提供正则表达式批量替换以及文本批量替换能力,帮助用户轻松简单的完整不兼容语法的整改。
    • 支持在线验证SQL语句的兼容性,用户对单条SQL语句改写完成后,可直接针对该语句进行在线兼容性验证,也可批量改写完成后发起批量验证的功能,帮助用户快速完成兼容性验证。
    • 支持查看、下载评估任务的日志信息。
    • 支持在线预览、下载评估报告和不兼容报告。
  • 支持上传Mybatis文件评估语法兼容性,通过解析文件内的xml语法,完成语法解析,并且在内置的真实YashanDB上进行评估,为数据迁移提供精准的兼容性评估以及应用逻辑改造建议。
    • 支持用户上传xml文件、zip压缩包、tar压缩包进行评估,通过界面上的一键上传功能,支持单文件、多文件评估功能。
    • 支持展示详细的兼容信息,包括源端、目标端的SQL语句兼容详情,关联表,关联schema,不兼容的修改建议等信息,帮助用户快速全面的判断源端语法兼容性。
    • 支持对不兼容的SQL语句进行修改,YMP平台会给出针对性的改造建议,并提供正则表达式批量替换以及文本批量替换能力,帮助用户轻松简单的完整不兼容语法的整改。
    • 支持在线验证SQL语句的兼容性,用户对单条SQL语句改写完成后,可直接针对该语句进行在线兼容性验证,也可批量改写完成后发起批量验证的功能,帮助用户快速完成兼容性验证。
    • 支持查看、下载评估任务的日志信息。
    • 支持在线预览、下载评估报告和不兼容报告。

# 数据校验能力

  • 支持对有主键表和无主键表的全量内容校验和统计校验,通过逐行对比数据内容以及快速查询表的count行数,帮助用户在迁移完成之后,准确、快速的判断源端和迁移后目标端的表数据是否一致。
    • 支持对Oracle、DM、MySQL、YashanDB数据源端的唯一主键表、组合主键表进行全量内容校验,通过逐行比对,准确无误地校验源端和目标端的数据是否一致。并且支持界面展示源端、目标端具体的行数据,高效直接的展示不一致数据以及所在列信息。
    • 支持对Oracle、DM、MySQL、YashanDB数据源端的无主键表进行统计校验,快速校验源端和目标端表数据行数是否一致。
    • 支持对MySQL非大对象列的其余字段进行内容校验,取消原有遇到大对象列即跳过该行校验的限制,通过对大对象列进行筛选,实现非大对象列的内容校验。
    • 支持对Oracle、DM、YashanDB的大对象列进行内容校验,通过解析大对象列实际存储数值,逐字段比对,精确查询大对象列不一致的数据,支持界面上查看不一致数据所在位点,并且支持下载详细的不一致数据。
  • 支持对Oracle、DM数据源端正在运行的全量校验任务执行终止操作,通过任务管理能力,实现对全量校验任务的全生命周期管理,帮助用户在秒级内暂停校验任务。
  • 支持查看校验不一致的列名,方便用户更快捷定位不一致数据。
  • 优化校验报告下载性能,百万级别对象数量的报告,用户可以在10分钟内下载完成,提升用户体验。
  • 支持展示校验任务基本详情,包括校验概况(表总数,一致表总数,不一致表总数,校验失败表总数),不一致类型统计,任务运行时间,任务运行日志,校验行数,校验时长等信息,方便用户快速了解校验概况。

# 报告管理增强

  • 支持历史报告管理,包括评估报告、迁移报告、校验报告、不兼容报告。用户可以在平台查找历史任务的报告数据,帮助用户做数据分析。
  • 支持用户自定义设置报告保留时长,默认为90天。达到保留时长后,平台会自动删除过期报告,防止历史数据积累挤占服务器空间。
  • 支持展示报告类型、报告名称、生成时间、报告大小等信息字段,帮助用户了解各报告的详细信息。
  • 支持在报告管理功能对生成失败、生成成功的报告进行重新生成操作。
  • 支持对历史报告发起批量删除、批量下载操作,批量下载的报告会归档成一个压缩包,方便用户管理。
  • 支持用户根据时间、报告名称、报告类型模糊搜索。
  • 支持按照历史报告的大小进行排序。

# 可用性增强

  • Oracle离线迁移到YashanDB能力增强。
    • 支持迁移Oracle xmltype数据类型,映射到YashanDB的CLOB数据类型。
    • 支持迁移Oracle 用户、角色、权限,展示源端用户权限和目标端用户权限的差距,支持用户自定义选择迁移权限以及映射规则。
    • 支持Oracle非DBA角色迁移本用户下的对象和数据,当源端权限不足时,支持使用最小权限集迁移该用户下的数据。
    • 支持Oracle数据源create type、create type body、create trigger、create function、create type package、create procedure语法转换,有效提升迁移过程中兼容性,减少实施人员的介入。
  • 支持Oracle、DM数据源端数据迁移过程中配置schema映射规则,在后续的数据迁移、数据校验任务都会按照用户配置的库名映射规则来实施。
  • 支持监控平台内存使用情况,预防OOM场景发生。
    • 支持监控YMP平台在运行过程中的内存使用情况,监控数据会实时展示在任务界面上,用户可随时关注内存使用数据。
    • 支持用户自定义设置内存告警阈值,达到内存告警阈值后能及时通知到用户,有效避免OOM场景发生。
    • 支持在达到内存告警阈值后提示用户,并且给予调参建议。
  • 支持用户批量验证修改后的DDL,帮助用户在批量编辑DDL后高效快捷地验证兼容性。
  • 支持Oracle、DM数据源端,在没有DBA角色下,以最小权限集迁移本用户下的对象和数据。

# 易用性改进

  • 支持迁移日志中查看对象的迁移时间,包含表空间、索引及约束等对象的迁移信息。
  • 支持用户对表格字段自定义设置,更加灵活的展示字段信息。
  • 支持在数据迁移报告中展示监控视图,包括迁移的数据量,迁移的速率等信息,帮助用户在离线场景下做性能分析。
  • 优化评估/迁移报告下载性能,支持在百万对象数量级别场景下,10分钟内完成报告的下载操作,提升用户体验。
  • 优化预检查功能下的容量检查时间。
  • 支持配置文件内的密码加密存储,提升用户数据安全。
  • 支持独立发起评估、迁移、校验任务,用户使用起来更轻量级,可自由搭配任务流程。通过YMP全架构的拆分,现可实现对评估、迁移、校验三个功能模块单独发起任务,无需前后依赖,并且支持任务的自由组合。可支持的任务组合有:评估;评估、迁移;评估、迁移、校验;迁移;迁移、校验;校验。
  • 支持在迁移报告和迁移详情中展示错误码详情,并且支持对错误码进行搜索查询。
  • 下载评估报告处添加确认按钮,提升用户易用性。
  • 优化校验初始化界面,提升交互体验性。

# 兼容性说明

能力模块 数据源 数据源版本 数据源部署形态 目标端 目标端版本
离线迁移 Oracle 11g,12c,19c,21c 单机主备、共享集群 YashanDB(原生模式) 22.2,23.2,23.3
MySQL 5.6,5.7,8.0 单机主备、集群 YashanDB(原生模式+MySQL模式) 22.2,23.2,23.3
DM 8.0 单机主备、集群 YashanDB(原生模式) 22.2,23.2,23.3
YashanDB 23.2(23.2.4.100及以上版本),23.3 单机主备 YashanDB 23.2(23.2.4.100及以上版本),23.3,且需大于数据源版本
实时同步 YashanDB 23.3 单机 Oracle 19c
YashanDB 23.3 单机 YashanDB 23.3 单机形态

# 修复问题

  • 修复并发编译同一对象报错YAS-05220 resource is busy,try later导致无法继续评估的问题。
  • 修复部分索引CREATE INDEX COMPUTE STATISITCS未删除报错YAS-04225 invalid word COMPUTE的问题。
  • 修复安全扫描发现YMP的8090端口存在未授权访问漏洞的问题。
  • 修复YMP迁移任务刷新之后最近刷新时间显示不正确的问题。
  • 修复迁移DM8数据,第一步评估失败,报错“获取COMMENT出现异常:Error in line: 1 Invalid column name [TABLE_NAME,COLUMN_NAME]”的问题。
  • 修复删除YashanDB数据源报错 “删除失败,该数据源在被校验任务oracle-yashan,oracle yashan,oracleyashan01使用,只支持修改密码,如修改其他项,请删除任务后再操作”的问题。
  • 修复创建自定义视图时查询语句使用hint,通过YMP执行失败的问题。
  • 修复Oracle迁移至YashanDB时local索引创建失败的问题。
  • 修复MySQL迁移至YashanDB时反引号未完全去掉的问题。
  • 修复在数据校验结果中先选【校验结果】为【不一致】,再选【不一致类型】为【结构不一致】时无法获得筛选结果的问题。

# 版本约束

# 评估与元数据迁移

  • 在覆盖策略下迁移外键,如果外键所在表不迁移,则该外键无法覆盖迁移。
  • 当物化视图指定为手动刷新(ON DEMAND)时,迁移后物化视图数据不一致,需要手动处理。
  • 迁移初始化阶段失败的任务,不能进行迁移重试,可返回上一步进行迁移配置后再重新迁移。
  • 任意源端评估后对DDL进行改写验证时,不建议修改对象名或列名等信息,否则在评估迁移过程中会出现异常情况,无法找到对应对象或其他异常情况。
  • 所有源的SQL类型文件评估目前仅支持评估Create类型的DDL语句。
  • 报告管理功能暂不支持任务名中带有!@等特殊字符报告的下载与查看。
  • YashanDB到YashanDB暂不支持SCHEMA名中含有特殊字符`~!@#$&*();'"<>,/|。
  • 所有源的Mybatis Mapper XML文件评估只支持评估DML类型SQL。
  • 所有源的Mybatis Mapper XML文件评估中,对于动态SQL标签<choose>,只会解析第一个<when>标签的动态SQL。
  • 升级功能使用约束见文档中安装升级的YMP升级说明。

# 数据迁移

  • 数据迁移支持的字符集为GBK和UTF-8(MySQL要求库、表、列、服务、系统、连接编码配置要一致),并要求源端数据库与目标数据库的字符集一致。
  • 不支持表名带有单引号的迁移。
  • 不支持不可读字符串的数据迁移。
  • YashanDB到YashanDB的迁移,暂不支持以下场景:
    • 数据迁移不支持的数据类型BOX2D,UDT,NCLOB,且ST_GEOMETRY类型会自动转换为yasldr的basic模式下迁移。
    • 暂不支持CLOB中存放emmo表情迁移及迁移时的大表拆分。
  • mysql5.7做源时不支持迁移表情符号。
  • MySQL源端迁移至YashanDB(MySQL模式):
    • 暂不支持M值大小和数据范围按照YashanDB规格:decimal(M,D)、varchar(M)、varbinary(M)、time来数据迁移。
    • 暂不支持数据类型为:year、set、enum、binary的数据迁移。
    • 暂不支持数据类型属性为:unsigned、zerofill的数据迁移。

# 数据校验

  • Oracle做数据源时,不支持全量校验的数据类型有:JSON、自定义类型。
  • DM做数据源时,不支持全量校验的数据类型有:IMAGE、自定义类型。
  • 可以成功迁移超过YashanDB数值范围的数据(例如Oracle和DM Float类型的边界值迁移到YashanDB变为无穷),但校验结果会判断不一致。
  • 不支持无主键约束、唯一约束表的数据全量校验,该表会自动转为统计校验。
  • 不支持不可读字符串的数据校验。
  • 不支持CLOB/NCLOB中带表情类符号数据的校验。
  • MySQL模式校验不支持无符号数和有符号数之间的校验。