Percona XtraBackup과 Amazon S3를 사용하여 MySQL에서 물리적으로 마이그레이션 - Amazon Aurora

Percona XtraBackup과 Amazon S3를 사용하여 MySQL에서 물리적으로 마이그레이션

소스 MySQL 버전 5.7 또는 8.0 데이터베이스에서 Amazon S3 버킷으로 전체 및 증분 백업 파일을 복사할 수 있습니다. 그런 다음 해당 파일에서 동일한 메이저 DB 엔진 버전을 사용하여 Amazon Aurora MySQL DB 클러스터에 복원할 수 있습니다.

mysqldump를 사용하여 데이터를 마이그레이션하는 것보다 이 옵션이 훨씬 더 빠를 것입니다. mysqldump를 사용하면 명령을 모두 다시 실행하여 소스 데이터베이스의 데이터와 스키마를 새 Aurora MySQL DB 클러스터에 다시 만들기 때문입니다. Aurora MySQL에서는 원본 MySQL 데이터 파일을 복사하는 즉시 해당 파일을 Aurora MySQL DB 클러스터의 데이터로 사용할 수 있습니다.

또한 마이그레이션 프로세스가 진행되는 동안 이진수 로그 복제본을 사용하여 가동 중지 시간을 최소화할 수 있습니다. 이진수 로그 복제를 사용하면, 외부 MySQL 데이터베이스는 데이터가 Aurora MySQL DB 클러스터로 마이그레이션 되는 동안 트랜젝션에 개방된 상태를 유지합니다. Aurora MySQL DB 클러스터를 생성한 후, 이진수 로그 복제를 사용하여 Aurora MySQL DB 클러스터와 백업 이후 발생한 트랜젝션을 동기화합니다. Aurora MySQL DB 클러스터가 MySQL 데이터베이스를 따라 잡았을 때, 새 트랜젝션에 대한 Aurora MySQL DB 클러스터로 완전히 전환해 마이그레이션을 완료합니다. 자세한 내용은 복제를 사용하여 Amazon Aurora MySQL DB 클러스터를 MySQL 데이터베이스와 동기화 단원을 참조하십시오.

제한 사항 및 고려 사항

