이 페이지에서는 PostgreSQL용 Cloud SQL로의 동종 PostgreSQL 마이그레이션을 위한 빠른 시작 마이그레이션을 수행하는 방법을 설명합니다.
개요
빠른 시작 마이그레이션은 동종 PostgreSQL 시나리오를 위한 가벼운 연속 마이그레이션 흐름입니다. 빠른 시작 마이그레이션을 사용하면 Database Migration Service에서 데이터베이스를 마이그레이션하는 데 필요한 모든 항목(네트워킹 구성요소(네트워크 연결, 서브넷, 비공개 연결 구성), 연결 프로필, 마이그레이션 작업)을 자동으로 설정할 수 있습니다.
빠른 시작 마이그레이션을 사용하면 데이터를 기존 Cloud SQL 인스턴스로 이동하거나 마이그레이션을 구성할 때 새 인스턴스를 만들 수 있습니다. 빠른 시작 마이그레이션은 다음과 같은 경우에 가장 적합합니다.
- 데이터 덤프 동시 로드 설정을 정밀하게 제어할 필요가 없는 기본 마이그레이션
- 한 Google Cloud 프로젝트에서 다른 프로젝트로 데이터베이스 마이그레이션 빠른 시작 마이그레이션을 구성할 때 소스와 다른 프로젝트에 대상 인스턴스를 만들고 다른 프로젝트의 가상 프라이빗 클라우드 (VPC) 네트워크에 네트워크 연결 및 서브넷을 만들도록 Database Migration Service를 설정할 수 있습니다.
-
Compute Engine의 자체 관리형 데이터베이스 또는 비공개 네트워킹에 사용 설정된 PostgreSQL용 Cloud SQL 인스턴스와 같이 Google Cloud가상 프라이빗 클라우드 (VPC) 네트워크에 비공개 IP 주소가 있는 소스에서 마이그레이션합니다.
Google Cloud 외부에 호스팅된 소스는 VPC 네트워크 내의 비공개 IP 주소에서 연결할 수 있도록 추가 네트워크 구성요소(예: Cloud VPN 연결)가 필요할 수 있습니다.
- 소스 데이터베이스에는 VPC 네트워크에 할당된 비공개 IP 주소가 있어야 합니다. Database Migration Service는 Private Service Connect 인터페이스 (네트워크 연결)를 사용하여 소스 데이터베이스에 연결합니다. 빠른 시작 마이그레이션에는 공개 IP 연결이 지원되지 않습니다.
빠른 시작 마이그레이션에 대한 자세한 내용은 기본 Database Migration Service 문서의 빠른 시작 마이그레이션 개요를 참조하세요.
시작하기 전에
- 빠른 시작 마이그레이션이 시나리오를 완전히 지원할 수 있는지 확인합니다. 빠른 시작 마이그레이션 제한사항을 참조하세요.
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.
- Database Migration Service, Compute Engine, Network Connectivity Center, Cloud SQL Admin API를 사용 설정합니다.
필요한 역할
Database Migration Service를 사용하여 Cloud SQL로 빠른 시작 마이그레이션을 실행하는 데 필요한 권한을 얻으려면 관리자에게 관련 프로젝트의 마이그레이션에 관련된 계정에 필요한 Identity and Access Management (IAM) 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 IAM 문서의 액세스 관리를 참조하세요.
원본 프로젝트의 역할 및 권한
소스 데이터베이스가 있는 Google Cloud 프로젝트의 특정 계정에 다음 역할을 부여합니다.
- 마이그레이션을 수행하는 사용자 계정의 경우:
Compute 네트워크 관리자 역할 (
roles/compute.networkAdmin) - 대상 프로젝트의 Database Migration Service 서비스 계정:
Compute 네트워크 뷰어 (
roles/compute.networkViewer)Database Migration Service 서비스 계정은 Database Migration Service API를 사용 설정할 때 생성됩니다. 이 계정과 연결된 이메일 주소가 자동으로 생성되며 변경할 수 없습니다. 이 이메일 주소는 다음 형식을 사용합니다.
service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.iam.gserviceaccount.com
이러한 사전 정의된 역할에는 Database Migration Service를 사용한 빠른 시작 마이그레이션의 일부로 소스 데이터베이스 프로젝트에서 연결을 설정하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 (소스) 섹션을 펼치세요.
필수 권한 (소스)
Database Migration Service를 사용하여 동종 빠른 시작 마이그레이션을 수행하려면 다음 권한이 필요합니다.
이전을 수행하는 사용자 계정의 경우:
compute.networks.*compute.subnetworks.*compute.networkAttachments.*
대상 프로젝트의 Database Migration Service 서비스 계정: compute.networkAttachments.get
대상 프로젝트의 역할 및 권한
대상 데이터베이스가 있는 Google Cloud 프로젝트에서 마이그레이션을 수행하는 사용자 계정에 다음 역할을 부여합니다.
-
데이터베이스 마이그레이션 관리자 (
roles/datamigration.admin) -
Cloud SQL 관리자 (
roles/cloudsql.admin)
이러한 사전 정의된 역할에는 Database Migration Service를 사용한 빠른 시작 마이그레이션의 일부로 대상 데이터베이스 프로젝트에 필요한 마이그레이션 구성요소를 설정하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 (대상) 섹션을 펼치세요.
필요한 권한 (대상)
Database Migration Service를 사용하여 동종 빠른 시작 마이그레이션을 수행하려면 다음 권한이 필요합니다.
datamigration.*cloudsql.instances.createcloudsql.instances.deletecloudsql.instances.getcloudsql.instances.listcloudsql.instances.updatecloudsql.instances.connectcloudsql.instances.executeSqlcloudsql.instances.exportcloudsql.instances.importcloudsql.instances.logincloudsql.operations.getcloudsql.users.getcloudsql.users.listcloudsql.users.createcloudsql.users.updatecloudsql.users.delete
소스 데이터베이스 구성
소스 PostgreSQL 데이터베이스를 구성하려면 다음을 수행합니다.
- 인스턴스에 전용 마이그레이션 사용자 계정을 만듭니다.
- PostgreSQL용 Cloud SQL 소스의 경우 Cloud SQL 문서의 사용자 만들기를 참조하세요.
- 다른 소스의 경우 데이터베이스 제공업체 문서 또는 PostgreSQL 문서의 사용자 만들기 및 관리를 참조하세요.
- 전용 마이그레이션 사용자 계정에 필요한 권한을 할당합니다.
마이그레이션하려는 각 데이터베이스에 대해 다음 명령어를 실행합니다.
-- Grant the REPLICATION attribute ALTER ROLE MIGRATION_USER REPLICATION; -- Grant database-level permissions. -- Repeat for each database you want to migrate. GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER; -- Grant schema-level usage. -- Repeat for each schema in each database you want to migrate. GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;
다음을 바꿉니다.
- MIGRATION_USER을 이전 사용자 계정의 이름으로 바꿉니다.
- DATABASE_NAME을 마이그레이션할 데이터베이스의 이름으로 바꿉니다.
- SCHEMA_NAME: 마이그레이션할 데이터베이스의 스키마 이름
- 마이그레이션 사용자 계정에는 마이그레이션하는 테이블에 대한 소유권 액세스 권한이 있어야 합니다. 이 수준의 액세스 권한을 부여하려면 다음 중 하나를 수행합니다.
- PostgreSQL용 Cloud SQL 이외의 소스만 해당: 마이그레이션 계정에
SUPERUSERPostgreSQL 역할을 할당합니다. - 모든 소스: 테이블을 소유한 사용자 그룹에 마이그레이션 사용자 계정을 추가합니다.
다음 명령어를 실행합니다.
-- Grant table ownership. GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;
다음을 바꿉니다.
- TABLE_OWNER_GROUP_NAME: 이전하려는 각 테이블을 소유한 사용자 그룹의 이름
- MIGRATION_USER을 이전 사용자 계정의 이름으로 바꿉니다.
- PostgreSQL용 Cloud SQL 이외의 소스만 해당: 마이그레이션 계정에
- 기본 키가 없는 테이블의 경우: Database Migration Service는 변경 데이터 캡처 (CDC) 단계에서 기본 키가 없는 테이블의
UPDATE또는DELETE작업을 복제하지 않습니다. 복제에 이러한 작업을 포함하려면REPLICA IDENTITY를 사용하여 기본 키가 없는 테이블을 수정합니다.ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL; ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;
다음을 바꿉니다.
- TABLE_NAME는 기본 키가 없는 테이블의 이름입니다.
- INDEX_NAME는 기본 키가 없는 테이블의 행을 추적할 수 있는 고유 색인입니다.
- 데이터베이스 플래그를 사용하여 복제 설정을 구성합니다.
자체 관리형 소스
데이터베이스 플래그의 변경사항을 저장하려면 데이터베이스를 완전히 다시 시작해야 합니다. 다음 예시에서는 SQL 쿼리를 사용하여 플래그 값을 변경합니다. SQL 쿼리를 직접 실행할 수 없는 경우 제공업체 문서에서 이러한 플래그를 변경하는 단계를 참조하세요.
wal_level매개변수를logical로 설정합니다. 다음 명령어를 실행합니다.ALTER SYSTEM SET wal_level = 'logical';
wal_sender_timeout매개변수를0로 설정합니다. 이 값은 비활성 복제 연결을 종료하는 데 사용되는 제한 시간 메커니즘을 중지합니다. 다음 명령어를 실행합니다.ALTER SYSTEM SET wal_sender_timeout = 0;
max_replication_slots매개변수를 사용하여 최대 복제 슬롯 수를 구성합니다. 이 매개변수는 최소한 마이그레이션 작업당 마이그레이션하는 데이터베이스 수와 테이블 동기화를 위한 약간의 비축분을 더한 값으로 설정해야 합니다.예를 들어 5개의 데이터베이스를 마이그레이션하고 소스 인스턴스에 대해 2개의 마이그레이션 작업이 생성된 경우 복제 슬롯 수는 최소
5 * 2 = 10개에 이미 사용 중인 복제 슬롯 수를 더한 값이어야 합니다.이 매개변수를 설정하려면 다음 명령어를 실행합니다.
여기서 NUMBER_OF_SLOTS는 최대 복제 슬롯 수를 나타냅니다.ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
max_wal_senders파라미터를 최소한max_replication_slots와 동일한 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 구성합니다.예를 들어
max_replication_slots파라미터가10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는10 + 2 = 12개입니다.이 매개변수를 설정하려면 다음 명령어를 실행합니다.
여기서 NUMBER_OF_SENDERS는 동시에 실행되는 WAL 발신자 프로세스 수를 나타냅니다.ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
max_worker_processes를 마이그레이션하려는 데이터베이스 수에 인스턴스에서 이미 사용한max_worker_processes수를 더한 값 이상으로 설정합니다. 이 매개변수를 설정하려면 다음 명령어를 실행합니다. 여기서 NUMBER_OF_PROCESSES는 마이그레이션할 데이터베이스 수를 나타냅니다.ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
PostgreSQL용 Cloud SQL 소스
Cloud SQL 소스의 경우 Google Cloud 콘솔에서 데이터베이스 플래그를 구성합니다. 설정을 적용하려면 데이터베이스 플래그를 수정한 후 인스턴스를 다시 시작해야 합니다. Cloud SQL에서 데이터베이스 플래그를 설정하는 방법에 대한 자세한 내용은 Cloud SQL 문서의 데이터베이스 플래그 구성을 참조하세요.
cloudsql.logical_decoding플래그를on로 설정합니다. 이 플래그를 사용 설정하려면 설정을 적용하기 위해 인스턴스를 다시 시작해야 합니다.wal_sender_timeout매개변수를0로 설정합니다. 이 값은 비활성 복제 연결을 종료하는 데 사용되는 제한 시간 메커니즘을 중지합니다.max_replication_slots매개변수를 사용하여 최대 복제 슬롯 수를 구성합니다. 이 매개변수는 최소한 마이그레이션 작업당 마이그레이션하는 데이터베이스 수와 테이블 동기화를 위한 약간의 비축분을 더한 값으로 설정해야 합니다.예를 들어 5개의 데이터베이스를 마이그레이션하고 소스 인스턴스에 대해 2개의 마이그레이션 작업이 생성된 경우 복제 슬롯 수는 최소
5 * 2 = 10개에 이미 사용 중인 복제 슬롯 수를 더한 값이어야 합니다.max_wal_senders매개변수를 최소한max_replication_slots와 동일한 값에 인스턴스에서 이미 사용한 발신자 수를 더한 값으로 구성합니다.예를 들어
max_replication_slots파라미터가10으로 설정되어 있고 이미 발신자 2개를 사용 중인 경우 동시에 실행되는 WAL 발신자 프로세스 수는10 + 2 = 12개입니다.max_worker_processes를 마이그레이션하려는 데이터베이스 수에 인스턴스에서 이미 사용한max_worker_processes수를 더한 값 이상으로 설정합니다.
빠른 시작 마이그레이션 만들기 및 실행
콘솔
Google Cloud 콘솔을 사용하여 빠른 시작 마이그레이션을 만들고 실행하려면 다음을 수행합니다.
- Google Cloud 콘솔에서 시작하기 페이지로 이동합니다.
- 소스 엔진 메뉴에서 PostgreSQL을 선택합니다.
- 대상 엔진 메뉴에서 PostgreSQL용 Cloud SQL을 선택합니다.
PostgreSQL 마이그레이션 빠른 시작 소개 섹션이 표시됩니다.
- PostgreSQL 마이그레이션 빠른 시작 소개 섹션에서 이전 시작을 클릭합니다.
PostgreSQL용 Cloud SQL로 마이그레이션 페이지가 열립니다.
- 마이그레이션 구성 섹션에서 다음을 수행합니다.
- 대상 리전 메뉴에서 대상 Cloud SQL 인스턴스의 리전을 선택합니다.
- 마이그레이션 프리픽스 상자에 빠른 시작 마이그레이션을 위해 생성된 모든 마이그레이션 항목(연결 프로필, 비공개 연결 구성, 네트워크 연결 및 서브넷, 마이그레이션 작업)의 이름에 추가할 사람이 읽을 수 있는 문자열을 입력합니다.
- 구성 유형 메뉴에서 다음 중 하나를 선택합니다.
- 기존 연결 구성: Private Service Connect 인터페이스 메서드를 사용하는 네트워크 연결 및 비공개 연결 구성이 이미 있는 경우 이 옵션을 선택합니다. 이 옵션은 이전에 빠른 시작 마이그레이션을 사용했고 동일한 네트워킹 리소스를 다시 사용하려는 경우에 가장 적합합니다.
- 새 연결 구성: 이 옵션을 선택하여 소스 데이터베이스 VPC 네트워크에 새 네트워크 연결 및 네트워크 연결 서브넷을 만듭니다. 비공개 연결 구성은 대상 인스턴스와 동일한 프로젝트에 생성됩니다.
- 계속을 클릭합니다.
- 소스 연결 섹션에서 다음을 수행합니다.
- 소스 데이터베이스의 호스트 이름 또는 비공개 IP 주소를 입력합니다. 소스 데이터베이스 주소는 소스 VPC 네트워크에서 연결할 수 있어야 합니다.
- 호스트에 액세스하는 데 사용되는 포트를 입력합니다. 기본 PostgreSQL 포트는
5432입니다. - 소스 데이터베이스에서 전용 마이그레이션 계정의 사용자 이름과 비밀번호를 입력합니다.
- 암호화 유형 메뉴에서 다음 중 하나를 선택합니다.
- 없음: 소스 데이터베이스에 SSL/TLS 암호화 연결이 필요하지 않은 경우
- 필수: 소스 데이터베이스에 SSL/TLS로 암호화된 연결이 필요한 경우 이 옵션은 인증서 확인이 필요하지 않습니다.
- 마이그레이션할 데이터베이스 메뉴에서 맞춤설정을 클릭합니다. 측면 패널을 사용하여 Cloud SQL로 마이그레이션할 데이터베이스만 선택합니다.
- 계속을 클릭합니다.
- 대상 구성 섹션에서 새 대상 인스턴스를 만들거나 기존 인스턴스를 선택할 수 있습니다.
새 인스턴스
새 대상 인스턴스를 만들려면 다음을 수행합니다.
- 대상 인스턴스 유형 메뉴에서 새 인스턴스를 선택합니다.
Database Migration Service는 새 인스턴스에 기본 Cloud SQL 구성을 사용합니다. 맞춤설정을 클릭하여 머신 유형, 영역 가용성, 데이터 보호 설정과 같은 인스턴스 기능을 조정합니다. 인스턴스 구성에 대한 자세한 내용은 Cloud SQL 문서의 인스턴스 만들기를 참조하세요.
- 비밀번호 필드에 기본
postgres관리자 사용자의 비밀번호를 입력합니다. Database Migration Service는 이 사용자로 연결하여 데이터를 마이그레이션합니다.
기존 인스턴스
이미 존재하는 인스턴스로 데이터베이스를 마이그레이션할 수 있습니다. 대상 인스턴스에 Private Service Connect가 사용 설정되어 있고 mTLS 연결이 적용되지 않는지 확인합니다. 다음 단계를 따르세요.
- 대상 인스턴스 유형 메뉴에서 기존 인스턴스를 선택합니다.
- 기존 인스턴스 ID 메뉴에서 인스턴스 식별자를 선택합니다.
- 대상 인스턴스 유형 메뉴에서 새 인스턴스를 선택합니다.
- 이전 시작을 클릭합니다.
이제 Database Migration Service에서 마이그레이션 작업을 만들고 마이그레이션 프로세스를 시작합니다. Database Migration Service 마이그레이션 작업 세부정보에서 마이그레이션 진행 상황을 모니터링할 수 있습니다. 자세한 내용은 마이그레이션 작업 관리를 참조하세요.
gcloud
gcloud CLI를 사용하여 빠른 시작 마이그레이션을 만들고 실행하려면 다음을 수행합니다.
-
네트워크 연결을 구성합니다.
새 네트워크 연결을 만들지 아니면 기존 네트워크 연결을 재사용할지 결정합니다. 소스 데이터베이스 비공개 IP에 연결할 수 있는 네트워크에 네트워크 연결이 있어야 합니다.- 새 네트워크 연결을 만들려면 다음 명령어를 실행합니다 (클릭하여 전체 세부정보 펼치기).
gcloud compute network-attachments create아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- NETWORK_ATTACHMENT: 만들려는 네트워크 연결의 이름
- REGION을 네트워크 연결의 리전으로 바꿉니다.
- DEST_PROJECT_ID를 대상 프로젝트의 프로젝트 ID로 바꿉니다.
- SOURCE_PROJECT_ID를 소스 네트워크가 있는 프로젝트 ID로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud compute network-attachments create NETWORK_ATTACHMENT \ --region=REGION \ --connection-preference=ACCEPT_MANUAL \ --producer-accept-list=DEST_PROJECT_ID \ --subnets=default \ --project=SOURCE_PROJECT_ID
Windows(PowerShell)
gcloud compute network-attachments create NETWORK_ATTACHMENT ` --region=REGION ` --connection-preference=ACCEPT_MANUAL ` --producer-accept-list=DEST_PROJECT_ID ` --subnets=default ` --project=SOURCE_PROJECT_ID
Windows(cmd.exe)
gcloud compute network-attachments create NETWORK_ATTACHMENT ^ --region=REGION ^ --connection-preference=ACCEPT_MANUAL ^ --producer-accept-list=DEST_PROJECT_ID ^ --subnets=default ^ --project=SOURCE_PROJECT_ID
- 기존 네트워크 연결을 재사용하려면 다음 단계로 진행합니다.
- 새 네트워크 연결을 만들려면 다음 명령어를 실행합니다 (클릭하여 전체 세부정보 펼치기).
-
Database Migration Service 테넌트 프로젝트가 네트워크 연결에 액세스하도록 허용합니다.
네트워크 연결에서 Database Migration Service 테넌트 프로젝트의 연결을 허용해야 합니다. 다음 단계를 수행합니다.- 테스트 실행 비공개 연결 만들기를 수행하여 Database Migration Service 테넌트 프로젝트 ID를 가져옵니다 (펼치려면 클릭).
gcloud database-migration private-connections create --validate-only아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- PRIVATE_CONN을 비공개 연결 리소스 이름으로 바꿉니다.
- REGION을 비공개 연결의 리전으로 바꿉니다.
- NETWORK_ATTACHMENT_URI를 네트워크 연결의 URI로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration private-connections create PRIVATE_CONN \ --region=REGION \ --network-attachment=NETWORK_ATTACHMENT_URI \ --display-name=PRIVATE_CONN \ --format="value(metadata.metadata.tenant_project_id)" \ --validate-only
Windows(PowerShell)
gcloud database-migration private-connections create PRIVATE_CONN ` --region=REGION ` --network-attachment=NETWORK_ATTACHMENT_URI ` --display-name=PRIVATE_CONN ` --format="value(metadata.metadata.tenant_project_id)" ` --validate-only
Windows(cmd.exe)
gcloud database-migration private-connections create PRIVATE_CONN ^ --region=REGION ^ --network-attachment=NETWORK_ATTACHMENT_URI ^ --display-name=PRIVATE_CONN ^ --format="value(metadata.metadata.tenant_project_id)" ^ --validate-only
반환된 테넌트 프로젝트 ID를 저장하여 다음 명령어에 사용합니다.
- Database Migration Service 테넌트 프로젝트와 대상 프로젝트가 네트워크 연결에 연결하도록 허용합니다 (펼치려면 클릭).
gcloud compute network-attachments update아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- NETWORK_ATTACHMENT을 네트워크 연결 이름으로 바꿉니다.
- REGION을 리전으로 바꿉니다.
- DEST_PROJECT_ID를 대상 프로젝트의 프로젝트 ID로 바꿉니다.
- DMS_TENANT_ID를 검색된 Database Migration Service 테넌트 프로젝트 ID로 바꿉니다.
- SOURCE_PROJECT_ID를 소스 네트워크가 있는 프로젝트 ID로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud compute network-attachments update NETWORK_ATTACHMENT \ --region=REGION \ --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \ --project=SOURCE_PROJECT_ID
Windows(PowerShell)
gcloud compute network-attachments update NETWORK_ATTACHMENT ` --region=REGION ` --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ` --project=SOURCE_PROJECT_ID
Windows(cmd.exe)
gcloud compute network-attachments update NETWORK_ATTACHMENT ^ --region=REGION ^ --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^ --project=SOURCE_PROJECT_ID
- 테스트 실행 비공개 연결 만들기를 수행하여 Database Migration Service 테넌트 프로젝트 ID를 가져옵니다 (펼치려면 클릭).
-
Database Migration Service 비공개 연결 리소스를 만듭니다.
다음 명령어를 실행합니다 (클릭하여 펼치기).gcloud database-migration private-connections create아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- PRIVATE_CONN을 비공개 연결 리소스 이름으로 바꿉니다.
- REGION을 비공개 연결의 리전으로 바꿉니다.
- NETWORK_ATTACHMENT_URI를 네트워크 연결의 URI로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration private-connections create PRIVATE_CONN \ --region=REGION \ --network-attachment=NETWORK_ATTACHMENT_URI \ --display-name=PRIVATE_CONN
Windows(PowerShell)
gcloud database-migration private-connections create PRIVATE_CONN ` --region=REGION ` --network-attachment=NETWORK_ATTACHMENT_URI ` --display-name=PRIVATE_CONN
Windows(cmd.exe)
gcloud database-migration private-connections create PRIVATE_CONN ^ --region=REGION ^ --network-attachment=NETWORK_ATTACHMENT_URI ^ --display-name=PRIVATE_CONN
-
소스 연결 프로필을 만듭니다.
다음 명령어를 실행합니다 (클릭하여 펼치기).gcloud database-migration connection-profiles create postgresql이 샘플에서는 선택적
--no-async플래그를 사용하므로 모든 작업이 동기식으로 수행됩니다. 즉, 일부 명령어는 완료하는 데 시간이 걸릴 수 있습니다.--no-async플래그를 건너뛰어 명령어를 비동기식으로 실행할 수 있습니다. 이 경우gcloud database-migration operations describe명령어를 사용하여 작업이 성공했는지 확인해야 합니다.아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- SOURCE_CONN_ID를 소스 연결 프로필 식별자로 바꿉니다.
- REGION을 연결 프로필을 저장하려는 리전으로 바꿉니다.
- SOURCE_PRIVATE_IP를 소스 데이터베이스의 비공개 IP 주소로 바꿉니다.
- SOURCE_PORT: 소스 데이터베이스의 포트 (기본값은 5432)
- SOURCE_USER를 소스 데이터베이스의 마이그레이션 사용자 이름으로 바꿉니다.
- SOURCE_PASSWORD를 소스 데이터베이스에 있는 마이그레이션 사용자의 비밀번호로 바꿉니다.
- PRIVATE_CONN을 비공개 연결 리소스 이름으로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration connection-profiles create postgresql \ SOURCE_CONN_ID \ --region=REGION \ --role=SOURCE \ --host=SOURCE_PRIVATE_IP \ --port=SOURCE_PORT \ --username=SOURCE_USER \ --password=SOURCE_PASSWORD \ --private-connection=PRIVATE_CONN \ --no-async
Windows(PowerShell)
gcloud database-migration connection-profiles create postgresql ` SOURCE_CONN_ID ` --region=REGION ` --role=SOURCE ` --host=SOURCE_PRIVATE_IP ` --port=SOURCE_PORT ` --username=SOURCE_USER ` --password=SOURCE_PASSWORD ` --private-connection=PRIVATE_CONN ` --no-async
Windows(cmd.exe)
gcloud database-migration connection-profiles create postgresql ^ SOURCE_CONN_ID ^ --region=REGION ^ --role=SOURCE ^ --host=SOURCE_PRIVATE_IP ^ --port=SOURCE_PORT ^ --username=SOURCE_USER ^ --password=SOURCE_PASSWORD ^ --private-connection=PRIVATE_CONN ^ --no-async
-
대상 연결 프로필을 만듭니다.
새 Cloud SQL 인스턴스 또는 기존 Cloud SQL 인스턴스로 마이그레이션할지 여부에 따라 탭을 선택합니다.새 인스턴스
빠른 시작 마이그레이션에 새 대상 인스턴스를 사용하려면 먼저 Cloud SQL Google Cloud CLI로 인스턴스를 만든 후 대상 연결 프로필을 만듭니다. 다음 단계를 따르세요.
- Cloud SQL Google Cloud CLI를 사용하여
인스턴스를 만듭니다.
--enable-private-service-connect플래그를 사용하여 Private Service Connect에 대상 인스턴스를 사용 설정해야 합니다. 빠른 시작 마이그레이션은 Private Service Connect가 사용 설정된 인스턴스만 지원합니다. - 새 인스턴스의 대상 연결 프로필을 만듭니다.
전체 명령어 세부정보를 보려면 다음 섹션을 펼치세요.
gcloud database-migration connection-profiles create postgresql이 샘플에서는 선택적
--no-async플래그를 사용하므로 모든 작업이 동기식으로 수행됩니다. 즉, 일부 명령어는 완료하는 데 시간이 걸릴 수 있습니다.--no-async플래그를 건너뛰어 명령어를 비동기식으로 실행할 수 있습니다. 이 경우gcloud database-migration operations describe명령어를 사용하여 작업이 성공했는지 확인해야 합니다.아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- DEST_CONN_ID를 대상 연결 프로필 식별자로 바꿉니다.
- REGION: 연결 프로필을 저장하려는 리전 이 리전은 대상 인스턴스 리전과 동일해야 합니다.
- DEST_INSTANCE를 사전 생성된 대상 Cloud SQL 인스턴스의 ID로 바꿉니다.
- DEST_USER를 대상 데이터베이스의 마이그레이션 사용자 이름으로 바꿉니다.
- DEST_PASSWORD를 대상 데이터베이스의 마이그레이션 사용자 비밀번호로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --cloudsql-instance=DEST_INSTANCE \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows(PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --cloudsql-instance=DEST_INSTANCE ` --username=DEST_USER ` --password=DEST_PASSWORD ` --role=DESTINATION ` --no-async
Windows(cmd.exe)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^ --region=REGION ^ --cloudsql-instance=DEST_INSTANCE ^ --username=DEST_USER ^ --password=DEST_PASSWORD ^ --role=DESTINATION ^ --no-async
다음과 비슷한 응답이 표시됩니다.
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
기존 인스턴스
기존 대상 인스턴스로 마이그레이션하려면 미리 만든 인스턴스를 가리키는 연결 프로필을 만듭니다. 다음 명령어를 실행합니다 (클릭하여 펼치기).
gcloud database-migration connection-profiles create postgresql이 샘플에서는 선택적
--no-async플래그를 사용하므로 모든 작업이 동기식으로 수행됩니다. 즉, 일부 명령어는 완료하는 데 시간이 걸릴 수 있습니다.--no-async플래그를 건너뛰어 명령어를 비동기식으로 실행할 수 있습니다. 이 경우gcloud database-migration operations describe명령어를 사용하여 작업이 성공했는지 확인해야 합니다.아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- DEST_CONN_ID를 대상 연결 프로필 식별자로 바꿉니다.
- REGION: 연결 프로필을 저장하려는 리전 이 리전은 대상 인스턴스 리전과 동일해야 합니다.
- DEST_INSTANCE를 사전 생성된 대상 Cloud SQL 인스턴스의 ID로 바꿉니다.
- DEST_USER를 대상 데이터베이스의 마이그레이션 사용자 이름으로 바꿉니다.
- DEST_PASSWORD를 대상 데이터베이스의 마이그레이션 사용자 비밀번호로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --cloudsql-instance=DEST_INSTANCE \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows(PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --cloudsql-instance=DEST_INSTANCE ` --username=DEST_USER ` --password=DEST_PASSWORD ` --role=DESTINATION ` --no-async
Windows(cmd.exe)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^ --region=REGION ^ --cloudsql-instance=DEST_INSTANCE ^ --username=DEST_USER ^ --password=DEST_PASSWORD ^ --role=DESTINATION ^ --no-async
다음과 비슷한 응답이 표시됩니다.
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
- Cloud SQL Google Cloud CLI를 사용하여
인스턴스를 만듭니다.
-
마이그레이션 작업을 만듭니다.
다음 명령어를 실행합니다 (클릭하여 펼치기).gcloud database-migration migration-jobs create이 샘플에서는 선택적
--no-async플래그를 사용하므로 모든 작업이 동기식으로 수행됩니다. 즉, 일부 명령어는 완료하는 데 시간이 걸릴 수 있습니다.--no-async플래그를 건너뛰어 명령어를 비동기식으로 실행할 수 있습니다. 이 경우gcloud database-migration operations describe명령어를 사용하여 작업이 성공했는지 확인해야 합니다.아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- MIGRATION_JOB_ID를 마이그레이션 작업 식별자로 바꿉니다.
- REGION을 마이그레이션 작업을 저장할 리전으로 바꿉니다.
- SOURCE_CONN_ID를 소스 연결 프로필 식별자로 바꿉니다.
- DEST_CONN_ID를 대상 연결 프로필 식별자로 바꿉니다.
- DATABASES_LIST를 마이그레이션할 데이터베이스의 쉼표로 구분된 목록으로 바꿉니다.
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration migration-jobs create \ MIGRATION_JOB_ID \ --region=REGION \ --type=CONTINUOUS \ --source=SOURCE_CONN_ID \ --destination=DEST_CONN_ID \ --use-postgres-native \ --postgres-max-additional-subscriptions=10 \ --databases-filter=DATABASES_LIST \ --no-async
Windows(PowerShell)
gcloud database-migration migration-jobs create ` MIGRATION_JOB_ID ` --region=REGION ` --type=CONTINUOUS ` --source=SOURCE_CONN_ID ` --destination=DEST_CONN_ID ` --use-postgres-native ` --postgres-max-additional-subscriptions=10 ` --databases-filter=DATABASES_LIST ` --no-async
Windows(cmd.exe)
gcloud database-migration migration-jobs create ^ MIGRATION_JOB_ID ^ --region=REGION ^ --type=CONTINUOUS ^ --source=SOURCE_CONN_ID ^ --destination=DEST_CONN_ID ^ --use-postgres-native ^ --postgres-max-additional-subscriptions=10 ^ --databases-filter=DATABASES_LIST ^ --no-async
다음과 비슷한 응답이 표시됩니다.
Waiting for migration job [MIGRATION_JOB_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created migration job MIGRATION_JOB_ID [OPERATION_ID]
-
마이그레이션 작업을 실행합니다.
마이그레이션 작업 시작 (클릭하여 펼치기):gcloud database-migration migration-jobs start이 샘플에서는 선택적
--no-async플래그를 사용하므로 모든 작업이 동기식으로 수행됩니다. 즉, 일부 명령어는 완료하는 데 시간이 걸릴 수 있습니다.--no-async플래그를 건너뛰어 명령어를 비동기식으로 실행할 수 있습니다. 이 경우gcloud database-migration operations describe명령어를 사용하여 작업이 성공했는지 확인해야 합니다.아래의 명령어 데이터를 사용하기 전에 다음을 바꿉니다.
- MIGRATION_JOB_ID를 마이그레이션 작업 식별자로 바꿉니다.
식별자를 모르는 경우
gcloud database-migration migration-jobs list명령어를 사용하여 특정 리전의 모든 마이그레이션 작업을 나열하고 식별자를 볼 수 있습니다. - REGION: 연결 프로필이 저장된 리전의 식별자
다음 명령어를 실행합니다.
Linux, macOS 또는 Cloud Shell
gcloud database-migration migration-jobs \ start MIGRATION_JOB_ID \ --region=REGION
Windows(PowerShell)
gcloud database-migration migration-jobs ` start MIGRATION_JOB_ID ` --region=REGION
Windows(cmd.exe)
gcloud database-migration migration-jobs ^ start MIGRATION_JOB_ID ^ --region=REGION
결과
작업은 비동기식으로 수행됩니다. 따라서 이 명령어는 장기 실행 작업을 나타내는 작업 항목을 반환합니다.
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
작업이 성공했는지 확인하려면 반환된 작업 객체를 쿼리하거나 마이그레이션 작업의 상태를 확인하면 됩니다.
- MIGRATION_JOB_ID와 함께
gcloud database-migration migration-jobs describe명령어를 사용하여 마이그레이션 작업의 상태를 확인합니다. -
gcloud database-migration operations describe명령어를 OPERATION_ID와 함께 사용하여 작업 자체의 상태를 확인합니다.
- MIGRATION_JOB_ID를 마이그레이션 작업 식별자로 바꿉니다.
마이그레이션 완료
애플리케이션을 새 Cloud SQL 인스턴스로 전환하기로 결정한 경우 다음 단계에 따라 마이그레이션을 완료합니다.
- 소스 데이터베이스에서 모든 쓰기 작업을 중지합니다. 읽기 전용 모드로 전환하여 운영 기능을 유지할 수 있습니다.
- 마이그레이션 작업 승격 빠른 시작 마이그레이션의 경우 마이그레이션 프로세스 중에 대상 인스턴스가 쓰기 가능한 상태로 유지됩니다. 마이그레이션 작업을 승격하면 복제가 종료되며 대상 인스턴스에 영향을 미치지 않습니다.
- 선택사항: 이전 데이터의 완전성을 확인합니다.