Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

mysql同步starrocks,希望支持ddl变更 #401

Open
sh-hanson opened this issue Dec 13, 2024 · 7 comments
Open

mysql同步starrocks,希望支持ddl变更 #401

sh-hanson opened this issue Dec 13, 2024 · 7 comments

Comments

@sh-hanson
Copy link

sh-hanson commented Dec 13, 2024

场景描述:
将生产mysql实时同步至starrocks,先同步全量表结构及数据,再同步增量

希望有的功能:
1、全量同步后,能记录最后的binlog信息,这样方便后续配置增量同步
2、增量同步中希望能增加从指定binlog位点进行同步
3、如当前已配置整库同步任务,如果mysql中新建了一张表,希望能自动或手动修改配置,实现新表同步至starrocks
4、支持mysql中的ddl变更同步,如添加字段、删除字段、修改数据类型等ddl操作
5、支持建表类型转换,如starrocks不支持time类型,可以配置类型映射,比如自动建表时把time类型替换为varchar类型

@sh-hanson
Copy link
Author

对于支持ddl变更,如不能实时同步的话,也可以按这样的场景操作。如上游mysql表增加字段,对应同步任务报错中断,然后手工在starrocks中增加字段后,再重新开启实时同步。不知道这样是否可行

@baisui1981
Copy link
Member

对于支持ddl变更,如不能实时同步的话,也可以按这样的场景操作。如上游mysql表增加字段,对应同步任务报错中断,然后手工在starrocks中增加字段后,再重新开启实时同步。不知道这样是否可行

你的意思,不希望通过现在的删除增量通道的过程,而是手动添加完字段之后,可以立即启动运行。 是这样吧?

@baisui1981
Copy link
Member

场景描述: 将生产mysql实时同步至starrocks,先同步全量表结构及数据,再同步增量

希望有的功能:

  1. 全量同步后,能记录最后的binlog信息,这样方便后续配置增量同步 ==》 这个届时会尝试一下把binlog的偏移量显示在TIS的UI上
  2. 增量同步中希望能增加从指定binlog位点进行同步 ==》 这个之前看flink-cdc的文档应该是支持直接设置gtid的偏移量,从指定的偏移位点开始消费
  3. 如当前已配置整库同步任务,如果mysql中新建了一张表,希望能自动或手动修改配置,实现新表同步至starrocks
  4. 支持mysql中的ddl变更同步,如添加字段、删除字段、修改数据类型等ddl操作
    ===》 3,4两点暂时还不能支持
  5. 支持建表类型转换,如starrocks不支持time类型,可以配置类型映射,比如自动建表时把time类型替换为varchar类型
    ==》 您说的 starrocks不支持time类型 ,那可否映射成datetime,date部分直接设置成1970年?您说的办法自动建表时把time类型替换为varchar类型 倒是也行,只是需要在flink-sql上设置一下convert语句

@sh-hanson
Copy link
Author

对于支持ddl变更,如不能实时同步的话,也可以按这样的场景操作。如上游mysql表增加字段,对应同步任务报错中断,然后手工在starrocks中增加字段后,再重新开启实时同步。不知道这样是否可行

你的意思,不希望通过现在的删除增量通道的过程,而是手动添加完字段之后,可以立即启动运行。 是这样吧?

我的意思是,如果tis平台暂时不支持ddl变更,短期内可以用另一种方式实现:即上游mysql有ddl变更时,tis侦测到ddl变更后,实时同步任务立即报错中断,然后手工介入,在下游starrocks中执行ddl变更后,再重新开启tis平台的实时同步

@baisui1981
Copy link
Member

,tis侦测到ddl变更后,实时同步任务立即报错中断,然后手工介入,在下游starrocks中执行ddl变更后,再重新开启tis平台的实时同步

方案不错能够进一步细化报错规则?例如,上游表加字段,TIS侦测到ddl变更就立即报错并且终止任务执行,这是否有必要?

@sh-hanson
Copy link
Author

如果上游mysql表结构发生变更,说明业务逻辑已发生变化,这时我觉得有必要立即中断同步。比如上游mysql加了个字段,然后starrocks中没有同步到这个字段数据,恰巧下游基于starrocks的数据分析或者报表需要用到这字段,那这可能带来错误的分析或错误的报表。当然,tis平台如果能兼容flink cdc 3.0以上版本,那就可以不中断实时同步了。

中断同步任务,报错规则,常见的兼容mysql以下几类操作就可以
1、建表,删表:create table xxx,drop table xxx
2、增加字段:alter table xxx add column
3、删除字段:alter table xxx drop column
4、修改字段:alter table xxx change/modify column
5、增加索引:alter table xxx add index ,create index
6、删除索引:alter table xxx drop index

@baisui1981
Copy link
Member

中断同步任务,报错规则,常见的兼容mysql以下几类操作就可以
1、建表,删表:create table xxx,drop table xxx
2、增加字段:alter table xxx add column
3、删除字段:alter table xxx drop column
4、修改字段:alter table xxx change/modify column
5、增加索引:alter table xxx add index ,create index
6、删除索引:alter table xxx drop index

ok

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants