## 场景一:实时同步异构数据库场景(MySQL到Oracle为例)
### 一、核心流程
1\. 创建数据源 & 目的地
2\. 任务设置
3\. 读取设置
4\. 写入设置
5\. 管理数据任务
### 二、 创建数据源
* 单个数据任务只允许选择一个数据库类型作为数据源
* 关系型数据库目前支持「MySQL」、「Oralce」、「SQL Server」、「PostgreSQL」作为数据源。
详情见:[配置数据源](配置数据源.md)
### 三、创建数据目的地
* 单个数据任务允许选择多个数据库作为数据目的地。
* 关系数据库目前支持「MySQL」、「Oralce」、「SQL Server」、「AnalyticDB for PostgreSQL」、「TiDB」
详情见:[配置数据目的地](如何配置数据目的地.md)
### 四、任务设置
* 确定读取端和写入端数据库后,点击「下一步」,进入任务设置。
* 如该任务为重要数据任务,您可在任务设置页面设置重要任务星标。
* 用户需要设置:参与人、数据源设置、数据目的地设置、其他设置
* 参与人设置
* 「参与人」拥有该任务的浏览和编辑权限,并且会在通知中心收到该数据任务的所有通知,包含:
* 操作记录;
* 数据任务错误信息;
* 错误队列信息。
* 数据源变化设置
* 设置当前任务数据源使用资源组,通过合理分配任务与资源组,可使重要任务计算资源得到保障。
* 设置读取方式,以MySQL数据库为例,会提供两种读取方式:Binlog(实时模式) & 批量读取
* Binlog
* 可达到秒级别读取MySQL实时数据。
* 若发现无法勾选Binlog读取模式(或其他数据库实时模式),请查看[Binlog配置方法](mysql-binlog-config.md) (其他数据库实时模式也可点击查看)
* 读取起点默认为「激活任务为起点」,指任务激活后数据源产生数据会根据Binlog解析视为同步对象。
* 若用户需要从历史Binlog位置开始读取,则可以选择「自定义」,并完成输入Binlog Postion(必填)、Binlog文件名称(必填)、GTID(选填)。
* 若用户在同步Binlog实时同步数据前要迁移该数据库存量数据,可开启「存量数据读取」。激活任务后系统将通过SELECT \* FROM table\_name方式(读取设置步骤可以添加WHERE语句)读取存量数据,完成存量数据同步后再进行Binlog读取模式。
* 读取并发数量
* 读取并发数量是指该任务从数据源中并行读取表的数量,默认为5。
* 具体读取并发数量要根据数据源可接受请求量决定。
* 详细策略:并发数量代表着并行读取表的数量,当表读取完毕时系统会释放掉该线程,其他的表可继续抢占该线程进程数据的读取。任务暂停后又重启所有的表会重新抢占线程,系统会按照断点续传的方式继续同步新增数据。
* 读取速率限制
* 当用户设置读取速率限制,系统平均读取速率将不会超过该数值。
* 可按流量或行数作为限制条件。
* 用户能够不选、单选或多选,若同时勾选,两种限制将同时应用。
* 勾选后即可激活对应的速率限制,请输入正整数;
* 数据源高级设置包含:
* 传输队列最大缓存值
* 任务开始读取数据后,单个任务默认缓存10GB数据(读写数据量差),用户可自定义。
* 读写数据量差达到10GB(最大缓存值时),根据先进先出的原则,旧数据将会被回收。
* 当任务数据读写速率失衡,读写数据量差大于10GB(最大缓存值)时,将会出现部分数据被回收,未能成功写入数据目的地的情况。
* 传输队列回收时间
* 任务开始读取数据后,单个任务默认缓存3天数据,用户可自定义。
* 缓存数据达到回收时间,旧数据将会被回收。
* 当任务数据读写速率失衡,超过回收时间的数据尚未被写入到目的地,将会出现部分数据被回收,未能成功写入数据目的地的情况。
* 数据任务动态限速
* 开启后该数据任务读写数据量差达到「最大缓存值」,任务将会暂停数据读取工作。当实际缓存数据量小于「最大缓存值」时会重新开始读取数据。
* 可根据用户情况自定义「检查频率」
* 读取端事务一致性
* 用户「关闭」该选项,DataPipeline 从数据源读取数据后,将会立即写入到目的地。
* 用户「开启」该选项,DataPipeline 从数据源读取数据后,系统定期记录读取的进度,数据对应的进度被成功记录了,才会被允许写入到目的地。以此来保证系统出现重启或者rebalance的情况时,根据系统明确的标记信息来保证目的地数据的一致性。
* 数据目的地设置
* 数据目的地资源组设置,设置当前任务读取端使用资源组,通过合理分配任务与资源组,可使重要任务计算资源得到保障。
* 写入并发数量
* 基本逻辑与「读取并发数量」一致。写入并发数量是指该任务从数据源中并行写入表的数量,默认为5。
* 具体写入并发数量要根据数据源可接受请求量决定。
* 写入速率限制
* 当用户设置写入速率限制,系统平均写入速率将不会超过该数值。
* 可按流量或行数作为限制条件。
* 用户能够不选、单选或多选,若同时勾选,两种限制将同时应用。
* 勾选后即可激活对应的速率限制,请输入正整数;
* 表和字段名称大小写
* 支持用户设置目的地表名称和字段名称大小写
* 选择【自定义】,任务执行后,系统会根据用户自定义的表和字段名称写入到目的地。
* 选择【全部大写】,任务执行后,系统会将用户设置的所有表和字段名称转换为大写(只包含英文)后写入到目的地。
* 选择【全部小写】,任务执行后,系统会将用户设置的所有表和字段名称转换为小写(只包含英文)后写入到目的地。
* 数据目的地高级设置
详情见:[子任务设置](子任务设置.md)
详情见:[数据源变化设置](数据源变化设置.md)
详情见:[写入一致性](写入一致性.md)
### 五、读取设置
:-: ![](https://img.kancloud.cn/af/ab/afabb6a9fc8d4894337d8daffeccb732_1426x659.png =480x)
进入读取设置页面,用户首先需要选择读取对象,保存后即可看到上图页面。
#### A.同步列表
* 读取列表显示该任务实时读取的表,点击任一表名称右侧显示该表的表结构。
* 提供搜索功能,主要支持搜索表名称。
* 点击「编辑」,可重新选择读取对象。
* 提供「批量设置」功能,包括:批量移除读取对象,批量设置执行语句。
#### B.传输队列设置
* 若用户针对某一个表进行传输队列的自定义设置时,可点击表结构右上角的「传输队列设置」。
* 功能与任务设置的「传输队列设置一致」,但用户设置了表级别的「传输队列设置」,该标的传输队列策略会依照该设置。
#### C.执行语句
* Binlog模式不会使用SQL语句读取数据,但在本次案例中用户在任务设置中选择了「存量数据读取」,所以用户激活任务后会先执行SQL语句,同步存量数据后再监听Binlog同步实时数据。
* 执行语句默认为:SELECT \* FROM table\_name , 若用户需要添加读取条件,则点击「编辑读取条件」增加WHERE条件。
* last\_max()方法是DataPipeline提供的函数,目的是帮助用户解决批量只读取增量数据的,所以在本次案例中不会用到。
* WHERE条件语句要求符合数据源类型格式要求,可使用数据库本身提供的方法。
* 用户可点击「试运行」查看SQL语句是否正确,试运行最多请求10条数据(limit 10)。
### 六、写入设置
:-: ![](https://img.kancloud.cn/89/6a/896a549cf97cfd4be7193ed398619025_1419x663.png =480x)
#### A.目的地列表
* 若用户选择多个目的地作为该数据任务的写入目标,此处会显示多个目的地,用户可点击切换各个目的地的写入设置内容。
#### B.写入列表
* 写入列表显示本次任务中,哪些数据源表会写入到该目的地。
* 提供搜索功能,主要支持搜索表名称。
* 点击「编辑」,可重新选择写入对象。
* 提供「批量设置」功能,包括:
* 批量移除读取对象。
* 批量设置表名称(主要用于多表同结构数据往目的地一张表写入场景)。
#### C.目的地表结构设置
* 点击任一表名称右侧显示每个目的地表的映射关系(左侧是数据源表结构)。
* 若数据目的地没有同名表,激活任务后DataPipeline会在目的地创建新表。
* 若目的地已存在同名表,目的地表名称右侧会有提示。
* 若该任务往已创建的同名表写入数据,会检查表结构是否一致。
* 若表结构一致(只检查字段名,不检查字段类型和其他属性),则正常写入数据。
* 若表结构不一致(少字段或多字段),则强制改为用户设置的表结构后再进行数据同步。
* 关于高级清洗使用方法请见:[设置清洗脚本](pzgz/qxjb.md)
* 目的地表结构用户可修改字段名称、类型、精度、标度、Not Null、主键等属性
* 「同步」功能
* 开启「同步」,任务激活后该字段数据会写入到目的地。
* 关闭「同步」,目的地依然存在该字段,但不会同步该字段值,会传空。
* 支持用户删除字段或添加字段,添加字段的值需要通过高级清洗指定逻辑。详见:[设置清洗脚本](pzgz/qxjb.md)
* 完成所有写入设置后,即可「保存」,即可以一键开始同步数据。
### 数据任务详情页
#### 「数据任务统计」
* 已读取数据量:
* 指 DataPipeline 从数据源已读取的数据量。
* 当 DataPipeline 系统重启,会根据断点续传机制从上一次读取记录点开始重新读取数据,重复读取的数据量不会记录到已读取数据量里。
* 无主键的定时同步时全量替换数据,故每次定时读取全量数据,数据源没有更新的数据会再次读取。
* 已处理数据量:
* 指 DataPipeline 已处理的数据量,这里包括:同步到数据目的的数据量和进入到错误队列的数据量。
* 当 DataPipeline 系统重启,会根据断点续传机制从上一个读取记录点开始重新写入部分数据,但这部分数据不会记录到已写入数据量里。
* 错误队列:指已读取的数据中系统判断无法写入到数据目的地,而异步放到错误队列中的数据量。:
* 读取速率:指DataPipeline从数据源读取数据的速率。
* 处理速率:指DataPipeline处理数据的速率
#### 「复制任务」
详情见:[复制任务](复制功能.md)
#### 「错误队列」
详情见:[错误队列](yun-wei-guan-li/shu-ju-ren-wu-xiang-qing-ye/cuo-wu-dui-lie.md)
#### 「消息列表」
详情见:[消息列表](yun-wei-guan-li/shu-ju-ren-wu-xiang-qing-ye/xiao-xi-lie-biao.md)
#### 「回滚功能」
详情见:[回滚功能](回滚功能.md)
#### 「重新同步」
详情见:[重新同步功能](重新同步功能.md)
* * * * *
#### 常见问题
##### Q1:读取模式失效的,复制任务后任务以何种方式读取数据?
原任务读取模式失效,复制后的任务采用任务设置的默认选择。
* * * * *
##### Q2:数据表失效的,复制任务后的任务是否还同步失效的表?
数据表选择失效的,复制后新任务不再选择失效表。
- DataPipeline产品手册
- 产品更新日志
- v2.7.0 版本介绍
- v2.6.5 版本介绍
- v2.6.0 版本介绍
- v2.5.5 版本介绍
- v2.5.0 版本介绍
- v2.4.5 版本介绍
- v2.4.1 版本介绍
- v2.4.0 版本介绍
- v2.3 版本介绍
- v2.2.5 版本介绍
- v2.2 版本介绍
- v2.1 版本介绍
- v2.0.5 版本介绍
- v2.0 版本介绍
- v2.0 以前版本介绍
- 环境和数据库的部署要求
- Mysql - BINLOG配置方法
- Oracle - LOGMINER配置方法
- SQL Server - Change Tracking配置方法
- Postgre SQL-decoderbufs配置方法
- Postgre SQL-wal2json配置方法
- 常见场景操作
- 场景一:实时同步异构数据库数据(例:MySQL到Oracle)
- 场景二:批量同步异构数据库数据(例:SQL Server到MySQL)
- 场景三:API数据同步到关系型数据库(例:API到MySQL)
- 场景四:Hive数据同步到关系型数据库(例:Hive到SQLServer)
- 场景五:关系型数据库数据同步到Hive(例:Oracle到Hive为例)
- 场景六:Kafka数据同步到关系型数据(例:Kafka到MySQL为例)
- 场景七:一对多场景介绍
- 产品入门
- 数据同步任务
- 创建数据同步
- 配置数据源&数据目的地
- 配置数据源
- 配置MySQL数据源
- 配置Oracle数据源
- 配置SQL Server数据源
- 配置PostgreSQL数据源
- 配置FTP数据源
- 配置S3数据源
- 配置API数据源
- 配置Kafka数据源
- 配置Hive数据源
- 配置阿里云 OSS数据源
- 配置腾讯云TDSQL数据源
- 配置自定义数据源
- 配置数据目的地
- 配置MySQL数据目的地
- 配置Oracle数据目的地
- 配置SQL Server数据目的地
- 配置Greenplum数据目的地
- 配置Redshift数据目的地
- 配置TIDB数据目的地
- 配置FTP数据目的地
- 配置HBase数据目的地
- 配置HDFS数据目的地
- 配置Hive数据目的地
- 配置AnalyticDB for PostgreSQL数据目的地
- 配置Kafka数据目的地
- 数据同步的任务设置
- 读取设置
- 数据源资源组设置
- 批量功能
- SQL类型数据源读取条件设置
- 分数据源读取设置
- MySQL读取设置
- Oracle读取设置
- SQLServer读取设置
- PostgreSQL读取设置
- FTP文件系统读取设置
- S3文件系统读取设置
- Hive读取设置
- Kafka读取设置
- 阿里云OSS读取设置
- API读取设置
- 腾讯云TDSQL读取设置
- Hive数据源读取分区设置
- 其他设置
- 错误队列设置
- 邮件通知设置
- 任务分组设置
- 写入设置
- 批量功能
- 设置清洗脚本
- 数据目的地资源组设置
- 数据目的地设置
- 子任务设置
- 数据源变化设置
- 写入端数据一致性
- 批量读取后,先写入到临时表,再转存到实际表
- 高级设置
- 子任务设置
- Hive分区设置
- Column family 设置
- 数据同步任务管理
- 数据任务监控
- 重要任务
- 故障任务
- 非激活状态
- 性能关注
- 数据任务分组
- 管理数据同步
- 复制功能
- 回滚功能
- 重新同步功能
- 错误队列
- 消息列表
- 文件同步任务
- 创建文件同步
- 配置文件源
- 配置S3文件源
- 配置FTP文件源
- 配置文件目的地
- 配置HDFS文件目的地
- 文件同步的任务设置
- 任务流
- 核心功能介绍
- 新建任务流
- 配置核心组件
- 配置开始任务组件
- 配置数据任务组件
- 配置远程命令执行组件
- 配置延时器组件
- 配置权限设置
- 激活任务流
- 元数据管理
- 查看总览
- 搜索页
- 详情页
- 系统设置
- 数据任务
- 元数据管理
- 用户管理
- 常见问题
- 部署要求
- Docker安装的集群部署方式?
- DataPipeline的并发任务是线程还是进程?
- 分布式架构指的是什么样的框架?
- 生产环境配置推荐及回答?
- DataPipeline的服务是统一管理还是私有化部署?若是私有化部署若要升级怎么操作?
- DataPipeline的Kafka如果与客户目前使用的Kafka版本不一样,是否需要适配?
- 请说明产品的HA和容灾方案 ?
- DataPipeline有多少独立的服务?各容器的作用是什么?
- 在从节点上装mysql,对单表导入1000万数据对任务有影响吗?
- 数据传输
- 数据源/数据目的地
- 基本要求
- 数据源或目的地可以重复使用吗?
- 数据源多个表是否可以写到目的地一张表?
- 数据源或目的地连接失败怎么办?
- 数据源
- MySQL
- DataPieline如何应对Mysql数据库表和字段名称大小写不敏感问题?
- DataPipeline Mysql数据源的实时处理模式下,暂时无法读取哪些字段类型?
- Mysql数据源实时处理模式下,暂不支持那些语句操作的同步?
- Oracle
- Oracle实时模式为LogMiner时,为什么还需要设置读取频率?
- SQL Server
- SQL Server数据源读取方式选择Change Tracking时需要注意什么?
- SQL Server实时模式为Change Tracking时,为什么还需要设置读取频率?
- PostgreSQL
- Hive
- Hive数据源支持哪些文件格式?
- Kafka
- FTP文件系统
- FTP数据源CSV静态表结构时,用户为什么需要确认首行是否为字段名称?
- FTP数据源静态表结构和动态表结构的区别是什么?
- FTP源的文件在不断写入的情况下,DataPipeline的读取与写入的模式是怎样的?
- FTP数据源支持哪些编码方式?
- S3文件系统
- 阿里云OSS文件系统
- API
- 腾讯云TDSQL
- 数据目的地
- MySQL目的地常见问题
- 时区问题需要注意什么?
- SQL Server目的地常见问题
- 行级的物理删除,使用Change Tracking的方式,是否获取的到?DataPipeline会如何处理这类的数据?
- 数据源实时模式是否可以同步视图?
- Oracle目的地常见问题
- TiDB目的地常见问题
- 目的地TIDB同步表时,需要注意什么?
- Redshift目的地常见问题
- Redshift 并发数设置是50,DataPipeline对100个表并发插入的方案?对Redshift 性能的影响?DataPipeline对大数据量并发插入Redshift 的处理方式?
- Hive目的地常见问题
- 如何避免Hive目的地出现小文件问题?
- DataPipeline同步数据到Hive目的地表时,数据源发生变化会怎么样?
- 我们目前对已做好Hive分区逻辑的目的地,是不是不支持继续往里写?只能写新表?
- 配置Hive目的地是需要注意哪些?
- Hive目的地时字段转换需要注意哪些问题?
- GreenPlum目的地常见问题
- Kafka目的地常见问题
- kafka目的地支持设置新的分区吗?
- 多个表结构不一致的表,可以同步至kafka的同一个topic吗?
- HDFS目的地常见问题
- FTP文件系统目的地常见问题
- 目的地FTP时,我们现在是按什么逻辑创建文件的?
- AnalyticDB for PostgreSQL目的地常见问题
- Hbase目的地常见问题
- 目的地常见问题
- 各个数据目的地的写入方式分别是采用什么形式?
- DataPipeline支持的数据库的目标端的连接方式是什么?
- DataPipeline支持的目标端冲突数据处理机制是什么?
- 任务设置
- 读取模式相关问题
- 任务设置中读取频率的实现原理是什么样的?
- 采用实时同步的情况,新建同步任务时,源端的数据表有大量的存量数据,如何通过产品实现数据同步的一致性的?
- 定时批量清目标表数据的逻辑是什么样的?
- 数据源端基于日志的实时模式,是源库推送还是我们做捕获?
- 关系型数据如MySQL,如果出现大量的数据修改,BinLog日志如何抓取,如何实现及时的消费?
- 读取与写入的速率限制是按照任务还是按照表?
- 我们的无侵入性是如何实现的?是完全无侵入性,还是侵入性很小?是否无侵入性就意味着源端服务器没有访问请求的压力,那目的端写入是否还存在压力?
- 动态限速的策略是什么?
- 读写一致性的逻辑是什么?
- v2.6版本增量的逻辑如何实现?
- 重新同步策略问题
- 如果任务激活后进行重新同步,目的地数据会清空吗?
- 读取设置
- 如何设置数据读取条件where语句?有哪些注意事项?
- 用户选择实时模式时,选表时发现有一些表置灰不能同步要想同步这些表该怎么办?
- 同步完成后暂停,取消表后又新加入此表,DataPipeline对于此表的处理策略是什么样的?
- 写入设置
- 表和字段问题
- 目的地表名称和字段名称最长字符长度有什么特定限制吗?以及表名称和字段名称的输入规则要求是什么?
- 同步数据到异构数据库,字段类型会有变化吗?
- 表结构中的精度和标度是什么意思?
- DataPipeline所支持的不同数据类型有哪些?kafka schema的数据类型和不同库间的数据库转换规则?
- 数据源端支持哪些字符集类型?
- Hive作为目的地表需要注意什么?
- Hive作为数据源且格式为parquet时需要注意什么?
- 如何新增一个字段?
- 主键相关问题
- 无主键的表的同步逻辑是怎样的?
- 选择增量识别为主键,如何保证源端和目标的数据一致性呢,如果该记录有修改,系统是怎么处理的?
- 数据目的地ODS有大量无主键表,同步时DataPipeline是如何处理的?
- 表结构变化问题
- 任务激活前后,数据源变化表结构变化有什么不同?
- 当数据源表结构更新时DataPipeline是如何处理的?
- 如果目的地端已经存在了数据库表,但表结构不相同,我们能否将数据写入到该表?
- DataPipeline是否支持将不同的数据表(在不同的数据库中,但是表结构一致,同时有主键和唯一性识别的字段),导入同一个目的端表?
- 管理数据同步
- 基本概念
- 错误通知是什么?
- 错误队列是什么?
- 哪些数据错误会进入错误队列?
- 请简述产品支持的目标端冲突数据处理机制?
- 错误队列里的原始数据是指源端读取的原始数据还是说经过清洗规则后的数据?
- 激活任务后,有哪些参数可以修改?
- 同步状态
- 部分表已读取已写入等都为0,但完成进度为100%?
- 任务详情页中的数据读写量具体含义是?为什么有时候还会减少?
- 如何去查看FTP源和FTP文件中的文件有没有同步完成?
- 数据任务激活后是不允许修改任何设置吗?
- 激活任务后,数据百分比为什么会往回条,如:从99% 跳到30%
- 同步逻辑
- 自动重启逻辑是怎样的?
- 目前数据同步的暂停重启策略是什么样的?暂停和重启后是如何读取和写入数据的?
- 目前进行数据任务的时候,读取速率远大于写入速率,其中,已读取且还未写入的数据会暂时存储在Kafka上,但是由于Kafka存储空间有限,超出后容易造成数据的丢失,这怎么办?
- 如果一条数据多次、频繁变化,在DataPipeline产品侧如何保证数据的并行和保序是如何保证的?
- 用户导入数据后,hdfs认证机制,数据哪些用户可以使用,用户数据安全如何确保?
- 请简述目标端性能可管理性(可提供的性能监控、分析、调优手段等)
- DataPipeline是否支持远程抽取数据?
- 如果一条数据多次、频繁变化,在DataPipeline产品侧如何保证数据的并行和保序是如何保证的?
- 产品到期问题
- 产品使用期限到期所有任务都会被暂停任务,那么如何提前获知产品使用期限是否到期以避免任务被暂停?
- 实际场景中,目的地服务器每周可能会有aws升级,需要暂停服务器,DataPipeline有没有对应的方案能够满足?
- 任务报错
- redis连接异常任务暂停了怎么办?
- 文件传输
- FTP文件源同步整个文件时是如何同步的?
- 任务流
- 如何使用远程命令执行脚本来调取另外一个任务流?
- 任务流开启状态下,任务此时关闭掉任务流,正在同步的组件任务的处理逻辑是什么样的?
- 任务流中上游组件有多个组件任务时,上游任务全部完成才能开启下游任务吗?
- 任务既连了开始键,又配置了依赖,执行逻辑会是什么样的?
- 任务流中新建任务为何只有读取方式为增量识别字段,没有binlog?
- 任务监控
- 什么样的实时传输任务会在性能关注中显示?