Amazon RDS Cross region read replica 사용하기
세상에, DB 의 read replica 가 국가(리전)단위로 가능하다.
일본에 있는 DB서버(RDS)를 한국에 Read-replica 를 만들어 몇달간 운영해보았다.
장점 : replica 가 잘된다.
단점 :
실은 이 단점을 적으려고 이 글을 적는다.
JP 에 원본 RDS 가 있고, KR에 복제 Read RDS 가 있는데, (아마존 콘솔을 사용해서 만들었음)
JP RDS 속성에 Replica 항목에 KR RDS 가 안보였고,
KR RDS 속성에 write role 으로 동작하고, 실제로 디비에 insert 를 해보니 insert 가 되더라!
1. 디비 생성 (CREATE TABLE)
CREATE TABLE `weblog`.`zulu_test` ( `myidx` INT NOT NULL AUTO_INCREMENT , PRIMARY KEY (`myidx`)) ENGINE = InnoDB;
2. 데이터 입력 (INSERT)
3. 입력값 변경 (UPDATE)
4. replica 에 데이터 입력 (INSERT on Read replica)
5. 쿼리 실행이 실패할만하게 수정. 원본에 중복열 삽입
UPDATE `zuru_test` SET `myidx` = 456 WHERE `myidx` = 234
6. 컬럼명 변경 (ALTER)
7. 원본에 데이터 입력 (INSERT)
INSERT INTO `zulu_test` SET `myidx2` = 789
8. 최초 쿼리 실패했던 요인을 제거
9. 정상 상태로 돌아옴
결론 : cross region read replica 는 read replica 가 아니다.
read replica 에 read 만 쓰면 문제없음.
하지만 read 이외의 쿼리를 날리는 순간 무결성이 깨짐. (특히 4번 같은 상황은 치명적임)
(웹)소프트웨어들중 테이블 없으면 자동으로 생성해주는 것들이 있음.
일부러 Read 에 연결한 데모사이트들이 있음.
이런 상황에서는 문제가 생길 것이라 생각함.