clojure-study / guestbook

9 stars 13 forks source link

AWS도 PostgreSQL로 변경한다. #62

Closed manmyung closed 9 years ago

manmyung commented 9 years ago

현재 AWS에서는 기존의 h2로 프로젝트가 실행되고 있다고 한다. 이를 PostgreSQL로 바꿔야 한다.

manmyung commented 9 years ago

완료했습니다. 기록을 위해 변경방법 적어둡니다.

1) AWS RDS에서 PostgreSQL 인스턴스 하나 생성함 세부사항입니다. DB Instance: {gmail의 id와 동일} DB Name: guestbook Username: {gmail의 id와 동일} Password: {gmail의 password와 동일}

2) 생성한 PostgreSQL 인스턴스의 Security Group의 Inbound의 Source를 Anywhere로 수정

3) 로컬 프로젝트에서 project.clj 내용을 1)에서 생성한 DB에 맞게 수정

4) 로컬에서 lein run migrate로 1)에서 생성한 DB 초기화

5) H2에서 백업한 csv파일 내용 업데이트 psql로 PostgreSQL 연결하여 다음과 같은 방식으로 업데이트 했습니다.

\copy guestbook from '~/project/manmyung/guestbook_backup/guestbook_live.csv' with DELIMITER ',';
\copy users from '~/project/manmyung/guestbook_backup/users_live.csv' with DELIMITER ',';

6) primary key sequence 수정 새로운 글이나 유저를 추가할 때 다음과 같은 에러가 발생합니다. ERROR: duplicate key violates unique constraint 이유는 Bulk Import로 업데이트한 경우는 primary key sequence가 아직 1이기 때문입니다. 이를 수정하기 위해 http://hcmc.uvic.ca/blogs/index.php?blog=22&p=8105&more=1&c=1&tb=1&pb=1 를 참고하여, PostgreSQL 클라이언트에서 다음 쿼리를 실행시켰습니다.

SELECT setval('users_user_id_seq', (SELECT MAX(user_id) FROM users)+1);
SELECT setval('guestbook_id_seq', (SELECT MAX(id) FROM guestbook)+1);

7) 배포 다음 방법으로 배포했습니다. https://github.com/clojure-study/guestbook#배포하기