>  기사  >  데이터 베이스  >  로컬 MySQL 데이터베이스를 AWS RDS로 마이그레이션

로컬 MySQL 데이터베이스를 AWS RDS로 마이그레이션

DDD
DDD원래의
2024-09-12 20:16:59873검색

이 게시물에서는 로컬 MySQL 데이터베이스의 데이터를 MySQL을 사용하여 AWS RDS에서 새로 생성된 인스턴스로 마이그레이션하는 자세한 단계를 공유하겠습니다.

배경

저는 2023년에 풀스택 프로젝트에 참여하면서 데이터베이스와 AWS 백엔드의 프로덕션 배포를 수동으로 처리했습니다. 올해 초, 데이터베이스에 월별 비용이 너무 많이 축적되어 모든 인프라를 종료했습니다(오버프로비저닝 덕분이 아닙니다).

이번 달로 빨리 감아도 연말까지 만료 예정인 AWS 크레딧(커뮤니티 빌더로서의 혜택)이 아직 많이 남아 있습니다. 프로젝트를 다시 시작하려고 했으나 생각보다 쉽지 않다는 것을 깨달았습니다.

첫째, 프로덕션 데이터를 복원하는 데 사용할 수 있는 스냅샷을 제대로 생성하지 않아 액세스 오류가 계속 발생했습니다. 또한 전체 배포가 얼마나 수동적이었고 내가 취한 단계를 하나도 문서화하지 않았으며 기억하지도 못했다는 점을 상기시켰습니다.

그것도 교훈이 되었으니 이번에는 그 과정을 모두 기록해보겠습니다. Udemy 과정에서 나는 결코 끝마치지 못했다는 말 중 하나에 따라:

'자동화를 진행하기 전에 수동으로 작업을 수행하는 방법을 알아야 합니다'.

따라서 먼저 마이그레이션을 수동으로 수행하기 위해 수행한 단계를 공유하고 다음 게시물에서는 Terraform으로 인프라를 프로비저닝하고 성공한 후 로컬 데이터를 원격 DB에 덤프하는 스크립트를 작성하겠습니다. 시작합니다.

이는 프로젝트의 전체 배포를 자동화하는 파이프라인을 구축하여 CI/CD에 대해 자세히 알아보기 위한 자체 할당 진행 프로젝트의 일부이기도 합니다.

A) 수동 단계

1. Amazon RDS에서 새 DB 인스턴스 생성

이번에는 좀 더 의도적이고 실용적으로 구성을 해보았습니다. '프로덕션 배포'였지만 실제 라이브 제품이 아니기 때문에 운영 비용이 가장 저렴할 것으로 예상되는 것을 선택했습니다(이는 추가하지 않기로 선택한 일부 보안 옵션에도 영향을 미쳤습니다).

아래 '데이터베이스 생성' 마법사에서 선택한 옵션을 요약했습니다.

AWS Region: eu-west-2
Database creation method: Standard Create
Engine type/edition/version: MySQL/MySQL Community/MySQL 8.0.35
Use case template: Free Tier
Credential settings: define these as you'd prefer
DB instance class: db.t3.micro
Storage: gp2, 20GB, auto-scaling enabled up to 100GB
Connectivity: 
    - define these for your specific use-case; I chose not to use an EC2
    - Public access: Yes, because I wanted to connect to the database locally via MySQL Workbench
Database authentication: Password auth
Additional configuration:
    - I created one database from here; but you can also leave it blank and create one when you get access via Workbench
Others: 
    - use default options or modify for your use-case
Deletion protection:
    - enabled (to dissuade myself from deleting easily like the last time)

예상 월간 비용:

Migrate Your Local MySQL Database to AWS RDS

2. RDS 인스턴스에 로컬로 연결

인스턴스가 성공적으로 시작된 후 mysql 클라이언트를 사용하여 인스턴스에 연결합니다. 이는 MySQL 서버가 설치되어 실행 중이라고 가정합니다.

MySQL 시작하기
MySQL 클라이언트

이 명령을 실행하려면 인스턴스 엔드포인트와 자격 증명 설정에 정의한 사용자 이름 및 비밀번호도 필요합니다.

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p

참고: 선택한 VPC 보안 그룹에 대한 올바른 인바운드 및 아웃바운드 규칙을 사용하여 인스턴스가 생성되었을 것입니다.

단, 연결 중 오류가 발생하는 경우 IP 주소가 인바운드 규칙의 허용 소스에 포함되어 있는지 확인하세요. 특정 위치에 해당 IP 주소로 인스턴스를 생성했을 때 비슷한 문제가 발생했는데, 다른 위치에서 다른 IP 주소로 연결하려고 하면 연결 시간이 초과되었습니다.

[선택사항] 데이터베이스 생성
인스턴스 생성 중 추가 구성 단계를 건너뛴 경우 다음 단계에서 생성할 수 있습니다.

CREATE DATABASE sample_db;

3. 로컬 데이터베이스에서 데이터 가져오기

이렇게 하려면 먼저 mysqldump 명령을 사용하여 로컬 DB의 스키마와 데이터를 .sql 덤프 파일로 내보내야 합니다.

mysqldump -u root -p local_db_name > sample_dump.sql

참고: 내보내는 동안 오류가 발생하는 경우 스택 오버플로에 대한 내 질문과 가능한 문제를 해결할 수 있는 답변을 확인하세요.

그런 다음 mysql 명령을 사용하여 덤프 파일을 RDS 인스턴스로 가져옵니다.

mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p 
sample_db < sample_dump.sql

4. [선택 사항] MySQL Workbench를 통해 RDS 인스턴스에 연결

문제 없이 인스턴스에 연결할 수 있는지 확인하고, 데이터베이스 내부의 스키마와 데이터도 올바르게 가져왔는지 확인하세요.

연결할 수 없나요?

  • 공개 액세스 설정을 올바르게 구성했는지 확인하세요. 또는
  • EC2 인스턴스를 사용하여 데이터베이스에 안전하게 연결하고 인스턴스를 통해 SQL 명령을 실행하세요. RDS 인스턴스가 위치한 VPC 내부에도 EC2 인스턴스가 있는지 확인하세요.

다음은 다음과 같습니다.

  • 이 게시물의 필수 데이터베이스 자격 증명(및 필요한 인프라 액세스)을 사용하여 App Runner에 배포
  • 대신 Terraform을 사용하여 스크립팅
  • 향후 백엔드 및 프런트엔드 업데이트를 업데이트하기 위한 CI/CD 파이프라인 생성

위 내용은 로컬 MySQL 데이터베이스를 AWS RDS로 마이그레이션의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.