云服务器内容精选

  • 操作步骤 本小节以PostgreSQL到Hudi的实时同步为示例,介绍如何配置Migration实时集成作业。配置作业前请务必阅读使用前自检概览, 确认已做好所有准备工作。 参见新建实时集成作业创建一个实时集成作业并进入作业配置界面。 选择数据连接类型:源端选PostgreSQL,目的端选Hudi。 图1 选择数据连接类型 选择集成作业类型:同步类型默认为实时,同步场景包含整库场景。 图2 选择集成作业类型 同步场景相关介绍请参见同步场景。 配置网络资源:选择已创建的PostgreSQL、Hudi数据连接和已配置好网络连接的资源组。 图3 选择数据连接及资源组 无可选数据连接时,可单击“新建”跳转至管理中心数据连接界面,单击“创建数据连接”创建数据连接,详情请参见配置 DataArts Studio 数据连接参数进行配置。 无可选资源组时,可单击“新建”跳转至购买资源组页面创建资源组配置,详情请参见购买创建数据集成资源组增量包进行配置。 检测网络连通性:数据连接和资源组配置完成后需要测试整个迁移任务的网络连通性,可通过以下方式进行数据源和资源组之间的连通性测试。 单击展开“源端配置”触发连通性测试,会对整个迁移任务的连通性做校验。 单击源端和目的端数据源和资源组中的“测试”按钮进行检测。 网络连通性检测异常可先参考数据源和资源组网络不通如何排查?章节进行排查。 配置源端参数。 各同步场景下选择需要同步库表的方式请参考下表。 表5 选择需要同步的库表 同步场景 配置方式 整库 选择需要迁移的PostgreSQL库表。 图4 选择库表 库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。 配置目的端参数。 源库表和目标匹配策略。 各同步场景下源端库表和目标端库表的匹配策略请参考下表。 表6 源库表和目标匹配策略 同步场景 配置方式 整库 库匹配策略。 与来源库同名:数据将同步至与来源PostgreSQL 库名相同的Hudi库中。 自定义:数据将同步至自行指定的Hudi库中。 表匹配策略。 与来源表同名:数据将同步至与来源PostgreSQL 库名相同的Hudi表中。 自定义:数据将同步至自行指定的Hudi表中。 图5 整库场景下源库表和目标匹配策略 说明: 自定义匹配策略时,支持用内置变量#{source_db_name}和#{source_table_name}标志来源的库名和表名,其中表匹配策略必须包含#{source_table_name}。 Hudi参数配置。 其余Hudi目的端参数说明请参考下表。 图6 Hudi目的端配置项 表7 Hudi目的端配置项 配置项 默认值 单位 配置说明 数据存储路径 - - Hudi自动建表时的warehouse路径,每张表会在warehouse路径下创建子目录。支持填写HDFS和OBS路径,路径格式参考: OBS路径:obs://bucket/warehouse。 HDFS路径:/tmp/warehouse。 Hudi表属性全局配置 - - 支持通过参数配置部分高级功能,参数详情可参考Hudi高级配置一览表。 表8 Hudi高级配置一览表 参数名 参数类型 默认值 单位 参数说明 index.type string BLOOM - Hudi表索引类型。 支持BLOOM和BUCKET索引,数据量较大场景下强烈建议使用BUCKET索引性能更好。 hoodie.bucket.index.num.buckets int 256 个 Hudi表单分区下Bucket桶数。 说明: 使用Hudi BUCKET表时需要设置Bucket桶数,桶数设置关系到表的性能,需要格外引起注意。 非分区表桶数 = MAX(单表数据量大小(G)/2G*2,再向上取整,4)。 分区表桶数 = MAX(单分区数据量大小(G)/2G*2,再后向上取整,1)。 其中,要注意的是: 需要使用的是表的总数据大小,而不是压缩以后的文件大小。 桶的设置以偶数最佳,非分区表最小桶数请设置4个,分区表最小桶数请设置1个。 changelog.enabled boolean false - Hudi changelog功能开关,开启后Migration作业可输出DELETE和UPDATE BEFORE数据。 logical.delete.enabled boolean true - 逻辑删除开关,changelog开启时必须关闭逻辑删除。 hoodie.write.liststatus.optimized boolean true - 写log文件时是否开启liststatus优化。涉及到大表和分区数据量多的作业,在启动时list会非常耗时,可能导致作业启动超时,建议关闭。 hoodie.index.liststatus.optimized boolean false - 定位数据时是否开启liststatus优化。涉及到大表和分区数据量多的作业,在启动时list会非常耗时,可能导致作业启动超时,建议关闭。 compaction.async.enabled boolean true - 异步compaction开关。compaction操作一定程度会影响实时任务的写入性能,如果用户使用外置的compaction操作对hudi进行compaction,可以考虑设置为false关闭实时处理集成作业的compaction操作。 compaction.schedule.enabled boolean true - 生成compaction计划的开关。compaction计划必须由本服务生成,计划的执行可以交给Spark。 compaction.delta_commits int 5 次 生成compaction request的频率。compaction request生成频率降低可以使得compaction频率降低从而提升作业性能。如果hudi增量数据较小。可以考虑增大该值。 说明: 例如配置为40,即每40次commit生成一个compaction request,因为Migration每分钟生成1个commit,那么每个compaction request将间隔40分钟。 clean.async.enabled boolean true - 做历史版本数据文件清理的开关。 clean.retain_commits int 30 次 要保留的commit数。这些commit关联的数据文件版本将被保留 num_of_commits * time_between_commits 这么长的时间,建议配置为2倍的compaction.delta_commits。 说明: 例如配置为80,因为Migration每分钟生成1个commit,那么超过80分钟后如果有旧版本数据文件 ,则会生成clean request,且在执行clean时保留最近80个commit。 hoodie.archive.automatic boolean true - Hudi commit文件老化开关。 archive.min_commits int 40 次 将旧版commit归档到日志文件中时要保留不归档的最小commit数。建议配置成clean.retain_commits + 1。 说明: 例如配置成81,那么在触发归档动作时,将会保留最近81次commit文件。 archive.max_commits int 50 次 触发归档动作的commit数。建议配置成archive.min_commits + 20。 说明: 例如配置成101,那么将在生成101个commit文件后触发归档commit文件动作。 为了达到Migration作业性能最优,建议使用Hudi Bucket索引的MOR表,并根据实际数据量配置Bucket桶数。 为了保证Migration作业的稳定性,建议将Hudi Compaction单独拆成Spark作业交由 MRS 执行,在Migration任务里仅开启生成compaction计划,具体可以参考如何配置Hudi Compaction的Spark周期任务?。 刷新源表和目标表映射,检查映射关系是否正确,同时可根据需求修改表属性、添加附加字段,并通过“自动建表”能力在目的端Hudi数据库中建出相应的表。 图7 源表与目标表映射 同步主键 Hudi表必须设置“同步主键”,在源端为非主键表时,必须在字段映射阶段手动勾选主键。 表属性编辑 单击操作列“表属性编辑”可配置Hudi表属性,包含表类型,分区类型及表自定义属性。 图8 Hudi表属性配置 表类型:Hudi的表类型,可选MERGE_ON_READ和COPY_ON_WRITE。 分区类型:Hudi表分区类型,可选无分区、时间分区、自定义分区。 其中时间分区需要用户指定一个源端表名,选择一个时间转换格式。 比如时间分区用户指定一个源端表名src_col_1,选择一个时间转换格式,日(yyyyMMdd)、月(yyyyMM)、年(yyyy),自动建表时会在Hudi表默认创建一个cdc_partition_key的字段,系统会根据配置的时间转换格式将源端字段(src_col_1)的值格式化后写入cdc_partition_key中。 表自定义属性:支持通过参数配置单表的部分高级功能,参数详情可参考Hudi高级配置一览表。 附加字段编辑:单击操作列“附加字段编辑”可为目的端的Hudi表中增加自定义字段,同时附加字段也会额外加入到Hudi表的建表中。用户可以在已有的源表字段基础上添加多个附加字段,并自定义字段名、选择字段类型、填写字段值。 字段名称:目的端Hudi表新增字段的名称。 字段类型:目的端Hudi表新增字段的类型。 字段值:目的端Hudi表新增字段的取值来源。 表9 附加字段取值方式 类型 示例 常量 任意字符。 内置变量 源端host ip地址:source.host。 源端schema名称:mgr.source.schema。 源端table名称:mgr.source.table。 目的端schema名称:mgr.target.schema。 目的端table名称:mgr.target.table。 源表字段 源表中的任一字段。 配置附加字段的取值来源于源表字段时,请注意任务运行过程中不能修改对应源表字段的名称,否则可能导致作业异常。 udf方法 substring(#col, pos[, len]): 截取源端col列的子串, 范围在[pos, pos+len)。 date_format(#col, time_format[, src_tz, dst_tz]): 将源端col列按time_format格式化, 可选转换时区。 now([tz]): 获取指定时区的当前时间。 if(cond_exp, str1, str2): 满足条件表达式cond_exp时返回str1, 否则返回str2。 concat(#col[, #str, ...]): 拼接多个参数, 可为源端列或字符串。 from_unixtime(#col[, time_format]): 将unix时间戳按time_format格式化。 unix_timestamp(#col[, precision, time_format]): 将时间转成unix时间戳, 可显式定义时间格式及转换后精度。 自动建表:单击“自动建表”可按照已配置映射规则在目的端数据库自动建表,成功后表建立方式会显示为使用已有表。 图9 自动建表 Migration仅支持自动建表,不支持自动建库和模式,需用户自行在目的端手动建出库和模式后再使用本功能建表。 自动建表时对应的字段类型映射关系请参见字段映射关系章节。 自动建出的Hudi表会带有3个审计字段,分别是cdc_last_update_date、logical_is_deleted、_hoodie_event_time,并会以_hoodie_event_time作为Hudi表的预聚合键。 配置任务属性。 表10 任务配置参数说明 参数 说明 默认值 执行内存 作业执行分配内存,跟随处理器核数变化而自动变化。 8GB 处理器核数 范围:2-32。 每增加1处理核数,则自动增加4G执行内存和1并发数。 2 并发数 作业执行支持并发数。该参数无需配置,跟随处理器核数变化而自动变化。 1 自动重试 作业失败时是否开启自动重试。 否 最大重试次数 “自动重试”为是时显示该参数。 1 重试间隔时间 “自动重试”为是时显示该参数。 120秒 是否写入脏数据 选择是否记录脏数据,默认不记录脏数据,当脏数据过多时,会影响同步任务的整体同步速度。 链路是否支持写入脏数据,以实际界面为准。 否:默认为否,不记录脏数据。 表示不允许脏数据存在。如果同步过程中产生脏数据,任务将失败退出。 是:允许脏数据,即任务产生脏数据时不影响任务执行。 允许脏数据并设置其阈值时: 若产生的脏数据在阈值范围内,同步任务将忽略脏数据(即不会写入目标端),并正常执行。 若产生的脏数据超出阈值范围,同步任务将失败退出。 说明: 脏数据认定标准:脏数据是对业务没有意义,格式非法或者同步过程中出现问题的数据;单条数据写入目标数据源过程中发生了异常,则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。 例如,源端是VARCHAR类型的数据写到INT类型的目标列中,则会因为转换不合理导致脏数据不会成功写入目的端。用户可以在同步任务配置时,配置同步过程中是否写入脏数据,配置脏数据条数(单个分片的最大错误记录数)保证任务运行,即当脏数据超过指定条数时,任务失败退出。 否 脏数据策略 “是否写入脏数据”为是时显示该参数,当前支持以下策略: 不归档:不对脏数据进行存储,仅记录到任务日志中。 归档到OBS:将脏数据存储到OBS中,并打印到任务日志中。 不归档 脏数据写入连接 “脏数据策略”选择归档到OBS时显示该参数。 脏数据要写入的连接,目前只支持写入到OBS连接。 - 脏数据目录 脏数据写入的OBS目录。 - 脏数据阈值 是否写入脏数据为是时显示该参数。 用户根据实际设置脏数据阈值。 说明: 脏数据阈值仅针对每个并发生效。比如阈值为100,并发为3,则该作业可容忍的脏数据条数最多为300。 输入-1表示不限制脏数据条数。 100 添加自定义属性 支持通过自定义属性修改部分作业参数及开启部分高级功能,详情可参见任务性能调优章节。 - 提交并运行任务。 作业配置完毕后,单击作业开发页面左上角“提交”,完成作业提交。 图10 提交作业 提交成功后,单击作业开发页面“启动”按钮,在弹出的启动配置对话框按照实际情况配置同步位点参数,单击“确定”启动作业。 图11 启动配置 表11 启动配置参数 参数 说明 同步模式 增量同步:从指定时间位点开始同步增量数据。 全量+增量:先同步全量数据,随后实时同步增量数据。 时间 增量同步需要设置该参数,指示增量同步起始的时间位点。 说明: 配置的位点时间早于Binlog日志最早时间点时,默认会以日志最新时间点开始消费。 监控作业。 通过单击作业开发页面导航栏的“前往监控”按钮,可前往作业监控页面查看运行情况、监控日志等信息,并配置对应的告警规则,详情请参见实时集成任务运维。 图12 前往监控
  • 注意事项 除了数据源版本、连接账号权限及同步对象范围外,您还需要注意的事项请参见下表。 表4 注意事项 类型名称 使用和操作限制 数据库限制 目的端数据库中的库名、表名、字段名仅支持数字、字母和下划线,且字段名必须以字母或下划线开头,建议尽量使用常规字符避免任务失败。 源数据库的分区表触发器不可以设置为disable。 如果做增量同步:源数据库的“pg_hba.conf” 文件中包含如下的配置: host replication all 0.0.0.0/0 md5 使用限制 通用: 实时同步过程中,不支持IP、端口、账号、密码修改。 PostgreSQL的WAL日志建议保留3天以上。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量同步阶段: 请勿修改源数据库表的主键或者唯一键(主键不存在时),否则可能导致增量数据不一致或任务失败。 请勿修改源数据库中表的replica identity属性,否则可能导致增量数据不一致或任务失败。 Postgres数据源复制槽数达到上限时,无法执行新的作业,可以通过设置max_replication_slots的数值提高复制槽的使用上限或手动删除复制槽(Postgres数据源不支持自动删除复制槽)解决,手动删除请参见PostgreSQL数据源如何手动删除复制槽?。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考常见问题章节进行排查。 其他限制 启动任务前,请确保源库中未启动长事务,源库启动长事务会阻塞逻辑复制槽的创建,进而引发任务失败。 任务启动后,不支持源库发生主备倒换。 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。
  • 支持的同步对象范围 在使用Migration进行同步时,不同类型的链路,支持的同步对象范围不同,详细情况可参考下表。 表3 同步对象范围 类型名称 使用须知 同步对象范围 支持同步DML:包括INSERT、UPDATE、DELETE。 不支持同步DDL。 仅支持同步有主键表。 不支持同步视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束和唯一索引。 不支持同步无日志表(UN LOG GED TABLE)、临时表、系统模式和系统表。 自动建表支持同步表结构、普通索引、约束(主键、空、非空)、注释。
  • 约束与限制 仅当前工作空间的管理员或者拥有DAYU Administrator、Tenant Administrator权限的用户,可新建、修改和删除审批人。 审批人必须为当前工作空间管理员或者拥有DAYU Administrator、Tenant Administrator权限的用户。 当前工作空间为企业模式时,通过任务发布方式进行单据的审批操作,不支持提交脚本或者作业进行审批。 开启审批功能时,相关API的请求体需要增加审批人属性,具体见作业开发API。 审批开关的配置、作业和脚本的审批只能在前台界面进行操作。 有实时Pipeline作业的情况下,不允许打开审批开关。 审批开关打开后,审批中心功能对审批人和单据提交人都可见。审批开关关闭时,仅当前工作空间的管理员或者拥有DAYU Administrator、Tenant Administrator权限的用户可以看到审批中心功能,其他用户不可见。
  • 启用账号映射 当成功配置账号映射策略后,需要在细粒度权限应用页签启用账号映射策略后,账号映射才能生效。 在DataArts Studio控制台首页,选择对应工作空间的“数据安全”模块,进入数据安全页面。 单击左侧导航树中的“权限应用”,在权限应用页面,进入“细粒度权限应用”页签。 在“细粒度权限应用”页面,为希望启用账号映射的数据连接,进行账号映射联通性测试。 账号映射联通性测试时,系统会按照账号映射策略将当前用户身份映射成MRS系统账号或ldap账号后再访问数据源,以确保账号访问正常。 图3 账号映射联通性测试 账号映射联通性测试成功后,需要在细粒度认证状态处选择“开发态账号映射”,然后系统会自动根据数据连接的集群选择对应的账号映射策略,为对应连接开启账号映射。 图4 启用账号映射
  • 约束与限制 当前开发态账号映射仅支持代理模式的MRS Hive、MRS SPARK,MRS Hetu、MRS Impala类型数据连接。当修改MRS Hive、MRS SPARK数据连接的连接方式时,例如将代理连接改成API直连,将会导致账号映射失效。 仅当数据连接中的Agent选择的 CDM 集群为2.10.0.300及以上版本时,才支持账号映射。 只有DAYU Administrator、Tenant Administrator或者数据安全管理员有权限创建账号映射策略,并配置账号映射。 DAYU User用户修改账号映射策略时,仅支持修改自己账号的映射规则,不支持修改映射类型、默认访问身份等其他内容。 账号映射策略为DataArts Studio实例级别配置,各工作空间之间数据互通。因此一个集群的每种映射类型下只能创建一个账号映射策略。 在配置账号映射策略的映射列表时,不支持校验MRS系统账号或ldap账号是否存在以及密码是否正确,若配置错误的用户名密码,会导致账号映射失败。而对于默认访问身份的配置的账号密码,系统支持校验。
  • 待我审核 在DataArts Studio数据架构控制台的左侧导航栏中,单击“审核中心”,进入审核中心页面,系统默认显示待审核页面,如下图所示。 图3 待审核页面 功能区域 说明 1 批量审核: 勾选多个待审核信息。 单击,弹出“批量审核”对话框。 输入有效的审核意见。 单击“批量通过”,所选审核信息通过审核;单击“批量驳回”,所选审核信息被驳回。 2 单个审核: 单击操作列“审核”,进入指定待审核信息的审核页面。 根据实际情况选择审核结果(通过或驳回),并输入有效的审核的意见。 单击“确定”,完成审核。 3 :通过该按钮过滤出修改时间段内的待审核信息。 :通过该按钮查询对象和创建人的待审核信息。 :通过该按钮设置待审核表的表列项。 :刷新按钮。
  • 查看已审核、待审核、我的申请 待我审核 在DataArts Studio数据架构的左侧导航树中,单击“审核中心”,选择“待我审核”页签,可以查看待审核的对象。 已审核 在DataArts Studio数据架构的左侧导航树中,单击“审核中心”,选择“已审核”页签,可以查看已通过审核的对象。 我的申请 在DataArts Studio数据架构的左侧导航树中,单击“审核中心”,选择“我的申请”页签,可以查看自己提交审核的对象。
  • 审核人员审核对象 如果您是审核人员,请使用审核人员的账号参考以下步骤审核对象。 在DataArts Studio控制台首页,选择对应工作空间的“数据架构”模块,进入数据架构页面。 在左侧导航树中,单击“审核中心”,选择“待我审核”页签,在列表中找到需要审核的对象,然后在该对象所在行单击“审核”。 您也可以勾选多个待审核的对象,然后单击“批量审核”按钮进行批量审核。 图1 审核 在审核的详情页面,确认信息无误后,单击“通过”,然后在弹出对话框中输入审核意见并单击“确定”完成审核。 如果信息有误,请单击“驳回”,然后在弹出对话框中输入审核意见并单击“确定”完成审核。 图2 审核信息
  • 支持的数据源 实时集成作业支持的数据源如表1所示。 表1 实时集成作业支持的数据源 数据源分类 源端数据源 对应的目的端数据源 相关文档 说明 关系型数据 MySQL Hadoop:MRS Hudi MySQL同步到MRS Hudi作业配置 MySQL数据库建议使用版本:5.6、5.7、8.x版本。 Hudi建议使用版本:0.11.0。 消息系统:DMS Kafka MySQL同步到Kafka作业配置 MySQL数据库建议使用版本:5.6、5.7、8.x版本。 Kafka集群建议使用版本:2.7、3.x版本。 数据仓库 :DWS MySQL同步到DWS作业配置 MySQL数据库建议使用版本:5.6、5.7、8.x版本。 DWS集群建议使用版本:8.1.3、8.2.0版本。 SQLServer 数据仓库:DWS(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 SQLServer同步到DWS作业配置 SQLServer建议使用版本:企业版2016、2017、2019、2022版本,标准版2016 SP2及以上版本、2017、2019、2022版本。 DWS建议使用版本:8.1.3、8.2.0版本。 Hadoop:MRS Hudi(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 SQLServer同步到MRS Hudi作业配置 SQLServer建议使用版本:企业版2016、2017、2019、2022版本,标准版2016 SP2及以上版本、2017、2019、2022版本。 Hudi建议使用版本:0.11.0。 PostgreSQL 数据仓库:DWS(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 PostgreSQL同步到DWS作业配置 PostgreSQL数据库建议使用版本:PostgreSQL 9.4、9.5、9.6、10、11、12、13、14版本。 DWS集群建议使用版本:8.1.3、8.2.0版本。 Hadoop:MRS Hudi(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 PostgreSQL同步到MRS Hudi作业配置 PostgreSQL建议使用版本:PostgreSQL 9.4、9.5、9.6、10、11、12、13、14版本。 Hudi建议使用版本:0.11.0。 Open Gauss( GaussDB ) 数据仓库:DWS(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 GaussDB集中式/分布式同步到DWS作业配置 GaussDB集中式/ 分布式数据库 建议使用版本:内核引擎版本505.1.0、505.1.0.SPC0100、505.2.0。 DWS建议使用版本:8.1.3、8.2.0版本。 Oracle 数据仓库:DWS(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 Oracle同步到DWS作业配置 Oracle数据库建议使用版本:10、11、12、19版本。 DWS集群建议使用版本:8.1.3、8.2.0版本。 DMS Kafka(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 Oracle同步到DMS Kafka作业配置 Oracle数据库建议使用版本:10、11、12、19版本。 Kafka建议使用版本:2.7、3.x版本。 Hadoop:MRS Hudi(公测中) 说明: 该链路目前需申请白名单后才能使用。如需使用该链路,请联系客服或技术支持人员。 Oracle同步到MRS Hudi作业配置 Oracle数据库建议使用版本:10、11、12、19版本。 Hudi建议使用版本:0.11.0。 消息系统 DMS Kafka 对象存储:OBS DMS Kafka同步到OBS作业配置 Kafka集群建议使用版本:2.7、3.x版本。 Apache Kafka Hadoop:MRS Kafka Apache Kafka同步到MRS Kafka作业配置 Kafka集群建议使用版本:2.7、3.x版本。 父主题: 数据集成(实时作业)
  • 操作步骤 本小节以Oracle到MRS Hudi的实时同步为示例,介绍如何配置Migration实时集成作业。配置作业前请务必阅读使用前自检概览, 确认已做好所有准备工作。 参见新建实时集成作业创建一个实时集成作业并进入作业配置界面。 选择数据连接类型:源端选Oracle,目的端选Hudi。 图2 选择数据连接类型 选择集成作业类型:同步类型默认为实时,同步场景包含整库场景。 图3 选择集成作业类型 同步场景相关介绍请参见同步场景。 配置网络资源:选择已创建的Oracle、MRS Hudi数据连接和已配置好网络连接的资源组。 图4 选择数据连接及资源组 无可选数据连接时,可单击“新建”跳转至管理中心数据连接界面,单击“创建数据连接”创建数据连接,详情请参见配置DataArts Studio数据连接参数进行配置。 无可选资源组时,可单击“新建”跳转至购买资源组页面创建资源组配置,详情请参见购买创建数据集成资源组增量包进行配置。 检测网络连通性:数据连接和资源组配置完成后需要测试整个迁移任务的网络连通性,可通过以下方式进行数据源和资源组之间的连通性测试。 单击展开“源端配置”触发连通性测试,会对整个迁移任务的连通性做校验。 单击源端和目的端数据源和资源组中的“测试”按钮进行检测。 网络连通性检测异常可先参考数据源和资源组网络不通如何排查?章节进行排查。 配置源端参数。 选择需要迁移的Oracle库表。 图5 选择库表 库与表均支持自定义选择,即可选择一库一表,也可选择多库多表。 配置目的端参数。 源库表和目标匹配策略。 各同步场景下源端库表和目标端库表的匹配策略请参考下表。 表5 源库表和目标匹配策略 同步场景 配置方式 整库 库匹配策略。 与来源库同名:数据将同步至与来源Oracle 库名相同的Hudi库中。 自定义:数据将同步至自行指定的Hudi库中。 表匹配策略。 与来源表同名:数据将同步至与来源Oracle 库名相同的Hudi表中。 自定义:数据将同步至自行指定的Hudi表中。 图6 整库场景下源库表和目标匹配策略 说明: 自定义匹配策略时,支持用内置变量#{source_db_name}和#{source_table_name}标志来源的库名和表名,其中表匹配策略必须包含#{source_table_name}。 Hudi参数配置。 其余Hudi目的端参数说明请参考下表。 图7 Hudi目的端配置项 表6 Hudi目的端配置项 配置项 默认值 单位 配置说明 数据存储路径 - - Hudi自动建表时的warehouse路径,每张表会在warehouse路径下创建子目录。支持填写HDFS和OBS路径,路径格式参考: OBS路径:obs://bucket/warehouse。 HDFS路径:/tmp/warehouse。 Hudi表属性全局配置 - - 支持通过参数配置部分高级功能,参数详情可参考Hudi高级配置一览表。 表7 Hudi高级配置一览表 参数名 参数类型 默认值 单位 参数说明 index.type string BLOOM - Hudi表索引类型。 支持BLOOM和BUCKET索引,数据量较大场景下强烈建议使用BUCKET索引性能更好。 hoodie.bucket.index.num.buckets int 256 个 Hudi表单分区下Bucket桶数。 说明: 使用Hudi BUCKET表时需要设置Bucket桶数,桶数设置关系到表的性能,需要格外引起注意。 非分区表桶数 = MAX(单表数据量大小(G)/2G*2,再向上取整,4)。 分区表桶数 = MAX(单分区数据量大小(G)/2G*2,再后向上取整,1)。 其中,要注意的是: 需要使用的是表的总数据大小,而不是压缩以后的文件大小。 桶的设置以偶数最佳,非分区表最小桶数请设置4个,分区表最小桶数请设置1个。 changelog.enabled boolean false - Hudi changelog功能开关,开启后Migration作业可输出DELETE和UPDATE BEFORE数据。 logical.delete.enabled boolean true - 逻辑删除开关,changelog开启时必须关闭逻辑删除。 hoodie.write.liststatus.optimized boolean true - 写log文件时是否开启liststatus优化。涉及到大表和分区数据量多的作业,在启动时list会非常耗时,可能导致作业启动超时,建议关闭。 hoodie.index.liststatus.optimized boolean false - 定位数据时是否开启liststatus优化。涉及到大表和分区数据量多的作业,在启动时list会非常耗时,可能导致作业启动超时,建议关闭。 compaction.async.enabled boolean true - 异步compaction开关。compaction操作一定程度会影响实时任务的写入性能,如果用户使用外置的compaction操作对hudi进行compaction,可以考虑设置为false关闭实时处理集成作业的compaction操作。 compaction.schedule.enabled boolean true - 生成compaction计划的开关。compaction计划必须由本服务生成,计划的执行可以交给Spark。 compaction.delta_commits int 5 次 生成compaction request的频率。compaction request生成频率降低可以使得compaction频率降低从而提升作业性能。如果hudi增量数据较小。可以考虑增大该值。 说明: 例如配置为40,即每40次commit生成一个compaction request,因为Migration每分钟生成1个commit,那么每个compaction request将间隔40分钟。 clean.async.enabled boolean true - 做历史版本数据文件清理的开关。 clean.retain_commits int 30 次 要保留的commit数。这些commit关联的数据文件版本将被保留 num_of_commits * time_between_commits 这么长的时间,建议配置为2倍的compaction.delta_commits。 说明: 例如配置为80,因为Migration每分钟生成1个commit,那么超过80分钟后如果有旧版本数据文件 ,则会生成clean request,且在执行clean时保留最近80个commit。 hoodie.archive.automatic boolean true - Hudi commit文件老化开关。 archive.min_commits int 40 次 将旧版commit归档到日志文件中时要保留不归档的最小commit数。建议配置成clean.retain_commits + 1。 说明: 例如配置成81,那么在触发归档动作时,将会保留最近81次commit文件。 archive.max_commits int 50 次 触发归档动作的commit数。建议配置成archive.min_commits + 20。 说明: 例如配置成101,那么将在生成101个commit文件后触发归档commit文件动作。 为了达到Migration作业性能最优,建议使用Hudi Bucket索引的MOR表,并根据实际数据量配置Bucket桶数。 为了保证Migration作业的稳定性,建议将Hudi Compaction单独拆成Spark作业交由MRS执行,在Migration任务里仅开启生成compaction计划,具体可以参考如何配置Hudi Compaction的Spark周期任务?。 刷新源表和目标表映射,检查映射关系是否正确,同时可根据需求修改表属性、添加附加字段,并通过“自动建表”能力在目的端Hudi数据库中建出相应的表。 图8 源表与目标表映射 同步主键 Hudi表必须设置“同步主键”,在源端为非主键表时,必须在字段映射阶段手动勾选主键。 表属性编辑 单击操作列“表属性编辑”可配置Hudi表属性,包含表类型,分区类型及表自定义属性。 图9 Hudi表属性配置 表类型:Hudi的表类型,可选MERGE_ON_READ和COPY_ON_WRITE。 分区类型:Hudi表分区类型,可选无分区、时间分区、自定义分区。 其中时间分区需要用户指定一个源端表名,选择一个时间转换格式。 比如时间分区用户指定一个源端表名src_col_1,选择一个时间转换格式,日(yyyyMMdd)、月(yyyyMM)、年(yyyy),自动建表时会在Hudi表默认创建一个cdc_partition_key的字段,系统会根据配置的时间转换格式将源端字段(src_col_1)的值格式化后写入cdc_partition_key中。 表自定义属性:支持通过参数配置单表的部分高级功能,参数详情可参考Hudi高级配置一览表。 附加字段编辑:单击操作列“附加字段编辑”可为目的端的Hudi表中增加自定义字段,同时附加字段也会额外加入到Hudi表的建表中。用户可以在已有的源表字段基础上添加多个附加字段,并自定义字段名、选择字段类型、填写字段值。 字段名称:目的端Hudi表新增字段的名称。 字段类型:目的端Hudi表新增字段的类型。 字段值:目的端Hudi表新增字段的取值来源。 表8 附加字段取值方式 类型 示例 常量 任意字符。 内置变量 源端host ip地址:source.host。 源端schema名称:mgr.source.schema。 源端table名称:mgr.source.table。 目的端schema名称:mgr.target.schema。 目的端table名称:mgr.target.table。 源表字段 源表中的任一字段。 配置附加字段的取值来源于源表字段时,请注意任务运行过程中不能修改对应源表字段的名称,否则可能导致作业异常。 udf方法 substring(#col, pos[, len]): 截取源端col列的子串, 范围在[pos, pos+len)。 date_format(#col, time_format[, src_tz, dst_tz]): 将源端col列按time_format格式化, 可选转换时区。 now([tz]): 获取指定时区的当前时间。 if(cond_exp, str1, str2): 满足条件表达式cond_exp时返回str1, 否则返回str2。 concat(#col[, #str, ...]): 拼接多个参数, 可为源端列或字符串。 from_unixtime(#col[, time_format]): 将unix时间戳按time_format格式化。 unix_timestamp(#col[, precision, time_format]): 将时间转成unix时间戳, 可显式定义时间格式及转换后精度。 自动建表:单击“自动建表”可按照已配置映射规则在目的端数据库自动建表,成功后表建立方式会显示为使用已有表。 图10 自动建表 Migration仅支持自动建表,不支持自动建库和模式,需用户自行在目的端手动建出库和模式后再使用本功能建表。 自动建表时对应的字段类型映射关系请参见字段映射关系章节。 自动建出的Hudi表会带有3个审计字段,分别是cdc_last_update_date、logical_is_deleted、_hoodie_event_time,并会以_hoodie_event_time作为Hudi表的预聚合键。 配置任务属性。 表9 任务配置参数说明 参数 说明 默认值 执行内存 作业执行分配内存,跟随处理器核数变化而自动变化。 8GB 处理器核数 范围:2-32。 每增加1处理核数,则自动增加4G执行内存和1并发数。 2 并发数 作业执行支持并发数。该参数无需配置,跟随处理器核数变化而自动变化。 1 自动重试 作业失败时是否开启自动重试。 否 最大重试次数 “自动重试”为是时显示该参数。 1 重试间隔时间 “自动重试”为是时显示该参数。 120秒 是否写入脏数据 选择是否记录脏数据,默认不记录脏数据,当脏数据过多时,会影响同步任务的整体同步速度。 链路是否支持写入脏数据,以实际界面为准。 否:默认为否,不记录脏数据。 表示不允许脏数据存在。如果同步过程中产生脏数据,任务将失败退出。 是:允许脏数据,即任务产生脏数据时不影响任务执行。 允许脏数据并设置其阈值时: 若产生的脏数据在阈值范围内,同步任务将忽略脏数据(即不会写入目标端),并正常执行。 若产生的脏数据超出阈值范围,同步任务将失败退出。 说明: 脏数据认定标准:脏数据是对业务没有意义,格式非法或者同步过程中出现问题的数据;单条数据写入目标数据源过程中发生了异常,则此条数据为脏数据。 因此只要是写入失败的数据均被归类于脏数据。 例如,源端是VARCHAR类型的数据写到INT类型的目标列中,则会因为转换不合理导致脏数据不会成功写入目的端。用户可以在同步任务配置时,配置同步过程中是否写入脏数据,配置脏数据条数(单个分片的最大错误记录数)保证任务运行,即当脏数据超过指定条数时,任务失败退出。 否 脏数据策略 “是否写入脏数据”为是时显示该参数,当前支持以下策略: 不归档:不对脏数据进行存储,仅记录到任务日志中。 归档到OBS:将脏数据存储到OBS中,并打印到任务日志中。 不归档 脏数据写入连接 “脏数据策略”选择归档到OBS时显示该参数。 脏数据要写入的连接,目前只支持写入到OBS连接。 - 脏数据目录 脏数据写入的OBS目录。 - 脏数据阈值 是否写入脏数据为是时显示该参数。 用户根据实际设置脏数据阈值。 说明: 脏数据阈值仅针对每个并发生效。比如阈值为100,并发为3,则该作业可容忍的脏数据条数最多为300。 输入-1表示不限制脏数据条数。 100 添加自定义属性 支持通过自定义属性修改部分作业参数及开启部分高级功能,详情可参见任务性能调优章节。 - 提交并运行任务。 作业配置完毕后,单击作业开发页面左上角“提交”,完成作业提交。 图11 提交作业 提交成功后,单击作业开发页面“启动”按钮,在弹出的启动配置对话框按照实际情况配置同步位点参数,单击“确定”启动作业。 图12 启动配置 表10 启动配置参数 参数 说明 同步模式 增量同步:从指定时间位点开始同步增量数据。 全量+增量:先同步全量数据,随后实时同步增量数据。 时间 增量同步需要设置该参数,指示增量同步起始的时间位点。 说明: 配置的位点时间早于CDC日志最早时间点时,默认会以日志最新时间点开始消费。 监控作业。 通过单击作业开发页面导航栏的“前往监控”按钮,可前往作业监控页面查看运行情况、监控日志等信息,并配置对应的告警规则,详情请参见实时集成任务运维。 图13 前往监控
  • 数据库账号权限要求 在使用Migration进行同步时,源端和目的端所使用的数据库账号需要满足以下权限要求,才能启动实时同步任务。不同类型的同步任务,需要的账号权限也不同,详细可参考下表进行赋权。 表2 数据库账号权限 类型名称 权限要求 源数据库连接账号 Oracle 库需要开启归档日志,同时需表查询权限和日志解析权限,开通对应权限详情请参考Oracle数据源如何开通归档日志、查询权限和日志解析权限?。 目标数据库连接账号 MRS用户需要拥有Hadoop和Hive组件的读写权限,建议参照图1所示角色及用户组配置MRS用户。 图1 MRS Hudi最小化权限 具体MRS集群角色权限管理请参考《MRS集群用户权限模型》。
  • 支持的同步对象范围 在使用Migration进行同步时,不同类型的链路,支持的同步对象范围不同,详细情况可参考下表。 表3 同步对象范围 类型名称 使用须知 同步对象范围 支持同步的DML:包括INSERT、UPDATE、DELETE。 支持同步的DDL:新增列。 仅支持同步主键表。 不支持视图、外键、存储过程、触发器、函数、事件、虚拟列、唯一约束、唯一索引、外键索引、Check约束的同步。 自动建表支持同步表结构、普通索引、约束(主键、空、非空)、注释。
  • 注意事项 除了数据源版本、连接账号权限及同步对象范围外,您还需要注意的事项请参见下表。 表4 注意事项 类型名称 使用和操作限制 数据库限制 目标数据库中的库名、表名、字段名仅支持数字、字母和下划线,且字段名必须以字母或下划线开头,建议尽量使用常规字符避免任务失败。 使用限制 通用: 实时同步过程中,不支持IP、端口、账号、密码修改。 Oracle归档日志建议保留3天以上。 禁止对Oracle源库做resetlogs操作,否则会导致数据无法同步且任务无法恢复。 不支持修改源数据库Oracle用户名(SCHEMA名),包括11.2.0.2之前版本通过修改USER$字典表方式及11.2.0.2之后通过ALTER USER username RENAME TO new_username修改SCHEMA名称的场景。 Oracle为源端时,暂不支持迁移CLOB、NCLOB和BLOB类型。 Oracle为源端时,暂不支持Oracle RAC集群。 Hudi表使用Bucket索引的场景下不允许更新分区键,否则可能产生重复数据。 Hudi表使用Bucket索引的场景下主键仅保证单分区内唯一。 本链路所使用的Hudi表需带有3个审计字段:cdc_last_update_date、logical_is_deleted、_hoodie_event_time,并会以_hoodie_event_time作为Hudi表的预聚合键。因此,若使用已存在的表,也需要携带这3个审计字段,否则可能导致任务异常。 cdc_last_update_date:Migration任务处理CDC数据的时间。 logical_is_deleted:逻辑删除标志。 _hoodie_event_time:数据在Oracle CDC中的时间戳。 全量同步阶段: 任务启动和全量数据同步阶段,请不要在源数据库执行DDL操作,否则可能导致任务异常。 增量同步阶段: 支持DML:包括INSERT、UPDATE、DELETE。 支持的DDL:新增列。 不支持混合分区表。混合分区表中的外部分区数据变更不产生DML日志,增量数据同步时无法获取变更信息,会存在数据不一致的风险。 表名和列名长度限制为30个字符。Oracle日志读取采用Oracle logminer,logminer限制了表名和列名在30个字符以内,详情请参见LogMiner分析日志相关介绍。 常见故障排查: 在任务创建、启动、全量同步、增量同步、结束等过程中,如有遇到问题,可先参考常见问题章节进行排查。 其他限制 支持目标数据库中的表比源数据库多列场景,但是需要避免以下场景可能导致的任务失败。 目标数据库多的列要求非空且没有默认值,源数据库insert数据,同步到目标数据库后多的列为null,不符合目标数据库要求。 Oracle中表结构长度(所有列长字节数之和,char、varchar2等类型字节长度和编码有关)超过65535时,可能导致同步失败。 当使用PDB数据库同步时,由于Oracle LogMiner组件的限制,增量同步时必须打开全部PDB。 Oralce 12.2及以上版本,由于Oracle LogMiner组件的限制,增量同步不支持表名或列名超过30个字符。 Oracle为源端时全量+增量或增量作业,如果需要同步PDB库中的表,Oracle连接中需要填写CDB库的用户名和密码,不能为PDB用户名和密码,因为Oracle日志统一在存储在CDB库中,同时Oracle logminer只能运行在CDB库中。
  • 背景说明 购买DataArts Studio实例的用户,系统将默认为其创建一个默认的工作空间“default”,并赋予该用户为管理员角色。 在主账号创建的DataArts Studio实例中,该账号下的 IAM 用户如需创建工作空间,需要由主账号给IAM用户赋予DAYU Administrator或Tenant Administrator权限。在子用户创建的DataArts Studio实例中,主账号默认具有该DataArts Studio实例的所有执行权限。 具备DAYU User账号权限的用户,只有当其被添加为工作空间的成员后,才可以访问该工作空间。