이 게시물에서는 로컬 MySQL 데이터베이스의 데이터를 MySQL을 사용하여 AWS RDS에서 새로 생성된 인스턴스로 마이그레이션하는 자세한 단계를 공유하겠습니다.
저는 2023년에 풀스택 프로젝트에 참여하여 데이터베이스의 프로덕션 배포와 AWS 백엔드를 수동으로 처리했습니다. 올해 초, 데이터베이스에 월별 비용이 너무 많이 누적되어 모든 인프라를 종료했습니다(오버프로비저닝 덕분이 아닙니다).
이제 이번 달까지 빨리 감아도 연말까지 만료 예정인 AWS 크레딧(커뮤니티 빌더로서의 혜택)이 여전히 많이 남아 있습니다. 프로젝트를 백업하려고 했으나 생각보다 쉽지 않다는 것을 깨달았습니다.
첫째, 프로덕션 데이터를 복원하는 데 사용할 수 있는 스냅샷을 제대로 생성하지 않아 액세스 오류가 계속 발생했습니다. 또한 전체 배포가 얼마나 극도로 수동적이었고 내가 취한 단계를 하나도 문서화하지 않았는지(나도 기억하지 못함)를 상기시켰습니다.
그것을 교훈삼아 이번에는 전 과정을 기록으로 남겨봅니다. Udemy 강좌에서 제가 한 번도 끝마치지 못한 말 중 하나는 다음과 같습니다.
'자동화를 진행하기 전에 작업을 수동으로 수행하는 방법을 알아야 합니다.'
따라서 먼저 마이그레이션을 수동으로 수행하기 위해 수행한 단계를 공유하고 다음 게시물에서는 Terraform으로 인프라를 프로비저닝하고 성공한 후 로컬 데이터를 원격 DB에 덤프하는 스크립트를 작성하겠습니다. 시작하다.
이는 프로젝트의 전체 배포를 자동화하는 파이프라인을 구축하여 CI/CD에 대해 자세히 알아보기 위해 진행 중인 자체 할당 프로젝트의 일부이기도 합니다.
이번에는 좀 더 의도적이고 실용적으로 구성을 해보았습니다. '프로덕션 배포'였지만 실제 라이브 제품이 아니기 때문에 운영 비용이 가장 저렴할 것으로 예상되는 것을 선택했습니다(이는 추가하지 않기로 선택한 일부 보안 옵션에도 영향을 미쳤습니다).
아래 '데이터베이스 생성' 마법사에서 선택한 옵션을 요약했습니다.
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)
월별 예상 비용:
인스턴스가 성공적으로 시작된 후 mysql 클라이언트를 사용하여 인스턴스에 연결합니다. 이는 MySQL 서버가 설치되어 실행 중이라고 가정합니다.
MySQL 시작하기
MySQL 클라이언트
이 명령을 실행하려면 인스턴스 엔드포인트와 자격 증명 설정에 정의한 사용자 이름 및 비밀번호도 필요합니다.
mysql -h sample_endpoint.rds.amazonaws.com -u username_sample -p
참고: 선택한 VPC 보안 그룹에 대한 올바른 인바운드 및 아웃바운드 규칙을 사용하여 인스턴스가 생성되었을 것입니다.
단, 연결 오류가 발생하면 IP 주소가 인바운드 규칙에 허용된 소스에 포함되어 있는지 확인하세요. 특정 위치에 해당 IP 주소로 인스턴스를 생성했을 때 비슷한 문제가 발생했고, 다른 위치에서 다른 IP 주소로 연결하려고 하면 연결 시간이 초과되었습니다.
[선택사항] 데이터베이스 만들기
인스턴스 생성 중에 추가 구성 단계를 건너뛴 경우 다음 단계에서 인스턴스를 생성할 수 있습니다.
CREATE DATABASE sample_db;
이 작업을 수행하려면 먼저 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_db4. [선택 사항] MySQL Workbench를 통해 RDS 인스턴스에 연결
문제 없이 인스턴스에 연결할 수 있는지 확인하고, 데이터베이스 내부의 스키마와 데이터도 올바르게 가져왔는지 확인하세요.
연결할 수 없나요?
다음은 다음과 같습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3