マルチスレッドレプリカをチューニング(replica_parallel_workers)
MySQLレプリケーションコマンド
-- Replica: stop the applier, set worker count and commit order
STOP REPLICA SQL_THREAD;
SET PERSIST replica_parallel_workers = 8;
SET PERSIST replica_preserve_commit_order = ON;
START REPLICA SQL_THREAD;
SELECT COUNT(*) AS workers FROM performance_schema.replication_applier_status_by_worker;
-- Source (8.0 only): switch dependency tracking to WRITESET (default in 8.4, variable removed)
SET PERSIST binlog_transaction_dependency_tracking = WRITESET;概要
レプリカでトランザクションを並列に適用するワーカー数を設定する。replica_preserve_commit_orderはコミット順序をソースと同一に保つ。ソースでのWRITESET依存関係追跡により、異なる行に触れるトランザクションは、ソースで逐次コミットされていても並列に適用できる。
使用する場面
レプリカがソースの書き込み速度に追いつけず、アプライアが事実上シングルスレッドのまま遅延が蓄積するときに。
注意
新しいワーカー数はアプライアの再起動時に有効になる。CPUコア数を超えるワーカーは調整のオーバーヘッドを加える。8–16の範囲から始め、遅延とワーカーのエラーを監視する。単一の巨大なトランザクションや、PKのない表への大量のDMLは並列化できず、通常これが持続的な遅延の本当の原因である。replica_preserve_commit_order=OFFはより高い並列性をもたらすが、レプリカで一時的に順序の異なるコミットを許す。読み取りを提供するレプリカではONのままにする。