天天看點

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