본문 바로가기
Programming/Server

[AWS RDS] Django + Postgresql + RDS 설정하기!

by { 큐 } 2017. 6. 9.

서비스를 하면서 DB의 트래픽이 많아지고 관리를 수월하게 하기 위해서 AWS RDS를 쓰곤 한다. EC2에서 사용할 때 보다 DB만 따로 스케일링이 가능하다거나 스냅샷을 원할 때마다 찍을 수 있다거나, 백업이 용이하다는 장점이 있기 때문이다. 이번에는 EC2 자체의 내장 Postgresql에서 RDS로 마이그레이션 해보았다.



1. RDS 등록


POSTGRESQL이 장고에서 가장 많이 호환이 된다고 해서 POSTGRESQL을 쓰고 있습니다만, POSTGRESQL 공식 문서가 좀 더 친절했으면 하는 바람입니다.


FREE TIER로 하는 것을 체크하면 선택할 수 있는 사항들이 제한됩니다.



이러이러한 과정을 거치면 등록을 마치게 됩니다. 1~2분 기다리면 RDS 인스턴스의 상태가 available이 됩니다.


2. RDS가 등록이 되었으면 기존의 데이터들을 옮겨야 되겠습니다. 물론, AWS에서 제공하는 솔루션이 있긴 하나, 아직 그러한 단계가 아니라면 직접 하는 것도 나쁘지 않겠죠.


http://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/PostgreSQL.Procedural.Importing.html AWS에서 말하는 대로 하면 됩니다만, 제가 겪었던 시행착오가 몇가지 있었네요.


1단계에서 pg_dump로 파일 만드는 것은 잘 됩니다. 하지만, 만약 pg_dump의 버전이 다를 경우(mismatch 어쩌구)에는 곤란해집니다.

https://stackoverflow.com/questions/12836312/postgresql-9-2-pg-dump-version-mismatch#answer-22946474 에서 말하는 대로 했더니 저는 문제가 해결되었습니다. 참고로 버전 확인은 이렇게 합니다.

psql --version
pg_dump --version


2단계는 다음과 같이 진행됩니다.

pg_dump -Fc -v -h [endpoint of instance] -U [master username] [database] > [database].dump
createdb [new database name]
pg_restore -v -h [endpoint of instance] -U [master username] -d [new database name] [database].dump 

여기서 endpoint of instance 는 RDS 콘솔에서 해당 인스턴스의 정보를 확인할 수 있습니다. url 형식으로 되어있습니다. master username 은 RDS를 등록할 당시에 username, database는 등록할 당시의 database name을 입력하면 됩니다. 저는 createdb 이하는 안 해도 무방하더라고요. 참, 이게 성립하기 위해서는 POSTGRESQL 포트를 열어놔야 합니다. DEFAULT 값은 5432입니다.


3. 옮겨진 것을 확인합니다. 클라이언트 DB connection app으로 RDS에 연결합니다. 저의 경우는 Toad를 씁니다. 

이와 같이 입력하면 연결이 가능합니다. 해당 DB에 들어가서 모든 스키마, 테이블, 데이터 등이 깔끔하게 들어온 것을 확인할 수 있습니다.


4. Django - RDS 설정

settings.py 설정을 바꿔줍니다.

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'dbname',
        'HOST': 'host.*******.us-east-1.rds.amazonaws.com',
        'PORT': '5432',
        'USER': '***',
        'PASSWORD': '***'
    }
}




'Programming > Server' 카테고리의 다른 글

/dev/null 이해하기  (0) 2021.10.14
[AWS] AWS에 FileZilla로 SFTP에 접속하기  (0) 2017.01.26
[NGINX] 이것저것  (0) 2017.01.23
[AWS] EC2에 접속하기 (Mac)  (0) 2017.01.13
[AWS] Free Tier EC2 인스턴스를 만들어보았다.  (0) 2017.01.13