개요
Database Migration Service는 소스 데이터베이스에서 Cloud SQL 대상 데이터베이스로의 일회성 및 지속적 마이그레이션을 지원합니다.
MySQL에 지원되는 소스 데이터베이스는 다음과 같습니다.
- Amazon RDS 5.6, 5.7, 8.0
- 자체 관리형 MySQL (온프레미스 또는 완전히 제어하는 모든 Cloud VM) 5.5, 5.6, 5.7, 8.0
- MySQL용 Cloud SQL 5.6, 5.7, 8.0, 8.4
- Amazon Aurora 5.6, 5.7, 8.0
- MySQL용 Microsoft Azure Database 5.7, 8.0
MySQL 8.0 소스의 경우 Database Migration Service는 8.0.18, 8.0.26, 8.0.27, 8.0.28, 8.0.30, 8.0.31, 8.0.32, 8.0.33, 8.0.34, 8.0.35, 8.0.36, 8.0.37, 8.0.39, 8.0.40, 8.0.41과 같은 마이너 버전도 지원합니다.
소스 데이터베이스를 구성하려면 다음 단계를 완료하세요.
- Cloud SQL 소스: 비공개 IP 연결을 사용하는 Cloud SQL 인스턴스에서 RFC 1918 이외의 주소 IP 범위를 사용하는 Cloud SQL 인스턴스로 이전하는 경우 소스 Cloud SQL 인스턴스의 네트워크 구성에 RFC 1918 이외의 범위를 추가합니다. Cloud SQL 문서의 승인된 네트워크 구성을 참고하세요.
- 소스 데이터베이스에서 대상 데이터베이스로 데이터를 마이그레이션하기 전에 전체 덤프 단계에서 모든 데이터 정의 언어 (DDL) 쓰기 작업을 중지해야 합니다. 스크립트를 사용하여 DDL 작업이 중지되었는지 확인할 수 있습니다. 마이그레이션이 CDC 단계에 있으면 DDL 작업을 재개할 수 있습니다.
- 소스 데이터베이스에 사용자가 DEFINER 절로 정의한 메타데이터가 포함되어 있지 않은지 확인합니다. DEFINER 절이 있는 메타데이터가 포함된 MySQL 마이그레이션 작업 만들기 및 실행을 참고하세요.
- 소스 데이터베이스에
mysql
,performance_schema
,information_schema
,ndbinfo
또는sys
시스템 스키마의 테이블을 참조하는 객체가 포함되어 있는 경우 복제 데이터베이스에도 이러한 시스템 스키마 테이블이 포함되어 있는지 확인합니다.복제 데이터베이스에 이러한 테이블이 없으면 이전 작업이
Unknown table in system schema
오류와 함께 실패할 수 있습니다. - server-id 옵션은 1 이상의 값으로 설정해야 합니다. 자세한 내용은 복제 및 바이너리 로깅 옵션 및 변수를 참고하세요.
GTID_MODE
를ON
또는OFF
로 설정하여 전역 트랜잭션 ID (GTID) 로깅을 구성합니다.ON_PERMISSIVE
의GTID_MODE
값은 지원되지 않습니다.사용할 값은 이전 요구사항에 따라 다릅니다.
- 읽기 복제본이 사용 설정된
기존 대상 인스턴스로 이전하는 경우
GTID_MODE
를ON
로 설정합니다. - 수동 덤프를 사용하여 데이터를 이전하는 경우
GTID_MODE
를ON
로 설정합니다.
GTID_MODE
에 관한 자세한 내용은 전역 거래 ID 시스템 변수를 참고하세요.- 읽기 복제본이 사용 설정된
기존 대상 인스턴스로 이전하는 경우
-
소스 데이터베이스에 연결하는 데 사용되는 사용자 계정을 모든 위치에서 연결을 수락하도록 구성해야 합니다 (호스트 =
%
). 이후 단계에서 이 사용자에 대한 액세스를 제한할 수 있습니다.데이터베이스의 다른 항목이 손상될 가능성을 제한하려면 이 용도로 별도의 계정을 만드는 것이 좋습니다.
마이그레이션과 덤프 조합 유형에는 네 가지가 있습니다.
- 유형 1: 지속적 마이그레이션 및 관리형 덤프
- 유형 2: 지속적 마이그레이션 및 수동 덤프
- 유형 3: 일회성 마이그레이션 및 관리형 덤프
- 유형 4: 일회성 마이그레이션 및 수동 덤프
마이그레이션과 덤프 조합의 각 유형 권한은 아래 탭에 나열되어 있습니다.
유형 1
구성하는 사용자 계정에 다음 권한이 있어야 합니다.
REPLICATION SLAVE
EXECUTE
SELECT
SHOW VIEW
REPLICATION CLIENT
RELOAD
TRIGGER
- (Amazon RDS 및 Amazon Aurora에서만 마이그레이션)
LOCK TABLES
MySQL 버전 8.0 이상: 최적의 성능을 위해 이 계정에
BACKUP_ADMIN
권한을 부여하지 마세요.유형 2
구성하는 사용자 계정에 다음 권한이 있어야 합니다.
REPLICATION SLAVE
EXECUTE
유형 3
구성하는 사용자 계정에 다음 권한이 있어야 합니다.
SELECT
SHOW VIEW
TRIGGER
- (Amazon RDS 및 Amazon Aurora에서만 마이그레이션)
LOCK TABLES
- (
GTID_MODE = ON
설정으로만 소스에서 마이그레이션하는 경우)RELOAD
MySQL 버전 8.0 이상: 최적의 성능을 위해 이 계정에
BACKUP_ADMIN
권한을 부여하지 마세요.유형 4
필요한 권한이 없습니다.
- 바이너리 로그를 구성하기 전에 다음을 확인하세요.
- 소스 데이터베이스에 바이너리 로그를 사용 설정합니다.
- 행 기반 바이너리 로깅을 사용합니다.
- 데이터베이스 마이그레이션을 지원하기에 충분한 기간 동안 바이너리 로그를 보관합니다. 일반적으로 일주일 정도면 충분합니다.
바이너리 로그를 구성하려면 소스의 섹션을 펼칩니다.
자체 호스팅 MySQL
MySQL 버전에 따라 복제가 완료될 수 있는 충분한 시간을 지정합니다.
- MySQL 5.5 - 5.7:
expire_logs_days
- MySQL 8.0:
expire_logs_days
,binlog_expire_logs_seconds
MySQL용 Microsoft Azure Database
MySQL용 Microsoft Azure Database에서는 기본적으로 바이너리 로깅이 사용 설정되어 있습니다. 사용 설정할 필요는 없습니다. 자세한 내용은 Microsoft 문서를 참고하세요.
다음과 같은 필수 매개변수를 구성합니다.
binlog_expire_logs_seconds
를 데이터베이스 마이그레이션을 지원하기에 충분한 기간으로 설정합니다.자세한 내용은 PostgreSQL용 Azure Database에서 서버 파라미터 구성 및 Microsoft 문서의
binlog_expire_logs_seconds
매개변수를 참고하세요.- 변경사항이 적용되도록 서버를 다시 시작합니다.
Amazon RDS
Amazon RDS의 경우
binlog retention hours
매개변수를 구성하여 매개변수 그룹에서 행 기반 구성을 설정합니다. 이 매개변수는 Amazon RDS가 바이너리 로그 파일을 보관해야 하는 시간을 지정하는 데 사용됩니다.Amazon RDS에서 바이너리 로그의 보관 기간을 설정하려면
mysql.rds_set_configuration
저장 프로시저를 사용하고 복제가 발생하기에 충분한 시간을 지정합니다. 예를 들면 다음과 같습니다.call mysql.rds_set_configuration('binlog retention hours',168);
Amazon Aurora
Amazon Aurora의 경우 다음 단계를 따르세요.
- MySQL 데이터베이스에 바이너리 로깅을 사용 설정합니다.
- 바이너리 로그 보관 기간을 설정합니다.
mysql> call mysql.rds_set_configuration('binlog retention hours', 168);
- 변경사항이 적용되도록 서버를 다시 시작합니다.
- 모든 테이블(시스템 데이터베이스의 테이블 제외)이 InnoDB 스토리지 엔진을 사용합니다.
- 소스 데이터베이스에 연결하는 데 사용된 사용자 계정의 비밀번호는 32자(영문 기준) 이하여야 합니다. 이 문제는 MySQL 복제에만 해당합니다.
MySQL용 Microsoft Azure Database 소스만 해당:
require_secure_transport
설정의 값을 확인합니다.기본적으로 Microsoft Azure 데이터베이스에서는 모든 수신 연결에 SSL/TLS 암호화가 필요합니다.
require_secure_transport
값에 따라 소스 연결 프로필을 만들 때 다음 암호화 설정 중 하나를 사용합니다.require_secure_transport
가on
로 설정된 경우 기본, TLS 또는 mTLS를 선택합니다.require_secure_transport
이off
로 설정된 경우 없음을 선택합니다.