SQL 파일 가져오기

이 페이지에서는 Cloud Storage 버킷에 저장된 SQL 파일에서 PostgreSQL용 AlloyDB 클러스터로 데이터를 가져오는 방법을 설명합니다. SQL 파일은 일련의 SQL 명령어가 포함된 일반 텍스트 파일입니다.

AlloyDB 클러스터로 데이터를 가져오는 작업을 취소할 수 있습니다. 자세한 내용은 가져오기 작업 취소를 참고하세요.

시작하기 전에

가져오기 작업을 시작하기 전에 다음 사항을 확인하세요.

  • 데이터베이스에 충분한 여유 공간이 있는지 확인합니다.
  • 가져오기 작업은 데이터베이스 리소스를 사용하지만 클러스터가 프로비저닝되지 않는 한 일반적인 데이터베이스 작업에 지장을 주지 않습니다.

AlloyDB로 가져오기에 필요한 역할 및 권한

Cloud Storage에서 AlloyDB로 데이터를 가져오려면 가져오기를 시작하는 사용자에게 다음 역할 중 하나가 있어야 합니다.

또한 AlloyDB 클러스터의 서비스 계정에는 다음 역할 중 하나가 있어야 합니다.

  • storage.objectViewer IAM 역할
  • 다음 권한이 포함된 맞춤 역할:
    • storage.objects.get

IAM 역할에 대한 도움말은 Identity and Access Management를 참고하세요.

AlloyDB 클러스터로 SQL 파일 가져오기

SQL 파일을 사용하여 AlloyDB 클러스터로 데이터를 가져오려면 다음 단계를 따르세요.

콘솔

  1. 클러스터 페이지로 이동합니다.

    클러스터로 이동

  2. 클러스터 이름을 클릭하여 해당 클러스터의 개요 페이지를 엽니다.

  3. 가져오기를 클릭합니다.

  4. 데이터를 가져오려는 파일 선택에서 가져오기에 사용할 버킷과 SQL 파일의 경로를 입력하거나 기존 파일을 찾습니다.

  5. 데이터를 가져올 데이터베이스를 선택합니다.

    이렇게 하면 가져오기 전에 AlloyDB가 USE DATABASE 문을 실행합니다. SQL 덤프 파일에 USE DATABASE 문이 포함되어 있으면 Google Cloud 콘솔에서 설정된 데이터베이스가 재정의됩니다.

  6. 선택사항: 가져오기 작업의 사용자를 지정합니다. 가져오기 파일에 특정 사용자가 실행해야 하는 문이 포함되어 있다면 이 필드를 사용하여 해당 사용자를 지정합니다.

  7. 가져오기 작업을 시작하려면 가져오기를 클릭합니다.

gcloud

  1. Cloud Storage 버킷 생성
  2. SQL 파일을 버킷에 업로드합니다. 버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참고하세요.

  3. gcloud storage buckets add-iam-policy-binding을 사용하여 버킷의 AlloyDB 클러스터 서비스 계정에 storage.objectViewer IAM 역할을 부여합니다.

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com

    다음을 바꿉니다.

    • CLUSTER_NAME: 클러스터의 이름입니다.
    • REGION: AlloyDB 클러스터가 배포되는 리전입니다.
    • BUCKET_NAME: Cloud Storage 버킷 이름입니다.
    • FILE_NAME: CSV 파일의 이름입니다.
    • DATABASE_NAME: 클러스터 내 데이터베이스의 이름입니다.
    • USER: 가져오기 작업의 사용자입니다.
    • TABLE_NAME: 데이터베이스 내의 테이블입니다.

    IAM 권한 설정에 대한 도움말은 IAM 권한 사용을 참고하세요.

  4. 파일을 가져옵니다.

    gcloud alloydb clusters import CLUSTER_NAME --region=REGION --database=DATABASE_NAME --gcs-uri='gs://BUCKET_NAME/PATH_TO_SQL_FILE' --user=USERNAME --sql

    명령어가 PERMISSION_DENIED와 같은 오류를 반환하면 권한을 검토하세요.

    import 명령어 사용에 대한 자세한 내용은 alloydb import 명령어 참조 페이지를 확인하세요.

  5. 이전에 설정한 IAM 권한을 유지할 필요가 없으면 gcloud storage buckets remove-iam-policy-binding을 사용하여 삭제합니다.

