1. 안녕하세요? AWS에 벽돌 12,000장쯤 사준 YanaKo94입니다.
RDB 인스턴스를 줄여야할 필요성의 대두..(feat 비용절감... 어디부터 해볼까..!)
그렇다, 프로젝트를 AWS RDS와 EC2를 통해 배포한 지 어언 1년가량이 흘렀고... 나의 AWS 관련 비용 지출은 이제는 조금 자신 있게 "아마존에 벽돌 낭낭히 사줬습니다"라고 할 수 있을 정도가 되어버렸다. 프로젝트를 내리고 싶지 않았기에 결국 비용 절감을 위해 기존 배포방식을 변동하기로 결심했고, EC2의 경우 인스턴스를 합치기 전에 CD를 구축하면서 업로드받는 resorce를 인스턴스 내부에 저장하는 방식에서 S3 storage로 변경하는 것이 필요하다고 판단해 우선 RDB부터 정리를 시작했다.
2. mysqldump, 뭐하는 녀석이지?
"DB 옮기기"를 검색하면 가장 많이 나오는 키워드로는 mysqldump.
대충 그림으로 된 설명을 보면 DB를 문서화해서 또 다른 DB로 옮기는 것 같은데, 동작 원리가 뭔지 궁금해 찾아보니, 실제로 기존 DB를 백업하는데 필요한 모든 SQL문을 생성한 뒤 새로운 DB에서 해당 SQL문을 실행해 주는 것 같았다.
3. 기존 DB에 영향을 주지는 않는것 같으니, 한번 해보자!
1-1. mysqldump로 백업파일 생성하기
mysqldump -u [기존 DB유저명] -h [기존 DB 호스트 주소] -p --set-gtid-purged=OFF [DB명] > ./[생성할 백업파일 이름].sql
오... 정말 기본 DB를 백업하기 위한 SQL이 생성되었다.
1-2. 옮겨갈 DB에 기존 DB를 옮겨올 database를 생성해 준다
mysql -h [옮겨갈 DB 호스트 주소] -u [유저명] -p
mysql> create databases [새로운 DB명]
1-3. 백업 파일과 mysqldump를 사용해 옮겨갈 DB에 기존 DB를 백업해 준다
mysql -h [옮겨갈 mysql 호스트 주소] -u [사용자명] -p "[옮겨갈 DB 명]" < [백업 파일 이름].sql
추신,, 큰따옴표는 그냥 넣은 게 아니라.. 넣어줘야 해서 넣어주었다..!
1-4. DB가 잘 옮겨갔는지 확인해 보기
확인하지 않고 기존 DB를 삭제해 버렸다간, 모두가 슬퍼질 거니까... 반드시 확인을 거친 후 RDB인스턴스를 삭제하시오..(스냅숏 생성 필수)
3. 안녕하세요? RDS에 들어가던 비용을 줄여 ELB를 붙일 (미래의) YanaKo94입니다.
자 이제 남은 작업은
1) EC2인스턴스 내부로 올리던 업로드 리소스들을 S3에 업로드하는 것으로 변경하고
2) 도커와 CodeDeploy, CodePipeLine을 통해 기존에 여러 인스턴스에 분리배포되어 있던 프로젝트들을 하나의 인스턴스로 합치고
3) 프락시와 로드밸런싱 작업을 해주는
아주... 간단한.. 일만.. 남았다!^_^ 파이팅!
CF) percona xtrabackup를 활용한 방법도 있지만 해당 방법은 현업에서 DB 마이그레이션 등의 상황에서 좋을 것이라 추천받음
'Web_Backend > DB' 카테고리의 다른 글
[SQL] HAVING, GROUP BY, ASLIAS, INNER JOIN, OUTER JOIN, UNION, SELF JOIN, Timestamps, EXTRACT, subquery, INTERSECT, EXCEPT (0) | 2024.01.03 |
---|---|
[DB, SQL] 데이터베이스, PostgreSQL설치, SQL구문(SELECT, WHERE, BETWEEN, IN, LIKE, ILIKE, ORDER BY, DISTINCT, COUNT, DATE) (2) | 2024.01.02 |
[DB] RDB 와 NoSQL (0) | 2023.05.26 |
[DB] Primary Key란? (0) | 2023.05.26 |
[DB] ORM(Oject-Relational-Mapping) Framework 이란? (0) | 2023.05.26 |
야나의 코딩 일기장 :) #코딩블로그 #기술블로그 #코딩 #조금씩,꾸준히
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!