지속적으로 생성, 수정, 삭제되는 테이블의 암호화데이터를 복호화하여 수정해야하는데, 최대한 서비스 중단 없이 진행하고 싶었습니다.
위와 같이 고민해보았고, 최종으로 3번과 같이 진행하기로 하였습니다. 그전에 준비물을 미리 정리하면
총 3가지가 필요하고 차례대로 진행해보겠습니다.
Desc Log
Trigger
DELIMITER $$
CREATE
TRIGGER `원본테이블_after_insert` AFTER INSERT ON `원본테이블`
FOR EACH ROW BEGIN
INSERT INTO 로그테이블 SET num = NEW.num, dml_status = 'insert' ;
END;
$$
CREATE
TRIGGER `원본테이블_after_update` AFTER UPDATE ON `원본테이블`
FOR EACH ROW BEGIN
INSERT INTO 로그테이블 SET num = NEW.num, dml_status = 'update' ;
END;
$$
CREATE
TRIGGER `원본테이블_after_delete` BEFORE DELETE ON `원본테이블`
FOR EACH ROW BEGIN
INSERT INTO 로그테이블 SET num = old.num, dml_status = 'delete' ;
END;
$$
DELIMITER ;
dml_status
가 insert
인 최초 num
을 확인합니다.num - 1
까지 복호화테이블로 원본데이터를 복호화하며 Insert
를 진행합니다. 저장된 num
부터는 아래 데몬에서 시작합니다.이렇게 진행해서 중단시간은 3~5분정도 소요되었습니다. 배포과정을 조금더 자동화 하였으면 더 짧은 중단시간을 가질 수 있을거라 생각됩니다. 하지만 무중단 배포가 최선인만큼 다음에는 무중단으로 진행해보겠습니다. 대단한 방법도 아니고, 무식한 방법이였지만 삽질로그를 남겨보았습니다.
읽어주셔서 감사합니다.