REST v1

  1. Cloud Storage 버킷 생성
  2. SQL 파일을 버킷에 업로드합니다. 버킷에 파일 업로드하기에 대한 도움말은 객체 업로드를 참고하세요.
  3. 가져오기 작업을 위해 서비스 계정에 Cloud Storage 버킷에 대한 권한을 부여합니다. 서비스 계정 형식을 사용하여 가져올 프로젝트의 서비스 계정을 식별합니다. 서비스 계정의 형식은 다음과 같습니다.

    service-PROJECT_NUMBER@gcp-sa-alloydb.iam.gserviceaccount.com
  4. gcloud storage buckets add-iam-policy-binding을 사용하여 버킷의 AlloyDB 클러스터 서비스 계정에 storage.objectViewer IAM 역할을 부여합니다. IAM 권한 설정에 대한 도움말은 IAM 권한 사용을 참고하세요.

  5. SQL 파일을 가져옵니다.

    다음 HTTP 메서드와 URL을 사용합니다.

    POST https://alloydbadmin.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import

    요청 데이터를 사용하기 전에 다음을 바꿉니다.

    • PROJECT_ID: 프로젝트 ID입니다.
    • LOCATION_ID: AlloyDB 클러스터가 배포되는 리전입니다.
    • CLUSTER_ID: 클러스터 ID입니다.
    • BUCKET_NAME: Cloud Storage 버킷 이름입니다.
    • PATH_TO_SQL_FILE: SQL 파일의 경로입니다.
    • USER: 가져오기에 사용할 사용자입니다.
    • DATABASE_NAME: AlloyDB 클러스터 내 데이터베이스의 이름입니다.

    JSON 요청 본문:

    {
       "gcsUri": "gs://BUCKET_NAME/PATH_TO_SQL_FILE",
       "database": "DATABASE_NAME",
       "user": "USER",
       "sqlImportOptions": {}
    }
    

    요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

    cURL(Linux, macOS, Cloud Shell)

    요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

       curl -X POST \
             -H "Authorization: Bearer $(gcloud auth print-access-token)" \
             -H "Content-Type: application/json; charset=utf-8" \
             -d @request.json \
             "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"
    

    PowerShell(Windows)

    요청 본문을 request.json 파일에 저장하고 다음 명령어를 실행합니다.

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }
    
    Invoke-WebRequest `
      -Method POST `
      -Headers $headers `
      -ContentType: "application/json; charset=utf-8" `
      -InFile request.json `
      -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters/CLUSTER_ID:import"| Select-Object -Expand Content
    

    다음과 유사한 JSON 응답이 표시됩니다.

    응답

    {
     "name": "projects/project-id/locations/location-id/operations/operation-id",
     "metadata": {
      "@type": "type.googleapis.com/google.cloud.alloydb.v1.OperationMetadata",
      "createTime": "2025-01-04T13:12:32.363393723Z",
      "target": "projects/project-id/locations/location-id/clusters/cluster-id",
      "verb": "import",
      "requestedCancellation": false,
      "apiVersion": "v1"
     },
     "done": false
    }
    

    가져오기에 다른 사용자를 사용하려면 사용자 속성을 지정합니다.

  6. 이전에 설정한 IAM 권한을 유지할 필요가 없으면 지금 삭제합니다.

    이 요청에서 사용 가능한 매개변수의 전체 목록은 clusters:import를 참고하세요.

가져오기 작업 상태 확인

가져오기 작업 상태를 확인하려면 다음 단계를 따르세요.

gcloud

gcloud alloydb operations describe 명령어를 사용하여 다음을 실행합니다.

gcloud alloydb operations describe OPERATION_ID --region=REGION

특정 작업의 세부정보를 나열하거나 특정 작업을 취소할 수도 있습니다. 이 명령어에 대한 자세한 내용은 gcloud alloydb operations 명령어 참조 페이지를 참고하세요.

REST v1

GET 메서드와 다음 URL을 사용합니다.

GET https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID

자세한 내용은 get를 참조하세요.

요청 데이터를 사용하기 전에 다음을 바꿉니다.

  • REGION: AlloyDB 클러스터가 배포되는 리전입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • OPERATION_ID: 가져오기 작업의 ID입니다. 자세한 내용은 시작하기 전에를 참고하세요.

요청을 보내려면 다음 옵션 중 하나를 펼칩니다.

curl (Linux, macOS, Cloud Shell)

다음 명령어를 실행합니다.

  curl -X GET \
       -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID
 

PowerShell (Windows)

다음 명령어를 실행합니다.

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
  -Method GET `
  -Headers $headers `
  -Uri "https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/operations/OPERATION_ID | Select-Object -Expand Content

다음과 유사한 JSON 응답이 표시됩니다.

요청이 성공하면 응답 본문에 Operation의 인스턴스가 포함됩니다.

다음 단계