多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 如何创建「数据同步」? ### 1.什么是「数据同步」? 企业用户需要把某一个「数据源」的数据迁移到一个或多个「数据目的地」,此时用户可通过创建「数据任务」在DataPipeline实现数据迁移的工作。 ***** ### 2.创建「数据同步」能做什么? 创建「数据同步」能带给用户的核心功能有: 1. 支持连接数据库、数据仓库、文件系统、消息队列、API、阿里云数据库作为数据源。 2. 支持数据库、数据仓库、文件系统、消息队列作为数据目的地。 3. 支持同时执行多个数据任务来完成数据迁移工作。 4. 支持定时、实时迁移数据。 5. 支持同步同步一个或者多张表到多个库或者一个库的多张表里。 6. 支持可视化操作设置轻数据清洗功能。 7. 有强大的运维数据监控系统。 8. 提供数据任务错误队列功能,帮助用户高效率解决问题。 9. 提供数据任务预警功能,帮助及时发现问题。 ***** ### 3.如何创建「数据同步」? 使用DataPipeline创建一项「数据同步」,主要分以下步骤: [TOC] 1. 配置「数据源」和「数据目的地」 2. 进行「任务设置」 3. 选择「同步内容」 4. 设置「读取规则」 5. 设置「写入规则」 6. 「激活」数据同步任务 #### **1.在首页,点击「新建任务」。** :-: ![](https://img.kancloud.cn/24/22/2422b442facda6d53e8e057d12237d08_700x438.png) #### **2.配置任务名称,选择「数据源」和「数据目的地」。** * 用户可以自定义命名「数据任务」名称,最多50字符,不允许与其他任务同名。 * 用户可根据自身需求,配置所需的「数据源」和「数据目的地」。用户可以选择一个数据源,一个或多个数据目的地。 * 目前支持配置的数据源:[MySQL](chapter1/shu-ju-yuan/pei-zhi-mysql-shu-ju-yuan.md)、[Oracle](chapter1/shu-ju-yuan/pei-zhi-oracle-shu-ju-yuan.md)、[SQL Server](chapter1/shu-ju-yuan/pei-zhi-sql-server.md)、[PostgreSQL](chapter1/shu-ju-yuan/pei-zhi-PostgreSQL.md)、[FTP](chapter1/shu-ju-yuan/pei-zhi-ftp.md)、[S3](chapter1/shu-ju-yuan/pei-zhi-s3.md)、[API](chapter1/shu-ju-yuan/pei-zhi-api.md)、[Kafka](chapter1/shu-ju-yuan/pei-zhi-kafka.md)、[阿里云OSS](chapter1/shu-ju-yuan/pei-zhi-oss.md)、[Hive](chapter1/shu-ju-yuan/Hive.md)、 [腾讯云TDSQL](chapter1/shu-ju-yuan/pei-zhi-tdsql.md)、[自定义数据源](zidingyi.md) * 目前支持配置的数据目的地:[Redshift](chapter1/shu-ju-mu-de-di/pei-zhi-redshift-shu-ju-mu-de-di.md)、[Oracle](chapter1/shu-ju-mu-de-di/pei-zhi-oracle-shu-ju-mu-de-di.md)、[MySQL](chapter1/shu-ju-mu-de-di/pei-zhi-aws-rds-shu-ju-mu-de-di.md)、[SQL Server](chapter1/shu-ju-mu-de-di/SQLServer.md)、[Kafka](chapter1/shu-ju-mu-de-di/Kafka.md)、[FTP](chapter1/shu-ju-mu-de-di/wen-jian-xi-tong.md)、[TIDB](shu-ju-mu-de-di/TIDB.md)、[Greenplum](chapter1/shu-ju-mu-de-di/Greenplum.md)、[Hive](chapter1/shu-ju-mu-de-di/Hive.md)、[Aliyun AnalyticDB for PostgreSQL](chapter1/shu-ju-mu-de-di/HybridDBforPostgreSQL.md)、[HDFS](chapter1/shu-ju-mu-de-di/HDFS.md)、[HBase](chapter1/shu-ju-mu-de-di/HBase.md) * 若为首次创建任务,需要添加数据源和数据目的地,并确认数据源和目的地配置符合平台要求。详情请参考: * [如何配置数据源](配置数据源.md) * [如何配置数据目的地](如何配置数据目的地.md) * 配置完成后,用户可以点击选择需要的数据源和目的地。可以选择一个数据源,一个或多个数据目的地。 :-: ![](https://img.kancloud.cn/2a/79/2a79097aec42b10d48b3cc286cade3c3_2880x1800.png) #### **3.点击「下一步」,需要用户对任务进行设置。** * 在这个页面,用户需要对任务进行个性化的配置,在这个页面支持对任务参与人、数据源设置、数据目的地设置以及错误队列和邮件通知等详细的内容进行设置。 * 参与人设置: * 参与人能够浏览、编辑该任务,并收到该任务相关邮件通知; * 数据源设置: * 读取方式:实时模式可定义读取起点,批量读取方式可选择读取频率; * 读取并发数量(支持 MySQL、Oracle、SQL Server 、PostgreSQL、Kafka、API、Hive数据源) * 读取并发数量是指该任务从数据源中并行读取表的数量,默认为5。 * 具体读取并发数量要根据数据源可接受请求量决定。 * 并发数量代表着每次读取的表的数量,当表读取完毕时系统会释放掉该线程,其他的表可继续抢占该线程进程数据的读取。任务暂停后又重启所有的表会重新抢占线程,系统会按照断点续传的方式继续同步新增数据。 * 读取速率限制 * 当用户设置读取速率限制,系统平均读取速率将不会超过该数值。 * 可按流量或行数作为限制条件。 * 用户能够不选、单选或多选,若同时勾选,两种限制将同时应用。 * 勾选后即可激活对应的速率限制,请输入正整数; * 支持两种速率限制:速率流量限制、速率行数限制; * 流量限制:限制读取的最高流量速率; * 默认单位为:KB/秒; * 点击下拉框可切换单位:MB/秒。 * 行数限制:限制读取的最高行数速率; * 默认单位:行/秒。 * 高级设置: * 传输队列最大缓存值 * 任务开始读取数据后,单个任务默认缓存10GB数据(读写数据量差),用户可自定义。 * 读写数据量差达到10GB(最大缓存值时),根据先进先出的原则,旧数据将会被回收。 * 当任务数据读写速率失衡,读写数据量差大于10GB(最大缓存值)时,将会出现部分数据被回收,未能成功写入数据目的地的情况。 * 传输队列回收时间 * 任务开始读取数据后,单个任务默认缓存3天数据,用户可自定义。 * 缓存数据达到回收时间,旧数据将会被回收。 * 当任务数据读写速率失衡,超过回收时间的数据尚未被写入到目的地,将会出现部分数据被回收,未能成功写入数据目的地的情况。 * 数据任务动态限速 * 开启后该数据任务读写数据量差达到「最大缓存值」,任务将会暂停数据读取工作。当实际缓存数据量小于「最大缓存值」时会重新开始读取数据。 * 可根据用户情况自定义「检查频率」 * 读取端事务一致性 * 用户「关闭」该选项,DataPipeline 从数据源读取数据后,将会立即写入到目的地。 * 用户「开启」该选项,DataPipeline 从数据源读取数据后,系统定期记录读取的进度,数据对应的进度被成功记录了,才会被允许写入到目的地。以此来保证系统出现重启或者rebalance的情况时,根据系统明确的标记信息来保证目的地数据的一致性。 :-: ![](https://img.kancloud.cn/d3/ed/d3ed836dbd166fc2b07e08e8684e18d4_2412x1032.png =480x) * 数据目的地设置: * 写入并发数 * 基本逻辑与「读取并发数量」一致。写入并发数量是指该任务从数据源中并行读取表的数量,默认为5。 * 具体写入并发数量要根据数据源可接受请求量决定。 * 写入速率限制 * 当用户设置写入速率限制,系统平均写入速率将不会超过该数值。 * 可按流量或行数作为限制条件。 * 用户能够不选、单选或多选,若同时勾选,两种限制将同时应用。 * 勾选后即可激活对应的速率限制,请输入正整数; * 表和字段名称设置:自定义、全部大写、全部小写 * 支持用户设置目的地表名称和字段名称大小写 * 选择【自定义】,任务执行后,系统会根据用户自定义的表和字段名称写入到目的地。 * 选择【全部大写】,任务执行后,系统会将用户设置的所有表和字段名称转换为大写(只包含英文)后写入到目的地。 * 选择【全部小写】,任务执行后,系统会将用户设置的所有表和字段名称转换为小写(只包含英文)后写入到目的地。 * 每次定时执行批量同步前,允许清除目标表数据 * 数据源为SQL类型(MySQL、Oracle、SQL Server、Postgre SQL)、API,数据目的地为SQL、Hive、TIDB、Redshift、Greenplum时,读取方式为批量定时读取时,显示该项。 * 点击开启,则每次定时批量读取时,系统都会先清除目标表的数据再进行写入 * 点击关闭,则每次定时批量读取时,系统不会清除目标表的数据会直接把每次批量的数据写入到目的地,系统可以根据主键和增量识别字段来进行去重操作。 :-: ![](https://img.kancloud.cn/90/74/90745d95501c62db03140a3702ae5650_2790x648.png =480x) * 高级设置: * 子任务设置:支持设置batch大小,条数、大小以及时间三个条件来约束batch的设置,三者满足一个就会一次性批量写入。 :-: ![](https://img.kancloud.cn/d3/b0/d3b0e5252f25aa282edb45f682ffd0ae_1486x538.png =480x) * batch条数、大小和时间代表一次性批量写入表的数据,三者满足一个条件即可生效。当达到用户设置的条数、大小或者时间时,系统会进行一批次地写入。对于设置数值的大小也应根据实际内存容量进行调整,因为当设置的值特别大时,会对内存空间造成一定的影响,如果没有开启动态限速,则读取数据会越来越多对于内存空间也占据越来越大,如果目的地无法及时消费的话,有可能造成数据丢失。 * 数据源变化设置:用户可在此处设置在数据任务同步过程中,数据源的表、字段变化的处理方式。 * 目前支持表被删、字段被删、字段新增以及数据被删等情况,具体要支持的情况会根据数据源不同而有所不同 :-: ![](https://img.kancloud.cn/86/c1/86c132133b15adb4d97ee9f862a8a4c9_2418x780.png =480x) * 写入数据事务一致性 * 用户「关闭」该选项,DataPipeline 在写入数据过程中定期标记已写入数据的进度。因系统采用定时标记,当系统出现异常重启时,可能系统无法准确定位到具体的数据位置导致目的地有重复数据产生。 * 用户「开启」该选项,DataPipeline 在每次成功执行写入操作后会记录已写入数据的进度。以此来保证系统出现异常或者rebalance的情况时,根据系统明确的标记信息来保证目的地数据的一致性。 * 如果是 JDBC 目的地,将会在目的地建立一张表进行记录; * 如果是 FTP/HDFS 目的地,将会采取内部的二阶段提交协议,假如数据写入完成,进度记录失败,将会回滚(删除)已写入的目的地的数据; * 如果是 Hive 目的地,将会记录进度 walog 到 hdfs,如果进度提交失败,将会回滚已写入目的地的数据; * 如果是 Kafka 目的地,将会使用 Kafka 的事务功能,在进度被提交成功前,Kafka 内的数据无法消费,以此保证写入数据的数据一致性。 :-: ![](https://img.kancloud.cn/2b/fd/2bfd002ac5d1f6a7e5b1575e06b03ec2_2420x402.png =480x) * 批量读取后,先写入到临时表,再转存到实际表 * 支持的目的地有:MySQL、SQL Server、Oracle、TiDB、AnalyticDB for PostgreSQL、Reshift、Greenplum * 用户「关闭」该选项,DataPipeline 会把数据直接写入到目的地真实表。 * 用户「开启」该选项,DataPipeline 会先把数据写入到临时表,当完成本批次所有数据的读写工作后,转存到实际表。 :-: ![](https://img.kancloud.cn/24/12/2412ff9ed8d1d54a7b961472bf62310a_2802x212.png =480x) * 错误队列设置: 支持设置错误队列预处理行数,错误率阈值等。 * 数据任务同步时,错误队列将实时收集如脏数据、写入设置有误等数据相关错误,后置处理数据错误,避免数据无法写入目的地导致任务暂停的问题。 * 系统会按照用户设置的处理、预警和暂停机制来通知和暂停任务。 :-: ![](https://img.kancloud.cn/d7/89/d789455a8fb579878c975ee79dc565ce_2436x876.png =480x) * 邮件设置:支持勾选需要邮件通知的信息。 * 支持设置告警机制,指定哪些需要邮件告知用户,系统会按照用户设置的时间进行邮件通知。 :-: ![](https://img.kancloud.cn/cd/93/cd9323e1eb0dc68e3f3665489f920379_2416x702.png =480x) * 每个设置都已经预设了默认值,当您熟悉了解各项设置内容后,可以快速点击下一步进入后续创建流程。 :-: ![](https://img.kancloud.cn/58/9a/589ad326f7ccdfc3395bf466a2cd8242_2880x2380.png) * 更多信息请点击[任务设置](rwsz.md)查看。 #### **4.完成任务设置后,点击「下一步」,会弹窗要求用户选择表。** * 用户根据自己的需求选择需要读取的表/视图或者集合。 * 要求至少选择一个表/视图或者集合。 * 选择完毕后点击「保存」。 :-: ![](https://img.kancloud.cn/51/30/51303707e6f72542c2bbf0106e4a5506_2786x1598.png) #### **5.同步表选择完毕后,用户需要完成「读取设置」。** * 用户根据自己的需求,通过编辑读取条件,从每个同步表中选择需要的数据。 * 传输队列设置,包括最大缓存值、回收时间、表单限速 * 此项只针对于单表生效,逻辑与任务级别的传输队列设置一致,当两者同时设置时优先采用单表级别的传输队列设置。 * 当读取方式为批量同步时,用户可选择特定的增量识别字段,也可以自定义编辑读取条件。 :-: ![](https://img.kancloud.cn/b4/10/b410cb456a0b6acdc41097f689717412_2880x1800.png) * 更多要求请点击[读取设置](如何设置读取规则.md)查看。 #### **6.下一步进行「写入设置」。** * 在左侧列表中选择数据源表,右侧会显示该数据源表和目的地表的映射关系详情。 * 右侧字段详情页中,支持自定义修改目的地表名和字段名。 * 目的地表结构显示数据目的地实际的字段类型、标度、精度、主键、NotNull等信息,允许修改。 * 支持针对每个字段设置字段过滤: * 在任意非主键字段右方的同步项上开启后,该字段数据将才会被系统同步到数据目的地。 * 支持对数据表进行清洗脚本配置。 * 用户可以在清洗脚本中用Java语言编写清洗规则来过滤掉脏数据。 * 目前基本清洗功能无法和高级清洗同时使用。 * 对需要同步的每个表(集合)完成规则配置后,点击「保存」即可。 :-: ![](https://img.kancloud.cn/98/8a/988a8b024a76375ac2c723a9b838bdc6_2880x1800.png) * 更多要求请点击[写入设置](pzgz.md)查看。 #### **7.激活并查看「数据任务」。** * 点击「立即激活」,该任务会立刻开始同步数据。 * **概览Tab**下可以看到任务的整体同步状态以及每个数据表(集合)的同步信息。 * **错误队列Tab**下可以看到该任务同步过程中字段的具体错误信息。 * **任务设置Tab**下可以对任务通用配置进行灵活修改,实时调配任务的资源,设定通知等相关内容。 * **读取设置Tab**下可以看到该数据的读取规则设置。 * **写入设置Tab**下可以看到该数据的写入规则设置。 * **消息列表Tab**下可以看到该任务历史错误信息及操作记录。 * 激活后,数据任务的配置信息不可更改。 :-: ![](https://img.kancloud.cn/63/1b/631b43c6f54ab79f28cbe3725940ea4e_2880x1800.png) ***** **常见问题:** Q:数据源或目的地可以重复使用吗? A:答案是肯定的,用户可以重复使用数据源或目的地来完成不同需求的数据任务。但有几个点需要注意: * 数据源或目的地新建成功后,当数据源未被占用时其配置信息允许修改,目的地暂时不允许修改。 * 如需使用同一服务器地址但访问用户或读取模式等具体配置信息不同的数据源或目的地,可以新建一个新的数据源或目的地并填写新的配置信息。 * 需要重复使用数据源或目的地时,用户只需要新建一个任务,选取已经存在的数据源或目的地即可再次使用。 Q:数据任务可以重复使用吗? A:目前Datapipeline支持用户复制已经建立的任务,以减少用户创建相同任务的时间成本。