性能调优

部分参数可能影响复制性能。

nomad constraint

限制 task 在某个nomad client节点上执行。当源端目标端MySQL之间网络延迟很大时,应在各个主机/机房设立nomad client,并限制 task 在本地节点上执行,以充分利用dtle的压缩传输。

ReplChanBufferSize

默认60,增量事物队列数量。增大可以降低可能的空等,但同时会占用更多内存。

ChunkSize

默认2000。全量复制时每次选取的行数。增大可以增加吞吐量,但同时会占用更多内存。

GroupMaxSize & GroupTimeout

GroupMaxSize默认值1,即每个事物立刻发送。增大后将等待数据量达到设定值再打包发送多个事务。 可增加传输时压缩率,适合低带宽网络。

设定GroupTimeout可避免数据量不足时等待过久。默认值100(毫秒)。一般设成略小于 ping RTT 的时间值。

增量的并行回放(MTS)相关

推荐使用MySQL 5.7.22+ 和 MySQL 8.0 GA 后引入的 WriteSet MTS。在源端MySQL设置

set global transaction_write_set_extraction = XXHASH64;
set global binlog_transaction_dependency_tracking = WRITESET;
-- will take effect for new session

此后MySQL生成的binlog中将附带TX依赖信息,dtle回放时可以利用依赖信息进行调度。

在dtle dest task config中设置ParallelWorkers,控制增量并行回放线程数。参考值为8~64。

如果因版本和权限问题,不能在源端MySQL上设置WriteSet Tracking,则可以使用dtle的依赖计算功能(UseMySQLDependency = false)。

批量插入(bulk insert)

当源端使用批量插入,即 insert into ... values (),(), ..., () 时,dtle会在目标端使用批量插入。

dtle会使用两个固定数量(行数)的批量插入PreparedStatement,默认为4和8。超过8的会被分到下一批。小于4的会单独插入。

可用BulkInsert1BulkInsert2调整批量插入使用的数量。

results matching ""

    No results matching ""