Differences between revisions 3 and 4
Revision 3 as of 2019-06-07 11:56:55
Size: 900
Editor: 정수
Comment:
Revision 4 as of 2019-06-07 12:07:21
Size: 2487
Editor: 정수
Comment:
Deletions are marked like this. Additions are marked like this.
Line 19: Line 19:


개념
 * 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;

Online Migration

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

Online migration tools

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;

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