백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다.
1. Asynchronous Replication
- 소스 서버가 레플리카 서버에서 변경 이벤트가 정상적으로 전달되어 적용되었는지 확인하지 않음
장점
- 빠른 성능
- 레플리카 서버의 문제가 전파되지 않음
단점
- 동기화 여부 보장 X
- 소스 서버에 장애가 발생하면 최근 트랜잭션이 레플리카 서버에 전송되지 않을 수 있음
- 레플리카 서버가 승격될 경우, 누락된 트랜잭션이 있는지 수동으로 확인해야 함
2. Semi-Synchronous Replication
- 비동기 방식에서 좀 더 향상된 데이터 무결성을 제공하는 방식
- 소스 서버는 레플리카 서버로부터 응답을 받아야 트랜잭션을 완전히 커밋시킴
- 레플리카는 릴레이 로그 커밋이 성공하면 ACK 응답을 보냄
- 네트워크 통신이 추가적으로 필요하므로, 물리적으로 가까운 서버일 경우 적합함
시스템 변수
rpl_semi_sync_master_wait_point
- 소스 서버가 레플리카 서버의 응답을 기다리는 지점을 제어할 수 있음
- AFTER_SYNC
- 소스 서버에서 트랜잭션을 바이너리 로그에 기록한 후 스토리지 엔진에 커밋하기 전, 레플리카 서버 응답을 기다림
- AFTER_COMMIT
- 소스 서버에서 트랜잭션을 바이너리 로그에 기록한 후 스토리지 엔진에 커밋한 후, 레플리카 서버 응답을 기다림
- 팬텀 리드가 발생함
rpl_semi_sync_master_enabled
- 소스 서버에서 반동기 복제의 활성화 여부 제어
rpl_semi_sync_master_timeout
- 소스 서버에서 레플리카 서버의 응답이 올 떄까지 대기하는 시간
- 밀리초 단위
rpl_semi_sync_master_trace_level
- 소스 서버에서 반동기 복제에 대해 디버깅 시 어느 정도 수준으로 디버그 로그가 출력되게 할 것인지 레벨을 지정
- 1, 16, 32, 64 값으로 설정 가능
rpl_semi_sync_master_wait_for_slave_count
- 소스 서버에서 반드시 응답을 받아야 하는 레플리카 수
rpl_semi_sync_master_wait_no_slave
- rpl_semi_sync_master_timeout에 지정된 시간 동안 반동기 복제로 연결된 레플리카 서버 수가 rpl_semi_sync_master_wait_for_slave_count 수보다 적을 경우 대처
- 1: 레플리카 수가 적더라도 타임아웃 시간 동안 반동기 복제를 그대로 유지
- 0: 레플리카 수가 적어지는 즉시 비동기 복제로 전환됨
rpl_semi_sync_master_wait_point
- 소스 서버가 트랜잭션 처리 단계 중 레플리카 서버의 응답을 대기하는 지점을 설정하는 옵션
- AFTER_SYNC, AFTER_COMMIT
rpl_semi_sync_slave_enabled
- 레플리카 서버에서 반동기 복제의 활성화 여부 제어
rpl_semi_sync_slave_trace_level
- 레플리카 서버에서 반동기 복제에 대해 디버깅 시 어느 수준으로 디버그 로그가 출력될 지 결정
- 1, 16, 32, 64 값으로 설정 가능
설정 방법
install plugin rpl_semi_sync_master soname 'semisync_master.so' -- source server
install plugin rpl_semi_sync_slave soname 'semisync_slave.so' -- replica server
- 플러그인 설치 (반동기 복제 기능은 플러그인 형태로 구현되어 있으므로 별도의 설치가 필요함)
set global rpl_semi_sync_master_enabled=1;
set global rpl_semi_sync_slave_enabled=1;
- 각 서버에 시스템 변수 활성화하기
'Database > Mysql' 카테고리의 다른 글
[Real MySQL] 17-1. InnoDB 클러스터: 아키텍처 (0) | 2024.09.07 |
---|---|
[Real MySQL] 16-5. 복제: 복제 토폴로지 (0) | 2024.09.07 |
[Real MySQL] 16-3. 복제: 데이터 포맷 (0) | 2024.09.07 |
[Real MySQL] 16-1. 복제: 아키텍처 (4) | 2024.09.07 |
[Real MySQL] 8-1. 인덱스: Disk (0) | 2024.09.07 |