开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

大佬,为什么mysql cdc相同的日志会打这么多行?这个参数调大点是不是这个会少一些,不是fetc

大佬,为什么mysql cdc相同的日志会打这么多行?image.png scan.snapshot.fetch.size这个参数调大点是不是这个会少一些,不是fetch size,scan.incremental.snapshot.chunk.size

展开
收起
真的很搞笑 2023-07-02 17:53:49 101 0
3 条回答
写回答
取消 提交回答
  • 北京阿里云ACE会长

    MySQL CDC(Change Data Capture)是一种用于监听 MySQL 数据库变化的技术,它可以实时监听 MySQL 数据库的 binlog(二进制日志),并将变化同步到其他系统中。在 MySQL CDC 同步数据时,可能会出现相同的日志打印多次的情况,这通常是由于 MySQL 本身机制导致的。
    在 MySQL 中,一个事务可能会生成多个 binlog 日志,如果这些 binlog 日志在一次同步中都被捕获到,那么就会出现相同的日志打印多次的情况。这个问题可以通过调整 Flink CDC 中的参数来解决,例如调整 MySQL binlog 的过期时间、调整 Flink CDC 的并发度等。
    具体来说,可以尝试调整以下参数:
    MySQL binlog 过期时间:可以通过修改 MySQL 的配置文件来调整 binlog 的过期时间,例如:
    Copy
    [mysqld]
    expire_logs_days = 7
    这样可以将 binlog 的过期时间调整为 7 天,可以避免一些旧的 binlog 日志被 Flink CDC 捕获到,从而减少相同的日志打印多次的情况。
    Flink CDC 并发度:可以调整 Flink CDC 中的并发度来减少相同的日志打印多次的情况,例如:
    java
    Copy
    StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
    env.setParallelism(1);
    这样可以将 Flink CDC 的并发度调整为 1,避免多个并发任务同时捕获相同的 binlog 日志,从而减少相同的日志打印多次的情况。

    2023-07-30 09:46:52
    赞同 展开评论 打赏
  • 在 MySQL CDC 中,相同的日志可能会打印多行的原因是由于 CDC 任务的并行度导致的。当你配置了较高的并行度时,MySQL CDC 会将读取到的 binlog 日志进行切分,并将每个切分后的数据记录发送给不同的 CDC 子任务进行处理。这样就会导致相同的日志在不同的子任务中都被打印出来。

    如果你希望减少相同日志的打印次数,你可以尝试调整一些相关参数:

    scan.snapshot.fetch.size: 这个参数用于指定每次从 MySQL 中读取 binlog 数据的大小。通过增大该值,可以减少从 MySQL 抓取 binlog 的次数,降低相同日志出现的频率。需要注意的是,增大该值也会增加每次拉取的数据量,可能会对网络和资源造成一定压力。    - scan.incremental.snapshot.chunk.size: 这个参数用于指定每次从 MySQL 中读取增量 binlog 的大小。通过增大该值,可以减少读取增量 binlog 的次数,从而减少相同日志的打印次数。

    需要根据具体情况适当调整这些参数的数值,并观察其对相同日志打印次数的影响。同时,还需要考虑系统的整体性能和资源消耗,避免调整参数过大导致系统不稳定或性能下降。

    2023-07-30 09:39:20
    赞同 展开评论 打赏
  • 应该是snapshot split 比较多,此回答整理自钉群“Flink CDC 社区”

    2023-07-02 17:59:51
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关电子书

更多
PostgresChina2018_赖思超_PostgreSQL10_hash索引的WAL日志修改版final 立即下载
Kubernetes下日志实时采集、存储与计算实践 立即下载
日志数据采集与分析对接 立即下载

相关镜像