CYCLONE GIVE-UP 시 RESET 의 단점
이중화를 재구동시 reset 옵션을 부여하여, GIVE-UP 된 테이블을 다시 이중화에 포함 시킬수는 있지만,
GIVE-UP 시점부터 reset 시작전까지의 데이터 변경은 반영되지 않습니다.
CYCLONE GIVE-UP 된 테이블을 다시 이중화 시키는 방법
이번 포스팅에서는 GIVE-UP 시점에서 reset 전까지의 데이터 변경도 반영되도록 진행해보겠습니다.
GIVE-UP 된 테이블에 대한 이중화를 SYNC 옵션을 사용하여 재구동 하는 방법
sync 시에는 Master 와 Slave 에 옵션을 다 붙여주어야 합니다.
sync 시에는 옵션에 부여된 마스터측 테이블의 전체 데이터를 슬레이브에 다시 반영합니다.
$ cyclone --master --start --sync PUBLIC.T1 [,SCHEMA_NAME.TABLE_NAME, SCHEMA_NAME.TABLE_NAME ..]
$ cyclone --master --start --sync PUBLIC.T1
$ cyclone --slave --start --sync PUBLIC.T1 [,SCHEMA_NAME.TABLE_NAME, SCHEMA_NAME.TABLE_NAME ..]
$ cyclone --slave --start --sync PUBLIC.T1
SYNC 옵션을 사용하여 완전 동기화하기
group1 의 T1 테이블이 GIVE-UP 되었습니다.
$ cyclone --master --info --group group1 ================================================ GROUP NAME = GROUP1 ================================================ SCHEMA NAME : PUBLIC TABLE NAME : T1 (GIVE-UP (DDL-LSN:172987)) PHYSICAL ID : 8319351652352 ================================================ SCHEMA NAME : PUBLIC TABLE NAME : T2 (ACTIVE (CAPTURE-START-LSN:172779)) PHYSICAL ID : 36197984370688 ================================================ TOTAL COUNT : 2 GIVE-UP COUNT : 1 ================================================
CYCLONE Master 의 T1, T2 테이블에 데이터를 적재한 뒤 Slave 쪽에서 이중화가 되는지 확인합니다.
M-gSQL> INSERT INTO T1 VALUES (1, 1); M-gSQL> INSERT INTO T2 VALUES (1, 1); M-gSQL> COMMIT;
S-gSQL> SELECT * FROM T1; -- 이중화 실패 no rows selected. S-gSQL> SELECT * FROM T2; C1 C2 -- -- 1 1 1 row selected.
CYCLONE Master, Slave 를 중지합니다.
$ cyclone --master --stop
$ cyclone --slave --stop
CYCLONE Master 의 T1, T2 테이블에 데이터를 한번 더 적재합니다.
M-gSQL> INSERT INTO T1 VALUES (2, 2); M-gSQL> INSERT INTO T2 VALUES (2, 2); M-gSQL> COMMIT;
sync 옵션을 사용하는 테이블에 CYCLONE SLAVE 에서 truncate 를 수행합니다. 반드시 Slave 에만 수행하여야 합니다.
이는 마스터의 모든 데이터가 슬레이브로 다시한번 적재되기 때문에 UNIQUE 제약사항에 걸릴수 있기 때문입니다.
S-gSQL> TRUNCATE TABLE T1; S-gSQL> COMMIT;
CYCLONE Master, Slave 에 sync 옵션을 사용하여 이중화를 구동합니다.
reset 과 다른 점은, sync 는 slave 에도 붙여주어야 한다는 점입니다.
$ cyclone --master --start --sync PUBLIC.T1
$ cyclone --slave --start --sync PUBLIC.T1
이중화가 잘 되는지 확인합니다.
M-gSQL> INSERT INTO T1 VALUES (3, 3); M-gSQL> INSERT INTO T2 VALUES (3, 3); M-gSQL> COMMIT;
S-gSQL> SELECT * FROM T1; C1 C2 -- -- 1 1 2 2 3 3 3 rows selected. S-gSQL> SELECT * FROM T2; C1 C2 -- -- 1 1 2 2 3 3 3 rows selected.