[DataBase] Replication - 데이터 정합성
DB Replication Sync Issue(데이터 정합성) 발생 원인 분석 및 조치 방법입니다.
1. 복제지연 가능성
1) SBR(query기반 복제) 인지 RBR (row기반 복제) 인지 체크
- 한번의 트랜잭션이 영향을 미치는 row의 개수가 적을 수록 RBR이 더 좋음.
2) Write 쿼리량 증가 - master의 Multi-Threaded Replication 설정의 worker 스레드 개수 (16개 이상은 차이가 없다고 함)
3) Slave 로드 증가 - Slave에서 실행되는 Select(조회) 트래픽으로 인해 처리 성능이 지연되면서 복제 지연이 발생하는 경우
2. 조치방법
1) 반동기 복제방식 (Semi-Sync Replication)
- Master에 write commit 시 Slave와 통신하여 ACK 신호(트랜잭션 수신 신호, update relay log)를 받을 때 까지 대기하는 방식
- Master에서 Slave로 트랜잭션이 정확하게 복사되는 건 보장하지만 실제로 반영되었는지는 보장되지 않음
- 기존의 비 동기 복제보다는 정합성을 더 가져갈 수 있지만, 성능에 영향을 미침
- 위험요소 1 : 얼마나 성능이 저하되는지에 따라 리플리케이션의 의미가 없을 수 있음
- 위험요소 2 : Slave의 오류가 Master에 영향을 미칠 위험성이 있음
2) 데이터 정합성이 중요한 내용은 Master에서 조회하도록 변경
3) 성능 향상을 위한 쿼리 수정
참고사이트
https://m.blog.naver.com/sory1008/221600878238
https://sarc.io/index.php/mariadb/1078-replication
https://mystria.github.io/archivers/fail-case-replica-lag-when-scale-down