Amazon RDS Cross region read replica 사용하기

HYEONG HWAN, MUN/ 4월 9, 2018/ 미분류/ 0 comments

https://blog.lael.be/post/6853

세상에, 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 에 연결한 데모사이트들이 있음.

이런 상황에서는 문제가 생길 것이라 생각함.

 

 

Leave a Comment

작성하신 댓글은 관리자의 수동 승인 후 게시됩니다.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>
*
*