우당탕탕
AWS RDS와 EC2 MySQL, 실제 세팅하며 느낀 차이와 추천 이유 본문
제가 AWS에서 데이터베이스 구축을 하려고 할 때 AWS RDS와 EC2에 직접 MySQL 설치하는 걸 두고 한참 고민했어요. 둘 다 장단점이 뚜렷한데, 직접 구축해보니 생각보다 삽질한 부분도 많고 알게 된 차이점도 많더라고요.
이 글에서는 AWS RDS와 EC2 MySQL 중 어떤 걸 선택해야 할지, 실제 세팅하면서 막혔던 부분과 해결법, 그리고 자주 묻는 질문들을 중심으로 정리해봤습니다. 저처럼 고민하는 분들께 도움이 되길 바라요.
개발 환경 / 버전 정보
이번에 테스트한 환경은 Amazon Linux 2 기반 EC2 인스턴스와 MySQL 8.0, 그리고 AWS RDS MySQL 8.0입니다. 네트워크 구성은 기본 VPC 내에서 서브넷을 따로 나누고 보안 그룹 설정을 꼼꼼히 했어요.
AWS RDS vs EC2 MySQL 어떤 걸 써야 할까 관련 정보
AWS RDS와 EC2 MySQL, 이렇게 다릅니다
사실 가장 큰 차이는 관리 편의성인데요, RDS는 AWS가 백업, 패치, 고가용성 구성을 거의 다 해주거든요. EC2는 내가 직접 모든 걸 세팅하고 운용해야 하니 자유롭긴 하지만 시간이 더 걸립니다.
- 운영 주체: RDS는 매니지드 서비스, EC2는 직접 관리
- 백업 및 복구: RDS는 자동 스냅샷, Point-in-Time Recovery 지원
- 확장성: RDS는 인스턴스 사이즈 업그레이드가 간편
- 비용: EC2가 상대적으로 저렴하지만 관리 비용과 시간이 들어요
- 네트워크 설정: 둘 다 VPC 내에서 세부 설정 필요
AWS RDS 세팅 직접 해봤더니
RDS는 콘솔에서 인스턴스 띄우는 게 엄청 간단하지만, 보안 그룹 설정과 서브넷 그룹을 처음 맞출 때 꽤 헷갈렸어요. 기본적으로는 다음 명령어들을 활용해서 CLI로도 세팅할 수 있어요.
# RDS 인스턴스 만들기 예시
aws rds create-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.t3.medium \
--engine mysql \
--allocated-storage 20 \
--master-username admin \
--master-user-password mypassword123 \
--vpc-security-group-ids sg-0abcd1234efgh5678 \
--db-subnet-group my-subnet-group \
--backup-retention-period 7
그리고 RDS는 기본적으로 퍼블릭 접근이 막혀 있어서, 만약 외부에서 직접 접속하려면 별도 설정이 꼭 필요합니다. 저는 RDS에 EC2 프록시 서버를 두고 SSH 터널링해서 안전하게 접속했던 경험이 있어요.
AWS RDS vs EC2 MySQL 어떤 걸 써야 할까 관련 정보
EC2에 MySQL 직접 설치, 이렇게 했어요
EC2에 MySQL 설치할 때는 초기 세팅부터 신경 쓸 게 많아요. 특히 보안 그룹에서 3306 포트를 열어줘야 하고, MySQL의 bind-address 설정도 신경 써야 했어요. 기본값은 로컬호스트에만 바인딩되어 있어서 외부 접속 안 되거든요.
# MySQL 설치 (Amazon Linux 2 예시)
sudo yum update -y
sudo yum install -y mysql-server
sudo systemctl start mysqld
sudo systemctl enable mysqld
# MySQL 설정 파일 수정
sudo vi /etc/my.cnf
# [mysqld] 섹션에 아래 추가
bind-address=0.0.0.0
sudo systemctl restart mysqld
# MySQL 접속 후 사용자 및 권한 설정
mysql -u root -p
mysql> CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
이렇게 해야만 외부에서 MySQL 접속이 가능해졌는데, 보안 그룹이랑 MySQL 유저 권한 설정이 틀리면 애써 만든 DB에 못 들어가는 상황도 자주 발생했어요.
자주 묻는 질문들을 모아봤어요
Q. RDS랑 EC2 중 성능 차이가 많이 나나요?
A. 단순 벤치마크는 비슷하지만, RDS는 자동 장애 복구, 멀티 AZ 지원 등이 있어서 가용성 측면에서는 RDS가 우위</strong입니다. 직접 MySQL 튜닝할 자유도는 EC2가 더 크지만, 운영 난이도도 높아요.
Q. 비용은 어느 쪽이 저렴한가요?
A. EC2가 시간당 인스턴스 비용만 내면 되니 처음엔 저렴해 보여요. 하지만 백업, 모니터링, 장애 대응에 들어가는 인적 비용도 고려해야 해서 전체 운영 비용은 상황에 따라 다릅니다.
Q. EC2에 설치한 MySQL 백업은 어떻게 해야 하나요?
A. 보통 mysqldump를 사용하거나, 스냅샷을 만들어서 백업합니다. 예를 들어, mysqldump 명령어는 아래와 같습니다:
mysqldump -u myuser -p mydatabase > backup.sql
RDS는 자동 백업이 기본 적용되어 편리해요.
Q. RDS에서 외부 IP로 접근하려면 어떻게 해야 하나요?
A. RDS는 기본적으로 퍼블릭 액세스가 꺼져 있어요. 퍼블릭 액세스를 켜거나, EC2에 터널 서버를 만들어서 SSH 터널링으로 접속하는 방법이 있습니다. 터널링 예시는 다음과 같습니다:
ssh -i mykey.pem -L 3306:rds-endpoint.amazonaws.com:3306 ec2-user@my-ec2-public-ip
# 로컬에서 mysql -h 127.0.0.1 -P 3306 -u admin -p
이렇게 하면 RDS를 안전하게 외부에서 접속할 수 있어요.
Q. 보안 그룹 설정에서 자주 실수하는 부분은요?
A. 많이 틀리는 게 포트 열기 방향과 IP 범위입니다. 인바운드 규칙에서 MySQL 3306 포트를 실제 접속할 IP나 서브넷으로 제한하지 않고 범위를 너무 넓게 설정하는 경우가 많아요. 특히 EC2와 RDS가 다른 서브넷에 있으면 서로 접속할 수 있도록 보안 그룹 간 허용도 꼭 설정해야 합니다.
Q. 데이터베이스 고가용성 구성이 필요하면 어떤 걸 써야 할까요?
A. RDS는 멀티 AZ 배포 기능이 있어 장애 시 자동으로 다른 AZ 인스턴스로 페일오버가 되거든요. EC2에 직접 MySQL 설치 시에는 이런 페일오버 설정을 직접 해야 해서 복잡합니다. 때문에 고가용성이 중요하면 RDS를 추천해요.
Q. 직접 EC2에 설치하면 MySQL 버전이나 설정 자유도가 높나요?
A. 네, 맞습니다. RDS는 지원하는 MySQL 버전과 파라미터가 제한적일 수 있고, 특정 플러그인 설치도 제한돼요. EC2에 직접 설치하면 원하는 버전과 설정을 마음껏 변경할 수 있습니다.
제가 경험한 걸 정리하자면, 초기 셋업 편리함과 안정성이 중요하면 RDS, 커스터마이징과 비용 절감이 중요하면 EC2 MySQL이 맞는 선택 같아요.
AWS RDS vs EC2 MySQL 어떤 걸 써야 할까 관련 정보
여기서 제가 삽질했던 부분들
실제로 접속이 안 돼서 한참 원인을 찾았던 게 보안 그룹 설정 문제였어요. RDS는 서브넷 그룹 내에서만 접속 허용하는데, EC2 보안 그룹에 RDS 보안 그룹을 정확히 허용하지 않았더라고요.
# RDS 보안 그룹 sg-rds 에서 EC2 접속 허용 예시
# EC2 보안 그룹 sg-ec2
# sg-rds의 인바운드 규칙에 sg-ec2를 소스로 추가해야 함
또 EC2에 MySQL 설치할 때 bind-address를 빼먹어서 외부 접속이 안 된 경험도 있는데, 이런 기본 설정 하나하나가 접속 문제로 이어져서 시간을 잡아먹었어요.
심화: 이것도 알면 좋아요
RDS를 쓸 때는 파라미터 그룹과 옵션 그룹을 꼭 이해하고 조절하는 게 중요해요. 기본 세팅이 마음에 안 들 때는 직접 파라미터 그룹을 만들어서 세팅을 변경할 수 있거든요. 예를 들어, 최대 연결 수 같은 파라미터를 조정할 수 있습니다.
또, EC2에 설치할 경우에는 Amazon Linux 2 외에 Ubuntu, CentOS 등 원하는 OS 기반으로 자유롭게 환경을 구성할 수 있어요.
추가로, AWS에서 조금 더 안정적인 DB 운영을 원하면 Aurora MySQL도 있으니, RDS MySQL과 비교해보는 것도 좋습니다.
자주 물어보시는 것들
Q. EC2에서 MySQL 설치 후 보안은 어떻게 챙겨야 하나요?
A. 보안 그룹에서 IP 접근 범위를 최소화하고, MySQL 계정 비밀번호도 강력하게 설정해야 합니다. 또, OS 자체 방화벽 설정 (예: iptables, firewalld)과 보안 업데이트도 주기적으로 해야 해요. 가급적 SSL 연결도 도입하는 게 좋습니다.
Q. RDS 인스턴스 사이즈 업그레이드는 어떻게 하나요?
A. AWS 콘솔이나 CLI에서 인스턴스 클래스 변경하면 됩니다. 예를 들어 CLI 명령어는 아래와 같아요:
aws rds modify-db-instance \
--db-instance-identifier mydbinstance \
--db-instance-class db.m5.large \
--apply-immediately
이렇게 하면 바로 변경 적용되는데, 서비스 영향이 있을 수 있으니 주의하세요.
마지막으로, 둘 중에 뭘 써야 할지 고민될 땐 운영 편의성, 장애 대응 능력, 예상 예산 등을 종합적으로 고려해서 선택하는 게 가장 현명하다는 점 기억하시면 도움이 될 거예요.
'Tech > AWS' 카테고리의 다른 글
| AWS CloudWatch 알람 설정하면서 꼭 확인해야 할 체크리스트 ✅ (0) | 2026.10.11 |
|---|---|
| AWS Lambda 비용 없이 실제로 써보면서 겪은 삽질과 해결법 (0) | 2026.10.06 |
| AWS Secrets Manager로 DB 비밀번호 관리하면서 겪은 삽질과 해결 과정 (0) | 2026.10.06 |
| AWS CodeDeploy 무중단 배포 적용하며 겪은 실수와 해결 과정 (0) | 2026.10.03 |
| AWS S3 정적 웹사이트 호스팅과 CloudFront 연결하면서 겪은 문제와 해결법 (0) | 2026.09.27 |
