귀하의 질문에 대한 직접적인 대답은 예이지만 실행중인 MySQL의 버전에 따라 다릅니다. MySQL 5.5 이전에는 복제가 다음과 같이 작동했습니다.
- 마스터는 SQL을 실행
- 이진 로그에 마스터 레코드 SQL 이벤트
- 슬레이브는 마스터 이진 로그에서 SQL 이벤트를 읽습니다.
- 슬레이브는 I / O 스레드를 통해 릴레이 로그에 SQL 이벤트를 저장합니다
- 슬레이브는 SQL 스레드를 통해 릴레이 로그에서 다음 SQL 이벤트를 읽습니다.
- 슬레이브는 SQL을 실행
- 슬레이브는 SQL 이벤트의 완전한 실행 마스터를 인정
MySQL 5.5에서 Semisynchronous Replication을 사용 하면 이제 복제가 다음과 같이 작동합니다.
- 마스터는 SQL을 실행
- 이진 로그에 마스터 레코드 SQL 이벤트
- 슬레이브는 마스터 이진 로그에서 SQL 이벤트를 읽습니다.
- 슬레이브는 SQL 이벤트 수신 마스터를 인정
- 슬레이브는 I / O 스레드를 통해 릴레이 로그에 SQL 이벤트를 저장합니다
- 슬레이브는 SQL 스레드를 통해 릴레이 로그에서 다음 SQL 이벤트를 읽습니다.
- 슬레이브는 SQL을 실행
- 슬레이브는 SQL 이벤트의 완전한 실행 마스터를 인정
이 새로운 패러다임은 슬레이브가 마스터와 더 가깝게 동기화되도록합니다.
그럼에도 불구하고 네트워크 내 지연 시간으로 인해 MySQL 세미 싱크 복제가 이전 스타일의 비동기식 복제로 되돌아 갈 때까지 방해가 될 수 있습니다. 왜 ? 슬레이브가 트랜잭션을 확인하지 않고 시간 초과가 발생하면 마스터는 비동기 복제로 되돌아갑니다. 적어도 하나의 반동기 슬레이브가 따라 오면 마스터는 반동기 복제로 돌아갑니다.
업데이트 2011-08-08 14:22 EDT
MySQL 5.5 Semisynchronous Replication의 구성은 간단합니다
1 단계)이 네 줄을 /etc/my.cnf에 추가하십시오
[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
#rpl_semi_sync_master_enabled
#rpl_semi_sync_master_timeout=5000
#rpl_semi_sync_slave_enabled
2 단계) MySQL 재시작
service mysql restart
3 단계) MySQL 클라이언트에서이 명령을 실행하십시오.
INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so';
INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so';
4 단계) plugin-dir 옵션 다음에 세 개의 rpm_semi_sync 옵션의 주석을 해제하십시오
[mysqld]
plugin-dir=/usr/lib64/mysql/plugin
rpl_semi_sync_master_enabled
rpl_semi_sync_master_timeout=5000
rpl_semi_sync_slave_enabled
5 단계) MySQL 재시작
service mysql restart
다됐다 !!! 이제 평소와 같이 MySQL 복제를 설정하십시오.