Rails에서 아마존웹서비스 RDS(mysql) 연결하는 것 관련하여

조회수 1718회

우선 제가 Rails DB 관련하여 알고있는 것은 sqlite가 사용된다는 것 정도입니다.

DB 관련해서 뭔가 실제 서비스 런칭하고 나면 sqlite로는 벅찰것 같은 느낌이 들어서

웹서버-애플리케이션서버(Nginx + Passenger) 작업 하면서

DB 작업도 mysql로 변경 해주려 하는데

전체적인 작업 과정에서 감이 안 오는 부분이 있어서 질문 드립니다.

우선 이 포스팅을 찾았는데요, 내용을 보니깐 루비와 Rails가 설치된 인스턴스에

sqlite 대신 mysql을 직접 설치해주던데요

저같은 경우 AWS에서 DB관련하여 서비스하는

관계형 데이터베이스 서비스 RDS(Relational Database Services)를 이용하려고 합니다.

이 RDS 같은 경우 Rails, 루비 등이 설치된 EC2 인스턴스 외부(?)에서 연동되는 것 같던데,

그러면 EC2 인스턴스에 설치된 Rails의 설정을 어떻게 바꿔줘야 하나요?

가령 Gem파일로 들어가 sqlite를 주석 처리하고 mysql bundle install하고 나면 바로

EC2인스턴스와 RDS를 연동 시켜줄 수 있는건가요??

  • (•́ ✖ •̀)
    알 수 없는 사용자

2 답변

  • development, production이라는 것을 stage라고 하는데요. 보통의 경우 development는 개발할 때, production은 실서비스에 사용합니다. 서비스가 커지면 별도로 alpha, beta등도 추가하여 사용하게 됩니다.

    개발할때는 자기 PC에 mysql 설치를 해놓고 사용하는게 편해서 해당 예제처럼 하셔도 될듯하고, 앞으로 서비스를 돌릴 때는 production설정에 추가해 주면 됩니다. DB가 RDS처럼 외부에 있는 경우에는 RDS 도메인을 host에 지정하면 됩니다.

    development:&default
      adapter: mysql2
      encoding: utf8
      database: test_development
      pool: 5
      username: root
      password:
      socket: /tmp/mysql.sock
    
    production: &production
      <<: *default
      host: xxxxxxxxxxxxxxxxxxxx.rds.amazonaws.com
      username: 
      password: 
      database: test_production
    
    
    • 몇가지 더 질문드릴 것이 있어서, 아래 캡처와 함께 글 남깁니다. 알 수 없는 사용자 2017.2.3 01:39
    • 우선 bundle install 입력해서 mysql 설치까지 마친 것 같은데요, 저 스스로도 정리하는 의미로 댓글 남깁니다. 1. database.yml 파일 설정하면서 host를 비록하여 username, password에 모두 RDS를 설정하면서 썼던 내용을 입력하였고 2. Gem 파일을 열어서 sqlite3을 주석 처리함에 있어서도 group :production do - end 사이에 써져있는 sqlite3도 주석 처리 하였습니다. 그리고 sqlite3을 주석 처리한 위치에 각각 mysql2를 써놓았구요. 3. 이후 bundle install을 했더니 계속 에러가 나서 찾아보니 mysql관련 라이브러리가 없어서 그런것같다는 조언을 듣고 4. sudo yum install mysql-devel 을 입력한 후에 다시 bundle install을 하였더니 mysql 설치가 완료되었습니다. 알 수 없는 사용자 2017.2.4 02:37
  • 우선 이전에 여기 해시코드에서 RDS 연결 관련 된 질문을 찾았는데요, 저도 참고해서 host 항목을 비롯하여 각 항목을 database.yml 파일에 써넣으려고 하는데요..

    이미지

    여기서 몇가지 질문을 드리면요,

    1. 아직 Gem 파일에서 sqlite를 주석 처리 안 하고, mysql을 써넣지 않은 상태인데요 Gem 파일 설정을 마치고 bundle install을 먼저 해주고 database.yml파일 설정을 해주면 되나요? default 항목에 adapter: sqlite3은 변경 안 해줘도 되는지 모르겠습니다.
    2. 위에 이미지에도 써주셨지만 production: &production(23행) 이렇게 작성해주어야 하나요? 그리고 그 아래줄에 있는 <<: *default 의 의미도 알려주시면 감사하겠습니다. (뭔가 상속(?)과 관련된 게 아닐까하고 추측만 하고 있습니다;;)
    3. production의 database 이름은 특별히 작성해주는 형식이 있는건가요? 가령 db/production.mysql2 이렇게 써주면 될까요?

    DB가 RDS처럼 외부에 있는 경우 RDS 도메인을 host에 지정해주시면 된다고 알려주셨는데, 막상 해보니 항목 하나하나에서 '이거 맞게 쓰는것 맞나?' 하는 의구심이 들더라구요;;; 그래서 이렇게 또 캡처 이미지와 함께 도움 요청 드립니다.

    • (•́ ✖ •̀)
      알 수 없는 사용자
    • 1. 순서는 맞고, adapter도 mysql2로 변경해주셔야합니다. 유연수 2017.2.4 14:17
    • 2.7라인의 default를 속성을 상속받는 개념입니다. 유연수 2017.2.4 14:18
    • 3. 보통 #{app_name}_#{stage} 이련 형태로 많이 사용합니다. ex) xxxx_production 유연수 2017.2.4 14:22
    • 위 파일에서 production 설정에 database: xxxx_production , 과 host, username, password 를 잘 채워 넣으시면 될 것 같습니다. xxxx는 적당한 이름으로 변경하시고, RDS에 xxxx_prouction이란 db를 생성해 놓아야 합니다. 유연수 2017.2.4 14:27
    • 질문드린 내용 하나하나 알려주셔서 고맙습니다!! RDS 연결함에 있어서 '이거 맞게 하고 있는건가?'하는 의구심 가득했는데 많은 부분에서 명확해졌습니다 :) 알 수 없는 사용자 2017.2.4 16:44

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)