前置知识: MySQL

并行复制

1 minAdvanced2026/6/14

MySQL并行复制:逻辑时钟、写集并行、多线程回放与复制延迟优化

1. 并行复制概述

MySQL 从库默认单线程回放 relay log,高并发写入时容易产生延迟。并行复制允许多线程同时回放事务。

2. 并行复制策略

2.1 库级并行(MySQL 5.6)

-- 按数据库并行回放
SET GLOBAL slave_parallel_type = DATABASE;
SET GLOBAL slave_parallel_workers = 4;
-- 不同数据库的事务可以并行回放
-- 单库场景无效果

2.2 逻辑时钟(MySQL 5.7)

-- 基于组提交的并行回放
SET GLOBAL slave_parallel_type = LOGICAL_CLOCK;
SET GLOBAL slave_parallel_workers = 4;

-- 同一组提交的事务可以并行回放
-- 主库 binlog_group_commit_sync_delay 影响分组
SET GLOBAL binlog_group_commit_sync_delay = 1000;  -- 1ms延迟增加组大小
SET GLOBAL binlog_group_commit_sync_no_delay_count = 10;

2.3 写集并行(MySQL 8.0)

-- 基于写集(writeset)的更细粒度并行
SET GLOBAL transaction_write_set_extraction = XXHASH64;
SET GLOBAL binlog_transaction_dependency_tracking = WRITESET;
SET GLOBAL slave_parallel_workers = 8;

-- 不修改同一行的事务可以并行回放
-- 粒度最细,效果最好

3. 监控

-- 查看并行复制状态
SHOW SLAVE STATUS\G
-- Slave_SQL_Running_State: System lock

-- 查看工作线程状态
SELECT * FROM performance_schema.replication_applier_status_by_worker;