Amazon S3 버킷에서 Amazon Aurora MySQL DB 클러스터로 복원할 때 적용되는 제한 사항 및 고려 사항은 다음과 같습니다.

  • 데이터는 기존 DB 클러스터가 아닌 새 DB 클러스터로만 마이그레이션할 수 있습니다.

  • Percona XtraBackup을 사용하여 S3에 데이터를 백업해야 합니다. 자세한 내용은 Percona XtraBackup 설치 단원을 참조하십시오.

  • Amazon S3 버킷과 Aurora MySQL DB 클러스터는 같은 AWS 리전에 있어야 합니다.

  • 다음의 경우에는 복원할 수 없습니다.

    • Amazon S3로 DB 클러스터 스냅샷을 내보냅니다. DB 클러스터 스냅샷 내보내기에서 S3 버킷으로 데이터를 마이그레이션할 수 없습니다.

    • 암호화된 소스 데이터베이스에서는 마이그레이션되는 데이터를 암호화할 수 있습니다. 또한 데이터를 마이그레이션 프로세스 동안 암호화하지 않은 상태로 유지할 수도 있습니다.

    • MySQL 5.5 또는 5.6 데이터베이스

  • Percona Server for MySQL은 mysql 스키마에 compression_dictionary* 테이블을 포함할 수 있으므로 소스 데이터베이스로 지원되지 않습니다.

  • Aurora Serverless DB 클러스터로 복원할 수 없습니다.

  • 메이저 버전과 마이너 버전에서 역방향 마이그레이션은 지원되지 않습니다. 예를 들어 MySQL 버전 8.0에서 Aurora MySQL 버전 2(MySQL 5.7과 호환), MySQL 버전 8.0.32에서 MySQL 커뮤니티 버전 8.0.26과 호환되는 Aurora MySQL 버전 3.03으로 마이그레이션할 수 없습니다.

  • 8.0.11, 8.0.13 및 8.0.15 등의 일부 이전 MySQL 8.0 버전에서는 Aurora MySQL 버전 3.05 이상으로 마이그레이션할 수 없습니다. 마이그레이션하기 전에 MySQL 버전 8.0.28로 업그레이드하는 것이 좋습니다.

  • Amazon S3에서 가져오기는 db.t2.micro DB 인스턴스 클래스에서 지원되지 않습니다. 그러나 다른 DB 인스턴스 클래스로 복원한 다음 나중에 DB 인스턴스 클래스를 변경할 수 있습니다. DB 인스턴스 클래스에 대한 자세한 내용은 Aurora DB 인스턴스 클래스 섹션을 참조하세요.

  • Amazon S3는 S3 버킷에 업로드되는 파일 크기를 5TB로 제한합니다. 백업 파일이 5TB를 초과하면 해당 백업 파일을 더 작은 크기의 파일들로 나누어야 합니다.

  • Amazon RDS는 S3 버킷에 업로드되는 파일의 개수를 100만 개로 제한합니다. 모든 전체 및 증분 백업을 포함하여 데이터베이스에 대한 백업 데이터가 100만 개의 파일을 초과하는 경우, Gzip(.gz), tar(.tar.gz) 또는 Percona xbstream(.xbstream) 파일을 사용하여 전체 및 증분 백업 파일을 S3 버킷에 저장합니다. Percona Xtrabackup 8.0은 압축에 Percona xbstream만 지원합니다.

  • DB 클러스터를 생성할 때는 각 DB 클러스터의 관리 서비스를 위해 rdsadmin 사용자가 만들어집니다. 이 경우는 RDS에서 예약된 사용자이므로 다음과 같은 제한 사항이 적용됩니다.

  • Aurora MySQL 버전 3의 경우 동적 권한을 가져올 수 없습니다. Aurora가 지원하는 동적 권한은 마이그레이션 후에 가져올 수 있습니다. 자세한 내용은 Aurora MySQL 버전 3의 동적 권한 단원을 참조하십시오.

  • mysql 스키마에서 사용자가 생성한 테이블은 마이그레이션되지 않습니다.

  • innodb_data_file_path 파라미터는 기본 데이터 파일 이름 ibdata1:12M:autoextend를 사용하는 데이터 파일 하나만 사용하여 구성해야 합니다. 두 개의 데이터 파일이 있거나 다른 이름의 데이터 파일이 있는 데이터베이스는 이 방법을 사용하여 마이그레이션할 수 없습니다.

    innodb_data_file_path=ibdata1:50M, ibdata2:50M:autoextend, innodb_data_file_path=ibdata01:50M:autoextend 파일 이름은 허용되지 않는 예입니다.

  • 기본 MySQL 데이터 디렉터리 외부에서 정의된 테이블이 있는 원본 데이터베이스에서 마이그레이션할 수 없습니다.

  • 이 방법을 사용할 때 압축 백업에 지원되는 최대 크기는 현재 64TiB로 제한됩니다. 압축 백업의 경우 압축되지 않은 공간 관련 요구 사항을 고려하여 이 제한 수준이 낮게 적용됩니다. 이 경우 지원되는 최대 백업 크기는 (64 TiB – compressed backup size)입니다.

  • Aurora MySQL은 MySQL 및 기타 외부 구성 요소 및 플러그인 가져오기를 지원하지 않습니다.

  • Aurora MySQL이 데이터베이스에서 모든 것을 복원하는 것은 아닙니다. 소스 MySQL 데이터베이스에서 다음 항목의 데이터베이스 스키마와 값을 저장한 다음, 복원한 Aurora MySQL DB 클러스터가 생성되면 여기에 추가하는 것이 좋습니다.

    • 사용자 계정

    • Functions

    • 저장 프로시저

    • 시간대 정보. 시간대 정보는 Aurora MySQL DB 클러스터의 로컬 운영 체제에서 로드됩니다. 자세한 내용은 Amazon Aurora DB 클러스터의 현지 시간대 단원을 참조하십시오.

시작하기 전 준비 사항

데이터를 Amazon S3 버킷에 복사하고 해당 파일에서 DB 클러스터로 복원하려면 먼저 다음 내용을 따라야 합니다.

  • 로컬 서버에 Percona XtraBackup을 설치합니다.

  • Aurora MySQL이 Amazon S3 버킷에 대신 액세스하도록 허용합니다.

Percona XtraBackup 설치

Amazon Aurora는 Percona XtraBackup을 사용하여 만든 파일로 DB 클러스터를 복원할 수 있습니다. Percona XtraBackup은 Software Downloads - Percona에서 설치할 수 있습니다.

MySQL 5.7 마이그레이션의 경우 Percona XtraBackup 2.4를 사용합니다.

MySQL 8.0 마이그레이션의 경우 Percona XtraBackup 8.0을 사용합니다. Percona XtraBackup 버전이 소스 데이터베이스의 엔진 버전과 호환되는지 확인하시기 바랍니다.

필요한 권한

