os

MySQL Replication semi-sync 설정하기(How to setup semi-sync on Mysql Replication 5.5) 출처: http://istyles.tistory.com/140 [그가 사는곳...^^]

littlecarbb 2018. 3. 6. 14:42

<서론>
아래와 같은 사양에서 MySQL Replication을 설치하였습니다.
데이터의 정합성이 더 중요한 경우 쓸 수 있는 semi-sync를 적용하는 방법을 정리해 봅니다.
- 설치 버전 Mysql 5.5.16
- CentOS

semi-sync를 쓰는 이유는,
실 서비스에서 기본 비동기 replication의 경우 간헐적으로 data의 consistency가 
깨지는 경우가 발견되기 때문입니다. (일반화 해서 얘기 하긴 힘들겠지만요…)


MySQL 5.5 버전 부터는 semi-sync를 공식적으로 지원하기 때문에,
MySQL 공식 튜토리얼을 참조하면 비교적 간단하게 구성을 할수 있고 
특히, RPM으로 MySQL을 이미 설치하였으면 별다른 추가 설치 없이 
Semi-Sync도 구성 할 수 있었습니다.

<본론>

A. Master 설정
1. Master 서버에 semi-sync 플러그인을 설치 합니다. 
    Master용과 Slave용 플러그인을 둘다 깔아줍니다.
    (Slave용 플러그인은 깔지 않아도 되지만, 깔아도 영향이 없기 때문에 
    Master와 Slave 쪽 둘다 그냥 설치해 둡니다.)

1

2. 마스터 쪽 semi-sync를 활성화 시키고, 타임아웃을(10초, 기본값)로 설정합니다.

2

B. Slave 설정
1. Slave 서버에 semi-sync 플러그인을 설치 합니다. Master용과 Slave용 플러그인을 
    둘다 깔아줍니다.
    (Master용 플러그인은 깔지 않아도 되지만, 깔아도 영향이 없기 때문에 
    Master와 Slave 쪽 둘다 그냥 설치해 둡니다.)

3

2. Slave쪽 semi-sync를 활성화 시킵니다.

4

3. 이미 replication중이라면 slave i/o쓰레드를 재시작 해주어야 합니다.

5

C. semi-sync 테스트
C-1. semi-sync 상태보기 
1. Master 쪽 상태를 보면 3대의 Slave와 정상적으로 semi-sync로 replication이 동작하
    고 있는 것을 볼 수 있습니다.

6

2. Slave 쪽 상태를 보면 정상적으로 semi-sync로 Master와 replication 통신 하도록 
    동작 하고 있는 것을 볼 수 있습니다.

7

C-2. 실제 테스트
1. Master에 접속하여 "show databases;"명령어로 현재 데이터베이스를 불러 옵니다.

8

2. Slave에서도 마찬가지로 현재 데이터베이스를 불러오면 마스터와 똑같은 
    데이터베이스로 구성된 것을 알 수 있습니다.

9

3. Master에서 "semisync"라는 데이터 베이스를 만들고 다시 데이터베이스 목록을 
    불러보면, 새로운 데이터베이스가 생긴것을 알 수 있습니다.

10

4. Slave에서 다시 데이터베이스 목록을 보면 replication되어 새로운 데이터베이스가 
    생성된 것을 확인 할 수 있습니다.

11

<결론>
RPM으로 설치하면(다른 것은 안해봐서 모르겠습니다 ^^), 
비교적 손쉽게 semi-sync replication을 설정 할 수 있습니다. 
Master 1대와 Slave 3대로 테스트를 해보니 별 무리 없이 잘 돌아갑니다.
(물론, 실환경과 최대한 비슷한 부하 테스트를 조만간 해봐야 더 확실하겠네요 ㅎㅎ)



출처: http://istyles.tistory.com/140 [그가 사는곳...^^]