2019년 10월 19일 토요일

Replication - lossless semi-sync

MySQL 5.7버전에서 lossless semi-sync replication이 추가되었다.

5.5 버전부터 제공하고 있던 semi-sync와 어떤 차이점이 있는 지 알아보도록 하자.

기존의 semi-sync는 Commit을 한 후에 해당 DML이 Slave에 적용될 때 까지 기다리는 구조였다. 그래서 Slave에 적용되기 전에 Master가 Crash하면 아래와 같은 상황이 발생할 수 있다.
이 같은 상황을 방지하기 위해서 5.7버전에서 rpl_semi_sync_master_wait_point 라는 설정이 추가되었다. 
설정은 AFTER_SYNC와 AFTER_COMMIT 두가지 중 하나를 할 수 있는 데, 기존의 방식이 AFTER_COMMIT이고 새로 추가된 게 AFTER_SYNC이다.
위 그림과 같이 AFTER_SYNC는 Slave에게 적용이 됐다는 신호를 받은 후에 Master가 Commit을 하고 Client에게 결과를 반환한다. 즉, 적어도 하나의 Slave에는 동기화가 되어 있다는 것을 보장한다.

AFTER_SYNC에서 주의할 점은 Crash된 Master를 재사용 할 수 없다.
왜냐하면 binary log에 uncommitted transactions가 포함되어 있을 수 있기 때문에 Slave가 Recovery할 때 conflict가 일어날 수가 있다.

# Refer
https://dev.mysql.com/doc/refman/5.7/en/replication-semisync.html
https://dev.mysql.com/doc/refman/5.7/en/replication-options-master.html#sysvar_rpl_semi_sync_master_wait_point
http://my-replication-life.blogspot.com/2013/09/loss-less-semi-synchronous-replication.html

댓글 없음:

댓글 쓰기

결혼이민비자 신청방법(F-6-1 국민의 배우자)

 제가 일본인 여자친구와 결혼 후, 한국에 귀국하기 위해 신청한 결혼이민비자에 대하여 작성해보도록 하겠습니다. 필자는 일본에서 근무하고 있었으며, 한국에서의 소득은 없었습니다. 결혼이민비자를 신청한 날짜는 2021-04-21 이며, 사증이 발급된 날짜...