MySQL 데이터를 Amazon Aurora MySQL DB 클러스터로 마이그레이션하려면 몇 가지 권한이 필요합니다.

  • Aurora에서 Amazon S3 버킷에 새 클러스터를 생성하도록 요청하는 사용자는 AWS 계정의 버킷을 나열할 권한이 있어야 합니다. AWS Identity and Access Management(IAM) 정책을 사용하여 사용자에게 이 권한을 부여합니다.

  • Aurora는 Amazon Aurora MySQL DB 클러스터를 생성하기 위해 사용된 파일을 저장하는 Amazon S3 버킷에 대신 액세스할 수 있는 권한을 요구합니다. IAM 서비스 역할을 사용하여 Aurora에 필요한 권한을 부여합니다.

  • 요청한 사용자에게는 AWS 계정의 IAM 역할을 나열할 권한도 있어야 합니다.

  • 요청한 사용자가 IAM 서비스 역할을 만들거나 Aurora에 IAM 서비스 역할 생성(콘솔 사용)을 요청하기 위해서는 AWS 계정의 IAM 역할을 만들 권한이 그 사용자에게 있어야 합니다.

  • 마이그레이션 프로세스 동안 데이터를 암호화할 계획이면, 마이그레이션을 수행할 사용자에 대한 IAM 정책을 업데이트, 백업 암호화에 사용하는 AWS KMS keys에 대한 RDS 액세스 권한을 부여합니다. 지침은 AWS KMS 리소스에 액세스할 수 있는 IAM 정책 생성 섹션을 참조하세요.

예를 들어, 다음 IAM 정책은 콘솔을 사용하여 IAM 역할을 나열하고, IAM 역할을 만들고, 해당 계정의 Amazon S3 버킷을 나열하고, KMS 키를 나열하는 데 필요한 최소한의 권한을 사용자에게 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "s3:ListBucket", "kms:ListKeys" ], "Resource": "*" } ] }

또한 사용자가 IAM 역할을 Amazon S3 버킷과 연결하려는 경우, IAM 사용자에게 해당 IAM 역할에 대한 iam:PassRole 권한이 있어야 합니다. 관리자는 이 권한으로 사용자가 Amazon S3 버킷에 연결할 수 있는 IAM 역할을 제한하게 됩니다.

예를 들어 다음 IAM 정책은 사용자가 S3Access라는 역할을 Amazon S3 버킷과 연결할 수 있도록 허용합니다.

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws:iam::123456789012:role/S3Access" } ] }

IAM 사용자 권한에 대한 자세한 내용은 정책을 사용하여 액세스 관리 단원을 참조하십시오.

IAM 서비스 역할 생성

새 역할 생성 옵션을 선택하여 AWS Management Console에서 역할을 생성할 수 있습니다(이 주제 후반부에서 설명). 이 옵션을 선택하고 새 역할의 이름을 지정하면 Aurora는 Aurora가 그 이름으로 Amazon S3 버킷에 액세스하는 데 필요한 IAM 서비스 역할을 생성합니다.

또는 다음 절차에 따라 수동으로 역할을 만들 수도 있습니다.

Aurora가 Amazon S3에 액세스할 수 있도록 IAM 역할을 만들려면
  1. Amazon S3 리소스에 액세스할 수 있는 IAM 정책 생성의 단계를 수행합니다.

  2. Amazon Aurora에서 AWS 서비스에 액세스하도록 허용하는 IAM 역할 생성의 단계를 수행합니다.

  3. IAM 역할을 Amazon Aurora MySQL DB 클러스터와 연결의 단계를 수행합니다.

Amazon Aurora MySQL DB 클러스터로 복원할 파일 백업

Percona XtraBackup을 사용하여 MySQL 데이터베이스 파일의 전체 백업을 만들고 백업 파일을 Amazon S3 버킷으로 업로드할 수 있습니다. 또는 이미 Percona XtraBackup을 사용하여 MySQL 데이터베이스 파일을 백업 중인 경우 기존의 전체 및 증분 백업 디렉터리 및 파일을 Amazon S3 버킷으로 업로드할 수 있습니다.

Percona XtraBackup을 사용한 전체 백업 생성

Amazon S3에서 복원하여 Aurora MySQL DB 클러스터를 생성할 수 있는 MySQL 데이터베이스 파일의 전체 백업을 만들려면 Percona XtraBackup 유틸리티(xtrabackup)를 사용하여 데이터베이스를 백업합니다.

예를 들어, 다음 명령을 실행하면 MySQL 데이터베이스 백업을 만들고 /on-premises/s3-restore/backup 폴더에 백업 파일을 저장합니다.

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

