멀티스레드 replica 튜닝(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에서 트랜잭션을 병렬로 적용하는 worker 수를 설정한다. replica_preserve_commit_order는 커밋 순서를 source와 동일하게 유지한다. source의 WRITESET 의존성 추적은 source에서 순차적으로 커밋되었더라도 서로 다른 행을 건드리는 트랜잭션을 병렬로 적용할 수 있게 한다.
사용 시점
replica가 source의 쓰기 속도를 따라가지 못하고 applier가 사실상 단일 스레드인 상태에서 지연이 쌓일 때.
주의
새 worker 수는 applier가 재시작될 때 적용된다. CPU 코어보다 많은 worker를 실행하면 조정 오버헤드가 늘어나므로 8–16 범위에서 시작하고 지연과 worker 오류를 관찰한다. 하나의 거대한 트랜잭션이나 PK가 없는 테이블의 대량 DML은 병렬화할 수 없으며, 이것이 대개 지속적인 지연의 실제 원인이다. replica_preserve_commit_order=OFF는 병렬성을 높이지만 replica에서 짧은 순서 뒤바뀐 커밋을 허용하므로 읽기를 처리하는 replica에서는 ON으로 유지한다.