天天看点

Multi-threaded Slave 多线程复制MySQL5.7 新特性: Multi-threaded Slave 多线程复制

<a href="https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html">https://dev.mysql.com/doc/refman/5.7/en/replication-options-slave.html</a>
一句话概括:通过组提交的方式 master怎么并行,slave就怎么并行。

关键因素:组提交

一句话概括:解决单线程复制的延迟问题 note1:当master有多个线程在写数据,那么mts效果会非常好 note2:如果master对大表进行ddl,这样的延迟是没办法避免的

参数

comment

默认配置

推荐配置

调整方式

slave_parallel_workers

applier threads数量

16

dynamic

slave_parallel_type

并行方式

database

logical_clock

slave_preserve_commit_order

并行排序提交

1

master_info_repository

master_info持久化方式

file

static

relay_log_info_repository

relay_info持久化方式

relay_log_recovery

重新获取relay log

io thread并没有改变 sql thread 会变成coordinator线程 会新增很多work线程来受coordinator调度
同一个last_committed 可以并行执行 同一个last_committed 中的sequence_number 默认是无序的

当slave_preserve_commit_order=0时

没有办法保证顺序,在恢复的过程中会有问题,到时候你怎么start slave 呢? start slave until sql_after_mts_gaps ; reset slave

当slave_preserve_commit_order=1时

后一个sequence_number提交的时候,会等待前一个sequence_number完成。 waiting for preceding transaction to commit