백업을 파일 하나로 압축하려면(필요하면 분할 가능) --stream 옵션을 사용하여 다음 형식 중 하나로 백업을 저장하면 됩니다.

  • Gzip(.gz)

  • tar(.tar)

  • Percona xbstream(.xbstream)

다음 명령을 실행하면 Gzip 파일 여러 개로 된 MySQL 데이터베이스 백업이 만들어집니다.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

다음 명령을 실행하면 tar 파일 여러 개로 된 MySQL 데이터베이스 백업이 만들어집니다.

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

다음 명령을 실행하면 xbstream 파일 여러 개로 된 MySQL 데이터베이스 백업이 만들어집니다.

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream
참고

다음 오류가 표시되는 경우 명령에서 파일 형식이 혼합된 것이 원인일 수 있습니다.

ERROR:/bin/tar: This does not look like a tar archive

Percona XtraBackup 유틸리티를 사용하여 MySQL 데이터베이스를 백업한 뒤에는 백업 디렉터리 및 파일을 Amazon S3 버킷으로 복사할 수 있습니다.

파일을 만들고 Amazon S3 버킷에 업로드하는 방법에 대한 자세한 내용은 Amazon S3 시작 안내서Amazon Simple Storage Service 시작하기를 참조하십시오.

Percona XtraBackup을 사용한 증분 백업 사용

Amazon Aurora MySQL은 Percona XtraBackup을 사용하여 만든 전체 및 증분 백업을 모두 지원합니다. 이미 Percona XtraBackup을 사용하여 MySQL 데이터베이스 파일의 전체 및 증분 백업을 수행 중인 경우 전체 백업을 만들고 백업 파일을 Amazon S3로 업로드할 필요가 없습니다. 대신, 전체 및 증분 백업에 대한 기존 백업 디렉터리 및 파일을 Amazon S3 버킷으로 복사하여 시간을 크게 절약할 수 있습니다. 자세한 내용을 알아보려면 Percona 웹 사이트에서 Create an incremental backup을 참조하세요.

기존의 전체 및 증분 백업 파일을 Amazon S3 버킷으로 복사할 때 기본 디렉터리의 콘텐츠를 반복적으로 복사해야 합니다. 이러한 콘텐츠에는 전체 백업이 포함되며 모든 증분 백업 디렉터리 및 파일도 포함됩니다. 이 복사본은 Amazon S3 버킷의 디렉터리 구조를 보관해야 합니다. Aurora는 모든 파일과 디렉터리에서 반복됩니다. Aurora는 각 증분 백업에 포함된 xtrabackup-checkpoints 파일을 사용하여 기본 디렉터리를 식별하고 LSN(로그 시퀀스 번호) 범위에 따라 증분 백업을 정렬합니다.

파일을 만들고 Amazon S3 버킷에 업로드하는 방법에 대한 자세한 내용은 Amazon S3 시작 안내서Amazon Simple Storage Service 시작하기를 참조하십시오.

백업 고려 사항

Aurora는 Percona XtraBackup을 사용하여 생성되는 부분 백업을 지원하지 않습니다. 데이터베이스의 소스 파일을 백업할 때 --tables, --tables-exclude, --tables-file, --databases, --databases-exclude 또는 --databases-file 옵션을 사용하여 부분 백업을 만들 수 없습니다.

Percona XtraBackup을 사용한 데이터베이스 백업에 관한 자세한 내용은 Percona 웹 사이트의 Percona XtraBackup - DocumentationWork with binary logs를 참조하세요.

Aurora에서는 Percona XtraBackup을 사용한 증분 백업을 지원합니다. 자세한 내용을 알아보려면 Percona 웹 사이트에서 Create an incremental backup을 참조하세요.

Aurora은 파일 이름을 기준으로 백업 파일을 사용합니다. 파일 형식에 따라 백업 파일에 적절한 파일 확장명을 지정해야 합니다—예를 들어, Percona xbstream 형식을 사용하여 저장한 파일에는 .xbstream을 지정합니다.

Aurora는 알파벳 순서뿐 아니라 자연수 순서로도 백업 파일을 사용합니다. split 명령을 실행할 때는 항상 xtrabackup 옵션을 사용하여 적절한 순서로 백업 파일을 작성하고 이름을 붙여야 합니다.

Amazon S3는 Amazon S3 버킷에 업로드되는 파일 크기를 5TB로 제한합니다. 데이터베이스의 백업 데이터가 5TB를 초과하는 경우, split 명령을 사용하여 백업 파일을 각각 5TB 미만의 파일 여러 개로 나누어야 합니다.

