Online Migration
TokuDB는 online migration을 지원하는 MySQL 엔진이다. Commercial로 판매함.
Online migration tools
osc (facebook)
Replication
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에 관련한 생활코딩 강의가 있네.
mmm. MySQL의 replication monitoring manager tool.
mmm_control show;
