mysqldump 및 mysqlpump - AWS 권장 가이드

mysqldump 및 mysqlpump

mysqldumpmysqlpump는 MySQL용 네이티브 데이터베이스 백업 도구입니다. MariaDB는 mysqldump를 지원하지만 mysqlpump는 지원하지 않습니다. 이러한 두 도구 모두 논리적 백업을 생성하며 MySQL 클라이언트 프로그램의 일부입니다. mysqldump는 단일 스레드 처리를 지원합니다. mysqlpump는 데이터베이스 및 데이터베이스 내 객체의 병렬화를 지원하여 덤프 프로세스의 속도를 높입니다. MySQL 버전 5.7.8에 도입되었습니다. MySQL 버전 8.4에서는 mysqlpump가 제거되었습니다.

다음 다이어그램에서는 mysqldump 또는 mysqlpump 백업 파일을 사용하여 데이터베이스를 마이그레이션하는 데 수반되는 상위 수준 단계를 보여줍니다.

mysqldump 또는 mysqlpump 백업 파일을 마이그레이션하고 AWS DB 인스턴스에서 복원하는 다이어그램.

다음은 mysqldump 또는 mysqlpump를 사용하여 데이터베이스를 AWS 클라우드로 마이그레이션하는 단계입니다.

  1. 온프레미스 서버에 MySQL Shell을 설치하세요. 관련 지침은 MySQL 설명서의 Installing MySQL Shell을 참조하세요. 그러면 mysqldump와 mysqlpump가 모두 설치됩니다.

  2. mysqldump 또는 mysqlpump를 사용하여 소스 온프레미스 데이터베이스의 백업을 생성하세요. 관련 지침은 MySQL 설명서의 mysqldumpmysqlpump를 참조하거나 MariaDB 설명서의 Making Backups with mysqldump를 참조하세요. MySQL 프로그램 간접 호출 및 옵션 지정에 대한 자세한 내용은Using MySQL programs를 참조하세요.

  3. 다음 방법 중 하나를 사용하여 백업 파일을 AWS 클라우드의 EC2 인스턴스로 이동하세요.

    접근 방식 3A - Amazon FSx 또는 Amazon Elastic File System(Amazon EFS) 파일 시스템을 데이터베이스 인스턴스를 실행하는 온프레미스 서버에 탑재합니다. AWS Direct Connect 또는 Site-to-Site VPN을 사용하여 연결을 설정할 수 있습니다. 데이터베이스를 탑재된 파일 공유에 직접 백업하거나 데이터베이스를 로컬 파일 시스템에 백업한 다음 탑재된 FSx 또는 EFS 볼륨에 업로드하여 두 단계로 백업을 수행할 수 있습니다. 그런 다음 온프레미스 서버에도 탑재된 Amazon FSx 또는 Amazon EFS 파일 시스템을 EC2 인스턴스에 탑재하세요.

    접근 방식 3B - AWS CLI, AWS SDK 또는 Amazon S3 REST API를 사용하여 백업 파일을 온프레미스 서버에서 S3 버킷으로 직접 이동합니다. 대상 S3 버킷이 데이터 센터와 멀리 떨어진에 AWS 리전에 있는 경우 Amazon S3 Transfer Acceleration을 사용하여 파일을 더 빠르게 전송할 수 있습니다. s3fs-fuse 파일 시스템을 사용하여 EC2 인스턴스에 S3 버킷을 탑재하세요.

    접근 방식 3C - 온프레미스 데이터 센터에 AWS DataSync 에이전트를 설치한 다음 AWS DataSync를 사용하여 백업 파일을 Amazon S3 버킷으로 이동합니다. s3fs-fuse 파일 시스템을 사용하여 EC2 인스턴스에 S3 버킷을 탑재하세요.

    참고

    Amazon S3 File Gateway를 사용하여 대용량 데이터베이스 백업 파일을 AWS 클라우드의 S3 버킷으로 전송할 수도 있습니다. 자세한 내용은 이 안내서의 Amazon S3 File Gateway를 사용하여 백업 파일 전송 섹션을 참조하세요.

  4. 네이티브 복원 방법을 사용하여 대상 데이터베이스에서 백업을 복원하세요. 관련 지침은 MySQL 설명서의 Reloading SQL-Format Backups를 참조하거나 MariaDB 설명서의 Restoring Data from Dump Files를 참조하세요.

  5. (선택 사항) 소스 데이터베이스와 대상 데이터베이스 인스턴스 간 복제를 설정할 수 있습니다. 바이너리 로그(binlog) 복제를 사용하여 가동 중지 시간을 줄일 수 있습니다. 자세한 내용은 다음 자료를 참조하세요.

장점

  • mysqldump 및 mysqlpump는 MySQL Server 설치에 포함됨

  • 이러한 도구에서 생성된 백업 파일은 더 읽기 쉬운 형식입니다.

  • 백업 파일을 복원하기 전에 표준 텍스트 편집기를 사용하여 결과 .sql 파일을 수정할 수 있습니다.

  • 특정 테이블, 데이터베이스 또는 특정 데이터 선택 항목을 백업할 수 있습니다.

  • mysqldump 및 mysqlpump는 시스템 아키텍처에 독립적입니다.

제한 사항

  • mysqldump는 단일 스레드 백업 프로세스입니다. 백업을 수행하는 성능은 작은 데이터베이스에서 적당하지만 백업 크기가 10GB보다 크면 비효율적일 수 있습니다.

  • 논리적 형식의 백업 파일은 특히 텍스트로 저장될 때 볼륨이 크며, 종종 생성 및 복원 속도가 느립니다.

  • 대상 DB 인스턴스에서 SQL 문을 다시 적용하려면 삽입, 인덱스 생성 및 참조 무결성 제약 조건 적용을 위해 집약적 디스크 I/O 및 CPU 처리가 필요하기 때문에 데이터 복원 속도가 느려질 수 있습니다.

  • mysqlpump 유틸리티는 MySQL 버전 5.7.8 이하 또는 버전 8.4 이상에서 지원되지 않습니다.

  • 기본적으로 mysqlpump는 performance_schema 또는 sys와 같은 시스템 데이터베이스를 백업하지 않습니다. 시스템 데이터베이스의 일부를 백업하려면 명령줄에 명시적으로 이름을 지정합니다.

  • mysqldump는 InnoDB CREATE TABLESPACE 문을 백업하지 않습니다.

참고

CREATE TABLESPACE 문 및 시스템 데이터베이스 백업은 MySQL 또는 MariaDB 데이터베이스 백업을 EC2 인스턴스로 복원하는 경우에만 유용합니다. 이러한 백업은 Amazon RDS 또는 Aurora에서 사용되지 않습니다.

모범 사례

  • 데이터베이스 백업을 복원하는 경우 대상 데이터베이스의 세션 수준에서 FOREIGN_KEY_CHECKS와 같은 키 검사를 비활성화합니다. 그러면 복원 속도가 빨라집니다.

  • 데이터베이스 사용자에게 백업을 생성하고 복원할 수 있는 충분한 권한이 있는지 확인합니다.