Aurora는 Amazon S3 버킷에 업로드되는 소스 파일을 100만 개로 제한합니다. 일부 경우, 모든 전체 및 증분 백업을 포함하고 있는 데이터베이스의 백업 데이터가 아주 많은 수의 파일로 구성되어 있을 수 있습니다. 이 경우에는 tarball(.tar.gz) 파일을 사용하여 Amazon S3 버킷에 전체 및 증분 백업 파일을 저장하십시오.

파일을 Amazon S3 버킷으로 업로드할 때, 서버 측 암호화를 사용해 데이터를 암호화할 수 있습니다. 그런 다음 암호화된 파일에서 Amazon Aurora MySQL DB 클러스터를 복원할 수 있습니다. Amazon Aurora MySQL은 다음 서버 측 암호화 유형을 사용하여 암호화된 파일로 DB 클러스터를 복원할 수 있습니다.

  • Amazon S3–관리형 키(SSE-S3)를 이용한 서버 측 암호화 – 각 객체가 강력한 멀티 팩터 암호화를 사용하는 고유 키로 암호화 됩니다.

  • AWS KMS 관리형 키(SSE-KMS)를 이용한 서버 측 암호화 - SSE-S3와 유사하지만, 스스로 암호화 키를 생성해 관리하는 옵션이 있으며 그 외 다른 점도 있습니다.

파일을 Amazon S3 버킷에 업로드할 때 서버 측 암호화를 사용하는 방법에 대한 자세한 내용은 Amazon S3 개발자 안내서서버 측 암호화를 사용하여 데이터 보호를 참조하세요.

Amazon S3 버킷에서 Amazon Aurora MySQL DB 클러스터 복원

Amazon RDS 콘솔을 사용하여 Amazon S3 버킷의 백업 파일을 복원하여 새 Amazon Aurora MySQL DB 클러스터를 만들 수 있습니다.

Amazon S3 버킷의 파일에서 Amazon Aurora MySQL DB 클러스터를 복원하려면
  1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

  2. Amazon RDS 콘솔의 오른쪽 상단에서 DB 클러스터를 생성할 AWS 리전을 선택합니다. 데이터베이스 백업이 포함된 Amazon S3 버킷과 동일한 AWS 리전을 선택합니다.

  3. 탐색 창에서 Databases(데이터베이스)를 선택한 다음 S3에서 복원을 선택합니다.

  4. S3에서 복원(Restore from S3)을 선택합니다.

    S3에서 복원하여 데이터베이스 생성(Create database by restoring from S3) 페이지가 나타납니다.

    S3에서 DB 클러스터를 복원하기 위한 세부 정보를 지정하는 페이지
  5. S3 대상(S3 destination)에서 다음을 수행합니다.

    1. 백업 파일이 포함된 S3 버킷을 선택합니다.

    2. (선택 사항) S3 폴더 경로 접두사에 Amazon S3 버킷에 저장되는 파일의 파일 경로 접두사를 입력합니다.

      접두사를 지정하지 않는 경우, RDS는 S3 버킷의 루트 폴더에 있는 모든 파일과 폴더를 사용하여 DB 인스턴스를 만듭니다. 접두사를 지정하는 경우 RDS는 파일의 경로가 지정된 접두사로 시작하는 S3 버킷의 파일과 폴더를 사용하여 DB 인스턴스를 만듭니다.

      예를 들어 이름이 backups인 하위 폴더의 S3에 백업 파일을 저장했고 여러 세트의 백업 파일이 각각 자체 디렉터리(gzip_backup1, gzip_backup2 등)에 들어 있다고 가정해봅시다. 이 경우 gzip_backup1 폴더의 파일에서 복원하려면 backups/gzip_backup1의 접두사를 지정합니다.

  6. 엔진 옵션(Engine options)에서 다음을 수행합니다.

    1. Engine type(엔진 유형)에서 Amazon Aurora을 선택합니다.

    2. 버전에서 복원된 DB 인스턴스의 Aurora MySQL 엔진 버전을 선택합니다.

  7. IAM 역할(IAM role)에서 기존 IAM 역할을 선택할 수 있습니다.

  8. 또는 새 역할 생성을 선택하여 새 IAM 역할이 생성되도록 할 수도 있습니다. 이 경우 다음을 수행합니다.

    1. IAM 역할 이름(IAM role name)을 입력합니다.

    2. KMS 키에 대한 액세스 허용(Allow access to KMS key) 여부를 선택합니다.

      • 백업 파일을 암호화하지 않았다면 [No]를 선택합니다.

      • Amazon S3로 백업 파일을 업로드할 때 AES-256(SSE-S3)로 암호화를 했다면 [아니오(No)]를 선택합니다. 이 경우 데이터는 자동으로 복호화됩니다.

      • Amazon S3로 백업 파일을 업로드할 때 AWS KMS(SSE-KMS) 서버 측 암호화로 암호화를 했다면 를 선택합니다. 그런 다음 AWS KMS key에 대해 올바른 KMS 키를 선택합니다.

        AWS Management Console은 Aurora를 활성화하여 데이터를 복호화하는 IAM 정책을 생성합니다.

      자세한 내용은 Amazon S3 개발자 안내서서버 측 암호화를 사용하여 데이터 보호를 참조하십시오.

  9. DB 클러스터 스토리지 구성, DB 인스턴스 클래스, DB 클러스터 식별자 및 로그인 보안 인증 정보 등 DB 클러스터에 대한 설정을 선택합니다. 각 설정에 대한 자세한 내용은 Aurora DB 클러스터 설정 단원을 참조하십시오.

  10. 필요에 따라 Aurora MySQL DB 클러스터에 대한 추가 설정을 사용자 지정합니다.

  11. 데이터베이스 생성(Database Create) 를 선택하여 Aurora DB 인스턴스를 시작합니다.

