메뉴
Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

Amazon RDS MySQL DB 인스턴스로 데이터 가져오기

백업 파일을 사용하여 Amazon RDS에서 MySQL 데이터베이스 가져오기를 지원합니다. 온프레미스 데이터베이스의 백업을 만들어서 Amazon Simple Storage Service(Amazon S3)에 저장한 다음 MySQL을 실행하여 새로운 Amazon RDS DB 인스턴스에 백업 파일을 복원할 수 있습니다.

다음 다이어그램은 지원되는 시나리오를 보여 줍니다.

 S3 아키텍처에서 백업 파일을 가져오는 MySQL

Amazon S3에서 백업 파일 가져오기는 MySQL 버전 5.6을 지원합니다. Amazon S3에서 백업 파일 가져오기는 모든 AWS 리전에서 사용할 수 있습니다.

백업 파일을 만들고, 복사하고, 복원하는 동안 데이터베이스를 오프라인 상태로 둘 수 있다면 Amazon RDS로 데이터베이스를 가져오는 것이 좋습니다. 온프레미스 데이터베이스를 오프라인 상태로 둘 수 없는 경우 이 주제에서 설명한 대로 Amazon S3를 통해 Amazon RDS로 마이그레이션한 후 데이터베이스를 업데이트하기 위해 binlog 복제를 사용할 수 있습니다. 자세한 내용은 Amazon RDS 외부에서 실행 중인 MySQL 또는 MariaDB 인스턴스를 사용한 복제 단원을 참조하십시오. 또한 AWS Database Migration Service를 사용하여 데이터베이스를 Amazon RDS로 마이그레이션할 수도 있습니다. 자세한 내용은 AWS Database Migration Service란 무엇입니까? 단원을 참조하십시오.

Amazon S3에서 Amazon RDS로 백업 파일 가져오기에 대한 제한 및 권장 사항

다음은 Amazon S3에서 백업 파일을 가져올 때의 몇 가지 제한 및 권장 사항입니다.

  • 기존 DB 인스턴스가 아닌 새 DB 인스턴스로만 데이터를 가져올 수 있습니다.

  • 온프레미스 데이터베이스 백업을 생성할 때 Percona XtraBackup을 사용해야 합니다.

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

  • MySQL 5.5 또는 5.7 데이터베이스는 가져올 수 없습니다.

  • 온프레미스 MySQL 5.6 데이터베이스를 Amazon RDS MySQL 5.7 데이터베이스로 가져올 수 없습니다. 가져오기가 완료되면 DB 인스턴스를 업그레이드할 수 있습니다.

  • 크기가 6TB를 초과하는 데이터베이스는 복원할 수 없습니다.

  • 암호화된 원본 데이터베이스에서 복원할 수 없지만 암호화된 Amazon RDS DB 인스턴스로 복원할 수 있습니다.

  • Amazon S3 버킷은 암호화할 수 없습니다.

  • Amazon RDS DB 인스턴스와 다른 AWS 리전에서는 Amazon S3 버킷으로 복원할 수 없습니다.

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

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

  • Amazon RDS는 Amazon S3 버킷에 업로드되는 파일을 100만 개로 제한합니다. 모든 전체 및 증분 백업을 포함하여 데이터베이스에 대한 백업 데이터가 100만 개의 파일을 초과하는 경우 tarball(.tar.gz) 파일을 사용하여 전체 및 증분 백업 파일을 Amazon S3 버킷에 저장하십시오.

  • 사용자 계정을 자동으로 가져오지 않습니다. 원본 데이터베이스에서 사용자 계정을 저장하고 나중에 새 DB 인스턴스에 추가하십시오.

  • 함수를 자동으로 가져오지 않습니다. 원본 데이터베이스에서 함수를 저장하고 나중에 새 DB 인스턴스에 추가하십시오.

  • 저장 프로시저를 자동으로 가져오지 않습니다. 원본 데이터베이스에서 저장 프로시저를 저장하고 나중에 새 DB 인스턴스에 추가하십시오.

  • 시간대 정보를 자동으로 가져오지 않습니다. 원본 데이터베이스에서 시간대 정보를 저장하고 나중에 새 DB 인스턴스의 시간대를 설정하십시오. 자세한 내용은 MySQL DB 인스턴스의 현지 시간대 단원을 참조하십시오.

  • 메이저 버전과 마이너 버전 모두 역방향 마이그레이션은 지원하지 않습니다. 예를 들어 버전 5.7에서 버전 5.6으로, 버전 5.6.39에서 버전 5.6.37로 마이그레이션할 수 없습니다.

