实时同步功能概述
1. 概述
1.1. 应用场景
企业在构建数仓时,当数据量级较大,离线同步数据时效性达不到业务需求,或者业务数据有删改,全量同步不是最佳方案时,实时同步功能在数据库数据量大或表结构规范的情况下,实现数据实时同步。将源端数据变化实时同步至目标数据库中,实现目标库实时保持和源库的数据一致。
1.2. 支持的数据库类型
| 源数据库 |
|---|
| MYSQL |
| PostgreSQL |
| 目标数据库 |
|---|
| StarRocks |
| GuassDB |
1.3. 核心功能
| 功能 | 描述 |
|---|---|
| 实时同步 | 支持单表增量或全量+增量的方式同步数据至目标端单表。 详见:同步方式 |
| 断点续传 | 当任务失败或者手动暂停任务,再次运行任务会从断点同步数据,确保在中断任务期间内不会发生数据丢失。(期间源库的binlog不能丢失,否则会发生丢数) |
| 任务告警 | 当任务出现失败或者出现异常时,自动发送消息通知到对应用户。 详见:任务告警 |
2. 使用限制&注意事项
2.1. 使用限制
- 源表、目标表类型必须为主键表
- StarRocks目标表不可为分区表、不可有自增主键
- 目标表不建议设置外键关联关系以及约束关系,否则会有丢数风险
- 实时同步任务运行过程中,源表目标表不要进行DDL变更,如需要对源表和目标表的同步字段进行变更,需要停止正在运行实时任务,根据需求重新进行字段映射并重启实时任务
- 避免向非空字段同步空值,否则会发生丢数
- 建表语句中避免设置json格式的default值,会导致任务报错
StarRocks建表语句不支持timestamp的默认值格式,建议给一个default值

2.2. 注意事项
- 第一次同步时建议使用先全量后增量,只获取增量是拿flink任务启动那刻的binlog日志同步数据
- 源表目标表字段长度建议保持一致,或者目标端大于源端
- 源表目标表数据类型映射建议保持一致,或者目标端大于源端
- 源表表名不支持中文,空格等特殊字符;字段名不支持-, dot, space, #, @等特殊字符
- 平台参数配置的StarRocks副本数需要小于实际StarRocks中的副本数,超过时会有如下报错,等于时当数据库状态不稳定偶现数据丢失