Amazon RDS 콘솔의 DB 인스턴스 목록에 새로운 DB 인스턴스가 나타납니다. DB 인스턴스를 만들고 사용할 준비가 될 때까지 DB 인스턴스의 상태는 [creating]입니다. 상태가 [available]로 변경되면 DB 클러스터의 기본 인스턴스에 연결할 수 있습니다. DB 인스턴스 클래스와 할당된 저장소에 따라 새 인스턴스를 사용할 수 있을 때까지 몇 분 정도 걸릴 수 있습니다.

새로 생성된 클러스터를 보려면 Amazon RDS 콘솔에서 Databases(데이터베이스) 보기를 선택하고 DB 클러스터를 선택합니다. 자세한 내용은 Amazon Aurora DB 클러스터 보기 섹션을 참조하세요.

Amazon Aurora DB 인스턴스 목록

DB 클러스터의 포트와 라이터 엔드포인트를 기록합니다. 쓰기 또는 읽기 작업을 수행하는 애플리케이션은 모두 JDBC 및 ODBC 연결 문자열에 이 DB 클러스터의 라이터 엔드포인트와 포트를 사용합니다.

복제를 사용하여 Amazon Aurora MySQL DB 클러스터를 MySQL 데이터베이스와 동기화

마이그레이션 동안 가동 정지가 거의 없도록 만들기 위해, MySQL 데이터베이스에 커밋된 트랜젝션을 Aurora MySQL DB 클러스터로 복제할 수 있습니다. 복제를 사용하여 DB 클러스터가 마이그레이션 동안 발생한 MySQL 데이터베이스의 트랜젝션을 따라 잡을 수 있도록 만들 수 있습니다. DB 클러스터가 완전히 따라 잡았을 때, 복제를 중지하고 Aurora MySQL로 마이그레이션을 완료할 수 있습니다.

외부 MySQL 데이터베이스와 Aurora MySQL DB 클러스터의 암호화된 복제 구성

데이터를 안전하게 복제하기 위해 암호화된 복제를 사용할 수 있습니다.

참고

암호화된 복제를 사용할 필요가 없다면 이 단계를 건너 뛰고 Amazon Aurora MySQL DB 클러스터를 외부 MySQL 데이터베이스와 동기화의 지시로 이동합니다.

다음은 암호화된 복제를 사용하기 위한 사전 조건입니다.

  • 외부 MySQL 소스 데이터베이스에서 SSL(Secure Socket Layer)를 활성화해야 합니다.

  • Aurora MySQL DB 클러스터에 대해 클라이언트 키와 클라이언트 인증서를 준비해야 합니다.

암호화 복제 중, Aurora MySQL DB 클러스터는 MySQL 데이터베이스 서버의 클라이언트 역할을 합니다. Aurora MySQL 클라이언트 인증서와 키는 .pem 형식의 파일입니다.

