외부 MariaDB 또는 MySQL 데이터베이스에서 RDS for MariaDB 또는 MySQL 또는 RDS for MySQL DB 인스턴스로 데이터 가져오기 - Amazon Relational Database Service

외부 MariaDB 또는 MySQL 데이터베이스에서 RDS for MariaDB 또는 MySQL 또는 RDS for MySQL DB 인스턴스로 데이터 가져오기

기존 MySQL 또는 MariaDB 데이터베이스에서 MySQL 또는 MariaDB DB 인스턴스로 데이터를 가져올 수도 있습니다. 이렇게 하려면 mysqldump를 사용하여 데이터베이스를 복사하고 MySQL 또는 MariaDB DB 인스턴스에 바로 파이프합니다. mysqldump 명령줄 유틸리티는 한 MySQL 또는 MariaDB 서버에서 다른 MySQL 또는 MariaDB 서버로 데이터를 전송하고 백업본을 만드는 데 흔히 사용됩니다. 이 유틸리티는 MySQL 및 MariaDB 클라이언트 소프트웨어와 함께 포함되어 있습니다.

참고

MySQL DB 인스턴스에 많은 양의 데이터를 가져와서 내보내는 경우 xtrabackup 백업 파일 및 Amazon S3를 사용하여 Amazon RDS 내부 및 외부로 데이터를 더 빠르고 안정적으로 이동할 수 있습니다. 자세한 내용은 MySQL DB 인스턴스로 백업 복원 섹션을 참조하세요.

외부 데이터베이스에서 Amazon RDS DB 인스턴스로 데이터를 이동하는 일반적인 mysqldump 명령은 다음과 같습니다.

mysqldump -u local_user \ --databases database_name \ --single-transaction \ --compress \ --order-by-primary \ -plocal_password | mysql -u RDS_user \ --port=port_number \ --host=host_name \ -pRDS_password
중요

-p 옵션과 입력한 암호 사이에 공백이 없어야 합니다.

보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.

다음 권장 사항과 고려 사항을 잘 파악하고 있어야 합니다.

  • 덤프 파일에서 다음 스키마를 제외합니다. sys, performance_schemainformation_schema. mysqldump 유틸리티는 기본적으로 이러한 스키마를 제외합니다.

  • 사용자 및 권한을 마이그레이션해야 하는 경우 이를 다시 생성하는 데이터 제어 언어(DCL)를 생성하는 도구 사용을 고려합니다. 예를 들어 pt-show-grants 유틸리티가 있습니다.

  • 가져오기를 수행하려면 사용자가 DB 인스턴스에 액세스할 수 있어야 합니다. 자세한 내용은 보안 그룹을 통한 액세스 제어 섹션을 참조하세요.

사용되는 파라미터는 다음과 같습니다.

  • -u local_user – 사용자 이름을 지정하기 위해 사용합니다. 이 파라미터를 처음 사용할 때, 로컬 MySQL 또는 MariaDB 데이터베이스에서 --databases 파라미터로 식별되는 사용자 계정 이름을 지정합니다.

  • --databases database_name – 로컬 MySQL 또는 MariaDB 인스턴스에서 Amazon RDS로 가져오려는 데이터베이스 이름을 지정합니다.

  • --single-transaction – 로컬 데이터베이스에서 로드한 모든 데이터가 단일 시점에서 일치하는지 확인하기 위해 사용합니다. mysqldump가 데이터를 읽는 동안 데이터를 변경하는 다른 프로세스가 있는 경우, 이 파라미터를 사용하여 데이터 무결성을 유지합니다.

  • --compress – 데이터를 Amazon RDS로 전송하기 전에 로컬 데이터베이스에서 데이터를 압축하여 네트워크 대역폭 사용을 줄이기 위해 사용합니다.

  • --order-by-primary – 기본 키를 기준으로 각 테이블의 데이터를 정렬하여 로드 시간을 줄이기 위해 사용합니다.

  • -plocal_password – 암호를 지정하기 위해 사용합니다. 이 파라미터를 처음 사용할 때, 첫 번째 -u 파라미터로 식별되는 사용자 계정 암호를 지정합니다.

  • -u RDS_user – 사용자 이름을 지정하기 위해 사용합니다. 이 파라미터를 두 번째로 사용할 때, MySQL용 기본 데이터베이스 또는 MariaDB DB 인스턴스에서 --host 파라미터로 식별되는 사용자 계정 이름을 지정합니다.

  • --port port_number - MySQL 또는 MariaDB DB 인스턴스의 포트를 지정하기 위해 사용합니다. 인스턴스를 생성할 때 값을 변경하지 않는 한, 기본값은 3306입니다.

  • --host host_name - Amazon RDS DB 인스턴스 엔드포인트의 도메인 이름 시스템(DNS) 이름을 지정하기 위해 사용합니다(예:myinstance.123456789012.us-east-1.rds.amazonaws.com). Amazon RDS Management Console의 인스턴스 세부 정보에서 엔드포인트 값을 찾을 수 있습니다.

  • -pRDS_password – 암호를 지정하기 위해 사용합니다. 이 파라미터를 두 번째로 사용할 때, 두 번째 -u 파라미터로 식별되는 사용자 계정 암호를 지정합니다.

Amazon RDS 데이터베이스에서 저장 프로시저, 트리거, 함수 또는 이벤트를 수동으로 만들어야 합니다. 복사 중인 데이터베이스에 이런 객체가 하나라도 있는 경우에는 mysqldump를 실행할 때 이런 객체를 제외합니다. 그렇게 하면 mysqldump 명령(--routines=0 --triggers=0 --events=0)을 사용하여 다음과 같은 파라미터를 포함합니다.

다음 예제에서는 로컬 호스트에 있는 world 샘플 데이터베이스를 MySQL DB 인스턴스로 복사합니다.

Linux, macOS 또는 Unix 대상:

sudo mysqldump -u localuser \ --databases world \ --single-transaction \ --compress \ --order-by-primary \ --routines=0 \ --triggers=0 \ --events=0 \ -plocalpassword | mysql -u rdsuser \ --port=3306 \ --host=myinstance.123456789012.us-east-1.rds.amazonaws.com \ -prdspassword

Windows의 경우, 다음 명령은 Windows 프로그램 메뉴에서 명령 프롬프트(Command Prompt)를 마우스 오른쪽 버튼으로 클릭하고 관리자 권한으로 실행(Run as administrator)을 선택하여 열린 명령 프롬프트 창에서 실행해야 합니다.

mysqldump -u localuser ^ --databases world ^ --single-transaction ^ --compress ^ --order-by-primary ^ --routines=0 ^ --triggers=0 ^ --events=0 ^ -plocalpassword | mysql -u rdsuser ^ --port=3306 ^ --host=myinstance.123456789012.us-east-1.rds.amazonaws.com ^ -prdspassword
참고

보안 모범 사례로 여기에 표시된 프롬프트 이외의 보안 인증 정보를 지정하는 것이 좋습니다.