Amazon S3에서 Amazon RDS로 백업 파일을 가져오는 설정 개요

Amazon S3에서 Amazon RDS로 백업 파일을 가져오는 설정에 필요한 구성 요소가 있습니다.

  • 백업 파일을 저장할 Amazon S3 버킷.

  • Percona XtraBackup이 생성한 온프레미스 데이터베이스 백업.

  • Amazon RDS에서 버킷을 액세스할 수 있도록 허용하는 AWS Identity and Access Management(IAM) 역할.

이미 Amazon S3 버킷이 있으면 그 버킷을 사용하면 됩니다. Amazon S3 버킷이 없는 경우에는 새 버킷을 만들 수 있습니다. Amazon S3 버킷은 암호화할 수 없습니다. 새 버킷을 만드는 방법은 버킷 생성을 참조하십시오.

백업을 생성하려면 Percona XtraBackup 도구를 사용하십시오. 자세한 내용은 데이터베이스 백업 생성 단원을 참조하십시오.

이미 IAM 역할이 있으면 그 역할을 사용하면 됩니다. IAM 역할이 없는 경우에는 수동으로 새 역할을 만들 수 있습니다. 또는 AWS Management 콘솔을 사용하여 데이터베이스를 복원할 때 마법사로 계정에서 새 IAM 역할이 생성되도록 선택할 수 있습니다. 수동으로 새 IAM 역할을 만들거나 기존의 IAM 역할에 신뢰 및 권한 정책을 연결하려면 수동으로 IAM 역할 만들기 단원을 참조하십시오. 새 IAM 역할을 생성하려면 AWS Management 콘솔의 절차를 따르십시오.

데이터베이스 백업 생성

백업을 생성하려면 Percona XtraBackup 소프트웨어를 사용하십시오. Amazon RDS에서는 다음 Percona XtraBackup 소프트웨어 버전으로 생성된 백업 파일을 지원합니다.

  • MySQL 5.6에서는 Percona XtraBackup 버전 2.3을 사용하십시오.

Percona XtraBackup을 아직 설치하지 않은 경우 사용 가능한 최신 버전의 소프트웨어를 설치하는 것이 좋습니다. Percona XtraBackup은 Percona 웹 사이트에서 다운로드할 수 있습니다.

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

Percona XtraBackup을 사용한 데이터베이스 백업에 대한 자세한 내용은 Percona 웹 사이트의 Percona XtraBackup - 설명서innobackupex 스크립트를 참조하십시오.

Percona XtraBackup을 사용하여 전체 백업 만들기

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

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

innobackupex --user=<myuser> --password=<password> --no-timestamp /on-premises/s3-restore/backup

백업을 파일 하나로 압축하려면(필요하면 나중에 분할 가능) 다음 형식 중 하나로 백업을 저장하면 됩니다.

  • Gzip(.gz)

  • tar(.tar)

  • Percona xbstream(.xbstream)

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

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

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

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

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

innobackupex --stream=xbstream \ /on-premises/s3-restore/backup | split -d --bytes=500MB \ - /on-premises/s3-restore/backup/backup.xbstream

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

이미 Percona XtraBackup을 사용하여 MySQL 데이터베이스 파일의 전체 및 증분 백업을 수행 중인 경우 전체 백업을 만들고 백업 파일을 Amazon S3로 업로드할 필요가 없습니다. 대신, 기존 백업 디렉터리 및 파일을 Amazon S3 버킷으로 복사하여 시간을 크게 절약할 수 있습니다. Percona XtraBackup을 사용한 증분 백업 만들기에 대한 자세한 내용은 Incremental Backups with innobackupex를 참조하십시오.

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

