本文介绍全球数据库网络(Global Database Network,简称GDN)的DML复制操作。

复制策略

DML操作会触发数据的变更,并以event的形式将变更详情记录到Binlog中,通过重放Binlog中的变更event,可将变更数据复制给下游。针对DML类型的数据复制,GDN支持多种可选策略(默认采用SPLIT策略),满足不同场景下的复制需求。

复制策略

性能表现

事务一致性

说明

SPLIT(默认)

较好

  • 该策略的特点是并行复制,且不保证事务的完整性,适用于对数据之间的依赖关系无要求,只要能够保证数据最终一致的场景。

  • 并行复制的模式采用行级并行,即不同表、不同主键的数据会被放置到独立的执行线程中,以实现充分的并行写入。

TRANSACTION

一般

  • 该策略的特点是串行复制,且保证事务的完整性,适用于对事务一致性要求较高的场景,比如金融领域。在这种情况下,可以容忍恢复点目标(Recovery Point Objective,RPO)大于0,但不能容忍事务完整性受损。

  • 只有在单流Binlog复制场景下才能确保事务完整性,因为多流Binlog在实现原理上就需要打破事务的完整性来获取并行度的提升。

  • 暂时不支持无数据冲突的事务之间的并行复制。

SERIAL

一般

  • 该策略的特点是串行复制,且不保证事务的完整性,适用于对事务一致性要求不高,但对串行化要求较高的场景。例如,在存在表之间的外键约束或业务上的顺序约束等情况。

  • 在该策略下,针对每条变更数据采用自动提交的方式进行处理,即每个事务都是单机事务,不会触发分布式事务。因此,与TRANSACTION复制策略相比,一般会表现出更好的性能,除非Binlog中每个事务只包含一条数据变更,此时两种策略在性能上没有太大差异。

MERGE

  • 该策略的特点是采用变更压缩以及批量写入等技术进行并行复制,且不保证变更的类型和变更事务的完整性。适用于对数据之间的依赖关系无要求、对变更类型不敏感、只需能够保证数据最终一致的场景。

  • 并行复制的模式采用行级并行,并按表进行批处理,以实现充分的并行和批量写入。

说明
  • 支持对无主键表进行数据复制,但可能出现数据重复写入的情况。

  • 在使用TRANSACTION复制策略时,对于超大事务的复制,可能会导致复制链路出现短暂的延迟。延迟时间的大小与事务大小以及提交时间正相关。