Differences between revisions 11 and 12
Revision 11 as of 2019-06-07 13:19:41
Size: 3118
Editor: 정수
Comment:
Revision 12 as of 2019-06-07 13:20:40
Size: 3277
Editor: 정수
Comment:
Deletions are marked like this. Additions are marked like this.
Line 61: Line 61:
 * [[https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication|How to Setup MySQL Master-Master Replication]]: deprecated method.  * [[https://www.digitalocean.com/community/tutorials/how-to-set-up-mysql-master-master-replication|How to Setup MySQL Master-Master Replication]]: deprecated method. but would still work.
Line 64: Line 64:
Group Replication 방식이 더 선호되는 것 같다. 하지만 ansible script로 간단히 구축될 것 같아보이지 않는다.

Replication

GTID란?

MySQL GTID 시작하기

  • 5.6 버전까지 GTID를 사용하기 위해서는 복제 그룹의 모든 DB가 log-bin, log-slave-updates 옵션을 사용해야 한다.
  • GTID 컨셉은, '누구나 Master가 될 수 있다'라는 것이다.
  • 5.7 버전부터는 log-bin, log-slave-updates 옵션의 사용이 필수가 아니지만, master 역할을 부여받을 가능성이 있는 DB는 반드시 log-bin, log-slave-updates 옵션을 켜야 한다.

개념

  • GTID
  • GTID Set
  • Executed GTID
    • 초기화 된 후 실행된 GTID set. gtid_executed 시스템 변수에서 확인 가능함.
    • Master 입장에서는 자신의 GTID 발급 현황을, Slave 입장에서는 Master의 트랜잭션이 어디까지 반영되었는지 의미.
    • > SHOW GLOBAL VARIABLES LIKE 'gtid_executed';

  • Purged GTID

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

  • Got fatal error 1236 from master when reading data from binary log: 'The slave is connecting using CHANGE MASTER TO MASTER_AUTO_POSITION = 1, but the master has purged binary logs containing GTIDs that the slave requires.

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

  • slave> STOP SLAVE SQL_THREAD;

  • slave> SET GTID_NEXT='9d850d65-219f-11e6-b652-08002702c825:113';

  • slave> BEGIN; COMMIT;

  • slave> SET GTID_NEXT='AUTOMATIC';

  • slave> START SLAVE SQL_THREAD;

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

  • slave> STOP SLAVE SQL_THREAD;

  • slave> SHOW GLOBAL VARIABLES LIKE 'gtid_executed';

  • -> 9d850d65-219f-11e6-b652-08002702c825:285 ...

  • slave > RESET MASTER;

  • slave> SET GLOBAL GTID_PURGED=9d850d65-219f-11e6-b652-08002702c825:1-285;

  • slave> START SLAVE SQL_THREAD;

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

  • mysql> RESET MASTER;

  • mysql> SET GLOBAL GTID_PURGED='9d850d65-219f-11e6-b652-08002702c825:1-2000;

MMM

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

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

mmm_control show;

Digital Ocean 글

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

Online Migration

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

Online migration tools

MySQL (last edited 2019-06-08 08:02:21 by 정수)