외부 MySQL 데이터베이스와 Aurora MySQL DB 클러스터에 암호화된 복제를 구성하려면,
  1. 암호화 복제를 준비해야 합니다.

    • 외부 MySQL 주 데이터베이스에서 SSL을 활성화하지 않았고 클라이언트 키와 클라이언트 인증서가 준비되지 않았다면, MySQL 데이터베이스 서버의 SSL을 활성화하고 필요한 클라이언트 키와 클라이언트 인증서를 생성합니다.

    • 외부 주 데이터베이스에 SSL이 활성화되어 있으면 Aurora MySQL DB 클러스터에 클라이언트 키와 인증서를 제공합니다. 인증서와 키가 없다면, Aurora MySQL DB 클러스터에 대해 새 키와 인증서를 생성합니다. 클라이언트 인증서에 서명하려면, 외부 MySQL 주 데이터베이스의 SSL을 구성할 때 사용하는 인증 기관(CA) 키가 있어야 합니다.

    자세한 내용은 MySQL 설명서의 openssl을 사용하여 SSL 인증서 및 키 생성을 참조하십시오.

    인증 기관(CA) 인증서, 클라이언트 키, 클라이언트 인증서가 필요합니다.

  2. SSL을 사용하여 주 사용자로 Aurora MySQL DB 클러스터에 연결하십시오.

    SSL을 이용한 Aurora MySQL DB 클러스터 연결에 대한 자세한 정보는 Aurora MySQL DB 클러스터에서 TLS 사용를 참조하십시오.

  3. mysql.rds_import_binlog_ssl_material 저장 프로시저를 실행하여 Aurora MySQL DB 클러스터로 SSL 정보를 가져오십시오.

    ssl_material_value 파라미터에서, Aurora MySQL DB 클러스터의 정보를 올바른 JSON 페이로드에 삽입하십시오.

    다음은 Aurora MySQL DB 클러스터에 SSL 정보를 가져오는 예제입니다. .pem 형식 파일은 본문 코드의 길이가 일반적으로 예제의 본문 코드 길이보다 깁니다.

    call mysql.rds_import_binlog_ssl_material( '{"ssl_ca":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END RSA PRIVATE KEY-----\n"}');

    자세한 내용은 mysql.rds_import_binlog_ssl_materialAurora MySQL DB 클러스터에서 TLS 사용 단원을 참조하세요.

    참고

    프로시저를 실행한 후 파일에 암호를 저장합니다. 이 파일을 나중에 삭제하려면 mysql.rds_remove_binlog_ssl_material 저장 프로시저를 실행하면 됩니다.

Amazon Aurora MySQL DB 클러스터를 외부 MySQL 데이터베이스와 동기화

복제를 사용하여 Amazon Aurora MySQL DB 클러스터와 MySQL 데이터베이스를 동기화할 수 있습니다.

