1. 概述编辑
1.1 版本说明
FineDataLink 版本 |
---|
4.0.5 |
1.2 应用场景
企业在在构建数仓和中间库时,由于业务数据量级较大,如果使用数据同步批量定时同步数据很难做到高性能的增量同步,若使用清空目标表再写入数据的方式时,还会面临目标表一段时间不可用、抽取耗时长等问题。
因此希望能在数据库数据量大或表结构规范的情况下,实现高性能的实时数据同步。
1.3 功能说明
FineDataLink 支持对数据源进行单表、多表、整库数据的实时全量和增量同步,可以根据数据源适配情况,配置实时同步任务。
1.4 使用限制
当前仅支持 MYSQL 5.6及以上的非只读数据库。
2. 前提条件编辑
由于实时同步对 MySQL 数据库的读取方式为 Binlog ,因此需要提前对数据库开启 Binlog。
进入 etc 文件中,编辑my.cnf 文件,如下图所示:
修改 my.conf 文件,增加如下内容:
注:server_id=2,其中2可写任意数值。
server_id=2
log_bin=mysql-bin
binlog_format=ROW
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
然后保存文件即可。
已完成数据源配置。需要在使用数据管道进行实时同步任务配置前,配置好需要同步的源端和目标端数据库,以便在同步任务配置过程中,通过选择数据源名称来控制同步任务,详情参见:配置数据连接
3. 操作步骤编辑
示例将 test_1 数据库中的 S订单数据表实时同步至 test_2 数据库中。
3.1 配置传输队列
配置传输队列,其实就是配置暂存来源库数据,方便目标库写入数据的「数据管道」,目前是通过 Kafka 实现的。
详情参见:配置传输队列
3.2 选择数据来源
首先选择需要数据同步的来源数据。
点击「数据管道>新建任务」,进入任务设置界面,选择来源数据库以及需要进行数据同步的数据表,当然也可以选择多个数据库下的数据表,默认读取方式为 Binlog,默认先对所有存量数据同步,然后持续同步新增变化,如下图所示:
注1:单个任务限制最多选取 5000 张表,达到限制时不允许新增选择。
注2:读取对象只支持选择数据库表,不支持选择视图。
注3:当前只支持数据变化(DML)同步,不考虑支持结构变化(DDL)同步。
将已经存在的「S订单」数据表选到「要同步的表」中,如下图所示:
3.3 选择数据去向
然后选定需要同步至的目标数据库位置。
点击下一步进入「选择去向」界面,选定目标数据库,如下图所示:
若目标数据表数据结构和来源表一致:首次数据同步会清空目标数据表数据,然后全量同步数据,此后增量同步。
若目标数据库没有和来源表一样的数据标,则直接在目标数据库新建数据表。
注:当前版本不支持DDL同步,若目标数据表数据结构和来源表不一致,写入目标数据库中的策略如下所示:
来源端发生的表结构变化 | 目标数据库同步数据策略 |
---|---|
表字段删除 | 删除字段的动作不会同步,目的地该字段传空值 |
表新增字段 | 新增字段的动作不会同步 |
删除正在同步的表 | 记录一条错误,继续同步其他表 |
表字段改名 | 识别为表字段删除,同表字段删除的逻辑 |
3.4 设置表字段映射
点击下一步进入字段映射设置界面。
同时可以调整目标数据库数据表的字段类型和字段顺序,并选择数据是否可以为空,如下图所示:
3.5 设置管道控制
点击下一步进行数据管道的任务设置。
数据同步允许一定的容错,比如字段类型、长度不匹配、主键冲突等等问题,可以设置产生的脏数据上限,达到上限则自动终止管道任务。
注:限制最多10w行,且重启任务后,会重置阈值统计。
同时设置当任务异常时的通知,如下图所示:
3.6 保存任务
点击「保存」,即可保存任务,如下图所示:
只有在任务编辑的最后一步才可「保存」,此时在「任务列表」中即可看到设置完成的管道任务,如下图所示:
每一步都可「暂存」,暂存后在暂存列表即可显示暂存的任务,如下图所示:
3.7 执行任务
在任务列表界面,可以启动管道任务或者进入编辑界面进行任务修改设置,如下图所示:
此时启动任务,进入管道任务中,即可看到任务执行情况,如下图所示:
3.8 效果查看
此时即可在目标数据库 test_2 已经实现了数据表的实时同步,如下图所示:
4. 后续步骤编辑
任务配置完成后,可以在「任务运维>管道任务」中管理该任务,详情请参见:管道任务运维