技术分享 | MTS并行增量应用
原创作者: 爱可生开源社区 MySQL 的复制延迟在早期版本一直存在,MySQL 5.6.3 版本后开始支持并行复制,并在 5.7进一步完善可用并行复制功能,官方将该功能称为 enhanced multi-threaded slave (简称 MTS) ,从此复制延迟问题得到很大的改善。 功能背景 DTLE([爱可生数据传输组件])项目组在 2018年9月4日提出内部功能性需求(issue #211)实现支持 MTS 并行回放功能。 https://github.com/actiontech/dtle 1.MTS (MySQL 5.7) 原理三 问 1)首要问题:哪些 TX 可以并行回放?(无冲突!!!) 同一 group_commit 的 TX 可以并行回放,因为这些 TX 都进入了 prepare 阶段,事务之间无冲突。 2)如何记录同一 group_commit ? 每个 TX 都有 sequence number,同一个 binlog file 中 SeqNum 单调递增 group_commit 时记录上一次 (group_) commit 的 TX 的 sequence number, 称为 LastCommit (LC) 3)如何并行回放? LC 相同的 TX 可以并行回放 LC 更大的 TX 需等待前一组 TX 全部执行完 (MySQL 8.0 引入