Percona XtraBackup의 백업 고려 사항

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

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

Amazon RDS에서는 Percona XtraBackup을 사용하여 부분 백업을 만들 수 없습니다. 데이터베이스의 소스 파일을 백업할 때 --include, --tables-file 또는 --databases 옵션을 사용하여 부분 백업을 만들 수 없습니다.

Amazon RDS에서는 --no-timestamp 옵션을 포함 또는 포함하지 않은 Percona XtraBackup을 사용하여 생성된 증분 백업을 지원합니다. 증분 백업 디렉터리 구조의 깊이가 줄어들도록 --no-timestamp 옵션을 사용하는 것이 좋습니다.

수동으로 IAM 역할 만들기

IAM 역할이 없는 경우에는 수동으로 새 역할을 만들 수 있습니다. 또는 AWS Management 콘솔을 사용하여 데이터베이스를 복원할 때 마법사로 새 IAM 역할이 생성되도록 할 수도 있습니다. 새 IAM 역할을 생성하려면 AWS Management 콘솔의 절차를 따르십시오.

Amazon S3에서 데이터베이스를 가져오기 위해 새 IAM 역할을 수동으로 생성하려면 Amazon RDS 서비스에서 Amazon S3 버킷으로 권한을 위임하기 위한 역할을 생성합니다. IAM 역할을 만들 때 신뢰 및 권한 정책을 연결합니다. Amazon S3에서 백업 파일을 가져오려는 경우 다음 예제와 비슷한 신뢰 및 권한 정책을 사용합니다. 역할을 만드는 방법에 대한 자세한 내용은 AWS 서비스에 대한 권한을 위임할 역할 생성을 참조하십시오.

또는 AWS Management 콘솔을 사용하여 데이터베이스를 복원할 때 마법사로 새 IAM 역할이 생성되도록 할 수도 있습니다. 새 IAM 역할을 생성하려면 AWS Management 콘솔의 절차를 따르십시오.

신뢰 및 권한 정책에 따라 ARN(Amazon 리소스 이름)을 제공해야 합니다. ARN 형식에 대한 자세한 내용은 ARN(Amazon 리소스 이름) 및 AWS 서비스 네임스페이스를 참조하십시오.

예 Amazon S3에서 가져오기 위한 신뢰 정책

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

예 Amazon S3 — IAM 사용자 권한에서 가져오기 위한 권한 정책

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

예 Amazon S3 — 역할 권한에서 가져오기 위한 권한 정책

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": "arn:aws:s3:::bucket_name/prefix*" } ] }

참고

파일 이름 접두사를 포함하는 경우 접두사 다음에 별표(*)를 포함합니다. 접두사를 지정하지 않으려면 별표만 지정하면 됩니다.

AWS Management 콘솔

