Replication

GTID란?

MySQL GTID 시작하기

개념

slave에서 GTID set이 유실된 경우, 그리고 master에서도 purge되고 남아있지 않은 경우:

누락된 트랜잭션을 Empty 트랜잭션으로 Skip 처리하거나:

또는 slave의 gtid_executed 값을 적절히 변경

GTID_EXECUTED 시스템 변수는 READ ONLY이다. 따라서 GTID_PURGED를 활용한다. RESET MASTER를 하면 GTID가 초기화된다.

MMM

replication에 관련한 생활코딩 강의가 있네.

Multi-Master Replication Manager for MySQL (mmm). MySQL의 replication monitoring manager tool.

mmm 도구가 좋아보이기는 하는데, 이렇게 제대로 사용하려면 DB용 서버가 따로 있어야 할 것 같다. 지금 리트머스 구성은 switch 1대, server1, server2 이렇게인데, 원래 제안했던대로 switch, webserver1, webserver2, db1, db2 이렇게 구성되어야 mmm에 어울리는 구성인 것 같다. mmm은 IP를 switch하는 방식으로 동작한다고 하니.

Digital Ocean 글

Group Replication 방식이 더 선호되는 것 같다. 하지만 ansible script로 간단히 구축될 것 같아보이지 않는다.

Trial

리트머스 설치 직후 slave의 GTID가 이상이 있다는 문제는, RESET MASTER를 하면 쉽게 해결되었다.

하지만, 여전히 slave에서 변경(UPDATE)을 가한 뒤에는 sync할 GTID를 master에서 찾지 못했다는 오류가 발생한다. master-master replication을 적용해봐야겠다.

Online Migration

TokuDB는 online migration을 지원하는 MySQL 엔진이다. Commercial로 판매함.

Online migration tools