更新时间:2024-12-03 GMT+08:00
分享

MySQL同步到DWS

源端优化

MySQL抽取优化

可通过在作业任务配置参数单击中“添加自定义属性”来新增MySQL同步参数。

图1 添加自定义属性

可使用的调优参数具体如下:

表1 全量阶段优化参数

参数名

类型

默认值

说明

scan.incremental.snapshot.backfill.skip

boolean

true

全量阶段是否跳过读取binlog数据,默认为true。跳过读取binlog数据可以有效降低内存使用。需要注意的是,跳过读取binlog功能只提供at-least-once保证。

scan.incremental.snapshot.chunk.size

int

50000

分片大小,决定了全量阶段单个分片最大数据的数据条数以及分片个数。分片大小越大,单个分片数据条数越多,分片个数越小。

当表的条数过多时,作业会划分较多的分片,从而占用过多的内存导致内存问题,请解决表的条数适当调整该值。

当scan.incremental.snapshot.backfill.skip为false时,实时处理集成作业会缓存单个分片的数据,此时分片越大,占用内存越多,引发内存溢出,在此场景下,可以考虑降低分片大小。

scan.snapshot.fetch.size

int

1024

全量阶段抽取数据时,从Mysql侧单次请求抽取数据的最大条数,适当增加请求条数可以减少对Mysql的请求次数提升性能。

debezium.max.queue.size

int

8192

数据缓存队列条数,默认为8192,当源表中单条数据过大时(如1MB),缓存过多数据会导致内存溢出,可以考虑减小该值。

debezium.max.queue.size.in.bytes

int

0

数据缓存队列大小,默认为0,即表示缓存队列不考虑数据大小,只按照数据条数计算。在debezium.max.queue.size无法有效限制内存占用时,考虑显式设置该值来限制缓存数据的大小。

jdbc.properties.socketTimeout

int

300000

全量阶段连接Mysql的socket超时时间,默认为5分钟。当Mysql负载较高,作业出现SocketTimeout异常时,考虑增大该值。

jdbc.properties.connectTimeout

int

60000

全量阶段连接Mysql的连接超时时间,默认为1分钟。当Mysq负载较高,作业出现ConnectTimeout异常时,考虑增大该值。

表2 增量阶段优化参数

参数名

类型

默认值

说明

debezium.max.queue.size

int

8192

数据缓存队列条数,默认为8192,当源表中单条数据过大时(如1MB),缓存过多数据会导致内存溢出,可以考虑减小该值。

debezium.max.queue.size.in.bytes

int

0

数据缓存队列大小,默认为0,即表示缓存队列不考虑数据大小,只按照数据条数计算。在debezium.max.queue.size无法有效限制内存占用时,考虑显式设置该值来限制缓存数据的大小。

目的端优化

DWS写入优化

可通过在DWS的目的端配置中修改写入相关配置,且可以通过单击高级配置的“查看编辑”按钮,添加高级属性。

图2 添加高级属性
表3 DWS写入优化参数

参数名

类型

默认值

说明

写入模式

enum

UPSERT

DWS的写入模式,可在目的端配置中设置,实时处理集成作业推荐使用COPY MODE。

  • UPSERT:为批量更新入库模式。
  • COPY:为DWS专有的高性能批量入库模式。

批写最大数据量

int

50000

DWS单次写入的最大条数,可在目的端配置中设置。

当缓存的数据达到“批写最大数据量”和“定时批写时间间隔”之一的条件时,触发数据写入。

单次写入条数增大可以减少请求DWS的次数,但可能导致单次请求时长增加,同时也可能导致缓存的数据增加进而影响内存使用。请综合考虑DWS规格和负载, 适当调整该值。

定时批写时间间隔

int

3

DWS单次写入的时间间隔,可在目的端配置中设置。

当缓存的数据达到定时批写时间间隔的条件,触发数据写入。

增大该值有助于增加单次写入时缓存的数据条数,但由于写入频率降低,会提升DWS数据可见的时延。

sink.buffer-flush.max-size

int

512

DWS单次写入的数据大小,默认为512MB,可在目的端配置的高级配置中设置。

当缓存的数据达到数据大小限制时,触发数据写入。

与批写最大数据量类似,单次写入大小增大可以减少请求DWS的次数,但可能导致单次请求时长增加,同时也可能导致缓存的数据增加进而影响内存使用。请综合考虑DWS规格和负载, 适当调整该值。

相关文档