Amazon S3에서 새 MySQL DB 인스턴스로 데이터를 가져오려면

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

  2. Amazon RDS 콘솔의 오른쪽 위 모서리에서 DB 인스턴스를 만들 AWS 리전을 선택합니다. 데이터베이스 백업이 포함된 Amazon S3 버킷과 동일한 AWS 리전을 선택합니다.

  3. 탐색 창에서 Instances를 선택합니다.

  4. [Restore from S3]을 선택하여 마법사를 실행합니다.

    [Select engine] 페이지에서 마법사가 열립니다.

  5. [Select engine] 페이지에서 MySQL 아이콘을 선택하고 [Next]를 선택합니다.

    [Specify source backup details] 페이지가 나타납니다.

     원본 데이터베이스 백업의 세부 정보를 지정한 페이지
  6. [Specify source backup details] 페이지에서 백업 정보를 지정합니다.

    1. [Source engine]에서 [mysql]을 선택합니다.

    2. [Source engine version]에서 원본 데이터베이스의 MySQL 버전을 선택합니다.

    3. [S3 bucket]에서 Amazon S3 버킷을 선택합니다.

    4. (선택 사항) [S3 folder path prefix]에서 Amazon S3 버킷에 저장되는 파일의 파일 경로 접두사를 입력합니다. 접두사를 지정하지 않는 경우, RDS는 S3 버킷의 루트 폴더에 있는 모든 파일과 폴더를 사용하여 DB 인스턴스를 만듭니다. 접두사를 지정하는 경우 RDS는 파일의 경로가 지정된 접두사로 시작하는 S3 버킷의 파일과 폴더를 사용하여 DB 인스턴스를 만듭니다. 예를 들어 이름이 backups인 하위 폴더의 S3에 백업 파일을 저장했고 여러 세트의 백업 파일이 각각 자체 디렉터리(gzip_backup1, gzip_backup2 등)에 들어 있다고 가정해봅시다. 이 경우 gzip_backup1 폴더의 파일에서 복원하려면 backups/gzip_backup1의 접두사를 지정합니다.

    5. [Create a new role]에서 [Yes]를 선택해 계정에 새 IAM 역할을 생성하거나 [No]를 선택해 기존 IAM 역할을 선택합니다.

    6. [IAM role]에서 기존 IAM 역할을 선택하거나 새 IAM 역할의 이름을 지정합니다. [Create a New Role]에서 [Yes]를 선택하여 새 IAM 역할을 생성하도록 할 수 있습니다.

  7. [Next]를 선택하여 계속 진행합니다. [Specify DB Details] 페이지가 나타납니다.

    [Specify DB details] 페이지에서 DB 인스턴스 정보를 지정합니다. 각 설정에 대한 자세한 내용은 MySQL DB 인스턴스 설정 단원을 참조하십시오.

    참고

    새 DB 인스턴스에 충분한 메모리를 할당해야 복원에 성공할 수 있습니다. 또한 나중을 대비하여 추가 메모리를 할당할 수도 있습니다.

  8. [Next]를 선택하여 계속 진행합니다. [Configure advanced settings] 페이지가 나타납니다.

    Amazon RDS가 DB 인스턴스를 시작하는 데 필요한 추가 정보를 입력합니다. 각 설정에 대한 자세한 내용은 MySQL DB 인스턴스 설정 단원을 참조하십시오.

  9. [Launch DB instance]를 선택합니다.

CLI

AWS CLI를 사용하여 Amazon S3에서 새 MySQL DB 인스턴스로 데이터를 가져오려면 다음 파라미터와 함께 restore-db-instance-from-s3 명령을 호출하십시오. 각 설정에 대한 자세한 내용은 MySQL DB 인스턴스 설정 단원을 참조하십시오.

참고

새 DB 인스턴스에 충분한 메모리를 할당해야 복원에 성공할 수 있습니다. 또한 나중을 대비하여 추가 메모리를 할당할 수도 있습니다.

  • --allocated-storage

  • --db-instance-identifier

  • --db-instance-class

  • --engine

  • --master-user-name

  • --master-user-password

  • --s3-bucket-name

  • --s3-ingestion-role-arn

  • --s3-prefix

  • --source-engine

  • --source-engine-version

Linux, OS X, Unix의 경우:

aws rds restore-db-instance-from-s3 \ --allocated-storage 250 \ --db-instance-identifier myidentifier \ --db-instance-class db.m4.large \ --engine mysql \ --master-user-name masterawsuser \ --master-user-password masteruserpassword \ --s3-bucket-name mybucket \ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename \ --s3-prefix bucketprefix \ --source-engine mysql \ --source-engine-version 5.6.27

Windows의 경우:

aws rds restore-db-instance-from-s3 ^ --allocated-storage 250 ^ --db-instance-identifier myidentifier ^ --db-instance-class db.m4.large ^ --engine mysql ^ --master-user-name masterawsuser ^ --master-user-password masteruserpassword ^ --s3-bucket-name mybucket ^ --s3-ingestion-role-arn arn:aws:iam::account-number:role/rolename ^ --s3-prefix bucketprefix ^ --source-engine mysql ^ --source-engine-version 5.6.27

API

Amazon RDS API를 사용하여 Amazon S3에서 새 MySQL DB 인스턴스로 데이터를 가져오려면 RestoreDBInstanceFromS3 작업을 호출하십시오.

관련 주제