온프레미스데이터 RDS로 이전하기 (MariaDB)
온프레미스데이터 RDS로 이전하기 (MariaDB) — #MySQL #MariaDB #RDS #AWSRDS #개발자의도구들 문제상황 정의 AWS EKS로 MSA 서...
#MySQL #MariaDB #RDS #AWSRDS #개발자의도구들
문제상황 정의
AWS EKS로 MSA 서버를 이전하고자 합니다. AWS EKS환경에서 사용할 DB 데이터를 RDS에 두어 EKS Pods와 RDS가 직접 통신하도록 구조를 변경하고자 합니다.
현재 온프레미스(윈도우) 환경에 테이블 및 데이터를 저장해두었습니다. 이 데이터를 RDS에서도 그대로 사용하기 위해서 마이그레이션을 진행하고자 합니다.
mysqldump
mysqldump는 MySQL/MariaDB에서 공식 제공하는 논리적 백업 도구입니다. 데이터베이스의 구조(스키마)와 데이터를 SQL문 형태의 텍스트 파일로 추출합니다.
동작원리
- 데이터 베이스를 읽습니다.
- CREATE TABLE, INSERT INTO 등의 SQL 문으로 변환합니다.
- 생성된 파일을 다른 서버에서 실행하면 원본과 동일한 데이터 베이스가 재구성됩니다.
주의점
- 대용량 데이터(수십 GB 이상)에서는 속도가 느립니다.
- 백업 중에는 원본 테이블 잠금이 발생할 수 있습니다.
- snapShot을 생상하여 특정 시점까지의 데이터만 복사하면 잠금을 피할 수 있습니다.
저의 경우 데이터의 크리가 얼마 안되기 때문에, 빠르게 이전하기 위해 이 방법을 사용했습니다.
Hands On
로컬 mariaDB MSA 데이터 베이스
현재 하나의 서버 커넥션에 MSA 서버별 데이터베이스를 분리해서 저장하고 있습니다.
각 데이터베이스는 각각의 테이블들을 보유하고 있습니다.
백업용 명령어
다음 명령어는 전체 테이블 구조 및 데이터에 대한 dump를 한번에 생성할 수 있도록 돕습니다.
// 전체 백업 명령어
// in mysqldump.exe 프로그램 경로
"[mysqldump.exe path]" \
-u root -p1234 \
--single-transaction \
--databases marketing marketing-follow marketing-image \
marketing-like marketing-noti marketing-timeline marketing-user-profile \
> "[dump saving path]\marketing_all_backup.sql"
AWS RDS 생성
RDS 생성에는 다음 절차를 따라야 합니다.
- VPC 생성 (혹은 기본 VPC 사용 가능) - 여기서는 기본 VPC를 사용합니다.
- 보안 그룹 생성
- 인바운드 규칙 추가
- RDS 인스턴스 생성
\* 퍼블릭 서브넷에 생성 이후 AWS EKS 환경에서는 private 환경으로 이전시키면 됩니다.
명령어 한번에 정리
# ------------------------------------------------------------
# 1. AWS CLI 및 자격증명 확인
# ------------------------------------------------------------
aws --version
aws sts get-caller-identity
# 리전 확인
aws configure get region
# ------------------------------------------------------------
# 2. VPC / 네트워크 구성 확인
# ------------------------------------------------------------
# VPC 목록 확인
aws ec2 describe-vpcs \
--query "Vpcs[*].[VpcId,Tags[?Key=='Name'].Value|[0],CidrBlock,IsDefault]" \
--output table
# NACL 확인
aws ec2 describe-network-acls \
--filters "Name=vpc-id,Values=[you_vpc_id]" \
--query "NetworkAcls[*].[NetworkAclId,IsDefault,Entries]" \
--output json
# Internet Gateway 확인
aws ec2 describe-internet-gateways \
--filters "Name=attachment.vpc-id,Values=[you_vpc_id]" \
--query "InternetGateways[*].[InternetGatewayId,Attachments[0].State]" \
--output table
# ------------------------------------------------------------
# 3. Security Group 생성
# ------------------------------------------------------------
# 보안 그룹 생성
aws ec2 create-security-group \
--group-name marketing-rds-sg \
--description "Security group for Marketing RDS" \
--vpc-id [you_vpc_id]
# 인바운드 규칙 추가 (3306 포트)
aws ec2 authorize-security-group-ingress \
--group-id [your_sg_group_id] \
--protocol tcp \
--port 3306 \
--cidr 0.0.0.0/0
# ------------------------------------------------------------
# 4. RDS 생성
# ------------------------------------------------------------
# RDS MariaDB 인스턴스 생성
aws rds create-db-instance \
--db-instance-identifier marketing-db \
--db-instance-class db.t3.micro \
--engine mariadb \
--engine-version 10.11 \
--master-username [you_user_name] \
--master-user-password [your_pw] \
--allocated-storage 20 \
--vpc-security-group-ids [your_security_group] \
--publicly-accessible \
--backup-retention-period 7 \
--no-multi-az
# RDS 상태 확인
aws rds describe-db-instances \
--db-instance-identifier marketing-db \
--query "DBInstances[0].[DBInstanceStatus,Endpoint.Address,Endpoint.Port]" \
--output text
# ------------------------------------------------------------
# 5. RDS 접속 및 데이터 복원
# ------------------------------------------------------------
# RDS 접속 테스트
"C:\Program Files\MariaDB 11.5\bin\mysql.exe" \
-h [your-rds-endpoint] \
-u [rds-user] \
-p[rds-pw] \
--ssl-verify-server-cert=false \
-e "SELECT VERSION(); SHOW DATABASES;"
# 백업 데이터 복원
"C:\Program Files\MariaDB 11.5\bin\mysql.exe" \
-h [your-rds-endpoint] \
-u [rds-user] \
-p[rds-pw] \
--ssl-verify-server-cert=false \
< "[mysqldummp-file-path]"
결과 확인
내 컴퓨터에서 RDS로 접속
- endpoint
- port
- user
- password
Database 및 Table과 데이터까지 모두 잘 백업된 것을 볼 수 있습니다.







