AWS RDS를 사용하여 Django DB 변경하기(sqlite3에서 mysql로)

2022. 2. 15. 18:27Django

이전 시간에 DB를 sqlite3 을 사용했었다. 하지만 이제는 조금 더 확장성과 보완성이 있는 AWS를 사용해서 DB를 사용해 보도록 하자.

 

먼저 콘솔에 접근을 하여 RDS에 접속하자. DB 생성을 할 수 있다는 알람이 있다. 생성을 하도록 하자.

다양한 엔진을 설정할 수 있다. 딸바보 mariaDB도 보인다. 하지만 MySQL을 사용하도록 하자. 하나 주의해야할 점은 하단의 템플릿 란에서 "프리티어" 를 선택해 줘야 한다. (공부하는데 돈 나가는건 싫으니까..)

또한 식별자 계정을 따로 생성해 줘야한다. 마스터 계정 이라고 생각하면 편하다. 계정명과 암호를 입력하도록 하자. 이것을 잊어버리면 아주 큰일이니 반드시 기억해 두도록 하자.

그 다음으로 설정할 것은 VPC에 관한 내용이다. AWS에서는 기본적으로 default vpc를 제공해 주고 있다. 하지만 이거 말고 내가 직접 만든 vpc를 사용하고싶어요! 라고 하면 그것을 설정해서 만들면 된다. 그리고 중요한 점은 "퍼블릭 엑세스" 값을 반드시 "예" 로 입력해 줘야한다. 아니면 이런 귀찮은 일과 유사한 행동을 해야할 수 도 있다. 포트번호는 당연히 3306이다.

 

AWS VPC Bastion Host 접근법

이전강의에서 우리는 bastion host에 대해 간략하게 알아보았다. 하지만 텍스트만 보고서는 당췌 이게 무슨 말인지 잘 이해하기 어려울 수 있다. 그렇기에 이번에는 실습을 통해 알아보도록 하자. A

chicode.tistory.com

 

vpc 보안 그룹을 선택하여 실행할 때 에러(2002 or 10060등) 가 발생된다면 새로 생성을 클릭해 새 VPC 보안 그룹을 생성하여 실행해도 된다. (인바운드, 아웃바운드 설정이 기존 VPC 보안 그룹에서 설정되지 않은 경우 AWS 에서 설정해 준다.)

마지막으로 구성을 설정해 주면된다. 초기 데이터베이스 이름 이라는 란이 있다. AWS 에서 아무것도 없는 DB를 하나 만들어 주는데 그 DB의 이름을 설정하는 것 이다. 아무거나 쓰도록 하자.

그리고 이제 터미널로 넘어오도록 하자. 우리는 mysql을 사용할 것이기 때문에 당연히 mysql을 설치해야한다. 

pip install mysqlclient

이후 setting값을 변경해 주면 된다. 변경값은 아래와 같다. RDS의 endpoint는 설치가 완료되면 나타난다.

간단한 개념은 다음의 글을 읽어 보자. 

 

AWS VPC part 2. (NAT와 네트워크 동작원리)

private subnet에서는 주로 상당히 보안적으로 중요한(DB와 같은)것들이 저장되어 있는 경우가 많다. 그런데 한 번 생각해 보자. 만약 DB를 사용하기 위해서는 일단 먼저 설치를 해야한다. 이 설치는

chicode.tistory.com

 

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        /입력했던 DB의 이름이다.
        'NAME': 'testDB',
        /유저명이다. 특별한 것 없이 admin으로 RDS에서 생성했었다.
        'USER' : 'admin',
        /비밀번호이다. 개인의 선택에 맞게 설정하면 된다.
        'PASSWORD': 'password',
        /endpoint를 입력하면 된다.
        'HOST' : 'database-1.ci2edd4gkmpi.ap-northeast-2.rds.amazonaws.com',
        /포트번호는 당연히 3306
        'PORT' : '3306',
        'OPTIONS' :{
            'init_command' : "SET sql_mode='STRICT_TRANS_TABLES'"
        }
    }

 

이 후 마이그레이트를 한 후 서버를 실행해보자. 잘 되는것을 확인할 수 있다. 이제 접속해보자.

아무런 데이터가 없이 새롭게 만들어진 DB에 잘 안착되어 있는것을 확인할 수 있다.

==> 데이터 자체가 RDS로 가는것이 아닌 형태와 필드만 넘어온 것을 볼 수 있다.