복제를 사용하여 Aurora MySQL DB 클러스터와 MySQL 데이터베이스를 동기화하려면,
  1. 외부 MySQL 데이터베이스의 /etc/my.cnf 파일에 관련 항목이 있어야 합니다.

    암호화된 복제가 필요 없다면, 이진수 로그(binlogs)를 활성화 시키고 SSL을 비활성화 시켜 외부 MySQL 데이터베이스를 시작합니다. 다음은 암호화된 데이터와 관련된 /etc/my.cnf 파일 항목들입니다.

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1

    암호화된 복제가 필요하다면, SSL과 binlogs를 활성화시켜 외부 MySQL 데이터베이스를 시작합니다. /etc/my.cnf 파일 항목에는 MySQL 데이터베이스 서버의 .pem 파일 위치가 포함되어 있습니다.

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1 # Setup SSL. ssl-ca=/home/sslcerts/ca.pem ssl-cert=/home/sslcerts/server-cert.pem ssl-key=/home/sslcerts/server-key.pem

    다음 명령을 사용하여 SSL이 활성화되었는지 확인할 수 있습니다.

    mysql> show variables like 'have_ssl';

    다음과 유사하게 출력되어야 합니다.

    +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | Variable_name | Value | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | have_ssl | YES | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ 1 row in set (0.00 sec)
  2. 복제에서 시작 이진수 로그 위치를 결정합니다. 다음 단계에서 복제를 시작할 위치를 지정합니다.

    AWS Management Console 사용

    1. AWS Management Console에 로그인한 후 https://console.aws.amazon.com/rds/에서 Amazon RDS 콘솔을 엽니다.

    2. 탐색 창에서 [Events]를 선택합니다.

    3. [Events] 목록에서 [Recovered from Binary log filename] 이벤트의 위치를 확인합니다.

      MySQL의 기본 보기

    AWS CLI 사용

    또한 describe-events AWS CLI 명령을 사용하여 binlog 파일 이름 및 위치를 확인할 수 있습니다. 다음은 describe-events 명령의 예시입니다.

    PROMPT> aws rds describe-events

    출력에서 binlog 위치를 표시하는 이벤트를 식별합니다.

  3. 외부 MySQL 데이터베이스에 연결되어 있는 동안 복제에 사용할 사용자를 만듭니다. 이 계정은 오직 복제용으로만 사용되며 보안 향상을 위해 사용자의 도메인으로 제한되어야 합니다. 다음은 예제입니다.

    mysql> CREATE USER '<user_name>'@'<domain_name>' IDENTIFIED BY '<password>';

    사용자에게 REPLICATION CLIENTREPLICATION SLAVE 권한이 필요합니다. 해당 사용자에게 이 권한을 부여합니다.

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>'@'<domain_name>';

    암호화된 복제를 사용해야 한다면, 복제 사용자에게 SSL 연결이 반드시 필요합니다. 예를 들어, 다음 문을 사용하여 사용자 계정 <user_name>.

    GRANT USAGE ON *.* TO '<user_name>'@'<domain_name>' REQUIRE SSL;
    참고

    REQUIRE SSL이 포함되어 있지 않다면, 복제 연결이 자동으로 암호화되지 않은 연결로 돌아갈 수 있습니다.

  4. Amazon RDS 콘솔에서 외부 MySQL 데이터베이스를 호스팅하는 서버의 IP 주소를 Aurora MySQL DB 클러스터용 VPC 보안 그룹에 추가하십시오. VPC 보안 그룹 수정에 대한 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서VPC용 보안 그룹을 참조하십시오.

    Aurora MySQL DB 클러스터의 IP 주소에서의 연결을 허용하도록 로컬 네트워크를 구성하여 외부 MySQL 데이터베이스와 통신할 수 있도록 만들어야 할 수도 있습니다. Aurora MySQL DB 클러스터의 IP 주소를 검색하려면 host 명령을 사용하십시오.

    host <db_cluster_endpoint>

    호스트 이름은 Aurora MySQL DB 클러스터 엔드포인트의 DNS 이름입니다.

  5. mysql.rds_reset_external_master(Aurora MySQL 버전 2) 또는 mysql.rds_reset_external_source(Aurora MySQL 버전 3) 저장 프로시저를 실행해 이진수 로그 복제를 활성화합니다. 저장 프로시저에는 다음과 같은 구문이 있습니다.

    CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption ); CALL mysql.rds_set_external_source ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

    파라미터에 관한 자세한 내용은 mysql.rds_reset_external_master(Aurora MySQL 버전 2)mysql.rds_reset_external_source(Aurora MySQL 버전 3) 단원을 참조하세요.

    mysql_binary_log_file_namemysql_binary_log_file_location의 경우, 앞에서 확인한 [Recovered from Binary log filename] 이벤트의 위치를 사용합니다.

    Aurora MySQL DB 클러스터의 데이터가 암호화되어 있지 않다면, ssl_encryption 파라미터를 0으로 설정해야 합니다. 데이터가 암호화되어 있으면 ssl_encryption 파라미터를 1로 설정합니다.

    다음은 암호화된 데이터가 있는 Aurora MySQL DB 클러스터에 대해 프로시저를 실행하는 예제입니다.

    CALL mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1); CALL mysql.rds_set_external_source( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1);

    이 저장 프로시저는 Aurora MySQL DB 클러스터가 외부 MySQL 데이터베이스를 연결하고 이진수 로그를 읽을 때 사용하는 파라미터를 설정합니다. 또한 데이터가 암호화되어 있다면, 로컬 디스크에 대한 SSL 인증 기관(CA) 인증서, 클라이언트 인증서, 클라이언트 키를 다운로드합니다.

  6. mysql.rds_start_replication 저장 프로시저를 실행해 이진수 로그 복제를 시작합니다.

    CALL mysql.rds_start_replication;
  7. Aurora MySQL DB 클러스터가 MySQL 복제 주 데이터베이스보다 얼마나 지연되어 있는지 모니터링하십시오. 이렇게 하려면 Aurora MySQL DB 클러스터에 연결하고 다음 명령을 실행하십시오.

    Aurora MySQL version 2: SHOW SLAVE STATUS; Aurora MySQL version 3: SHOW REPLICA STATUS;

    명령 출력의 Seconds Behind Master 필드는 Aurora MySQL DB 클러스터가 MySQL 주 내용보다 얼마나 지연되었는지 보여줍니다. 이 값이 0 (0)인 경우, Aurora MySQL DB 클러스터는 주 내용을 따라잡습니다. 그러면 다음 단계로 이동해 복제를 중지할 수 있습니다.

  8. MySQL 복제 주 데이터베이스를 연결하고, 복제를 중지합니다. 이렇게 하려면 mysql.rds_stop_replication 저장 프로시저를 실행합니다.

    CALL mysql.rds_stop_replication;