장기 실행 작업 관리 및 관찰

이 페이지에서는 gcloud spanner operations 명령어와 작업 REST API를 사용하여 Spanner 장기 실행 작업의 수명 주기를 관리하는 방법을 설명합니다. 일부 절차는 Google Cloud 콘솔에서도 수행할 수 있습니다.

장기 실행 작업은 완료하는 데 상당한 시간이 걸릴 수 있는 메서드 호출입니다. Spanner는 여러 인스턴스, 데이터베이스, 백업 작업에 대해 장기 실행 작업을 생성합니다. 데이터베이스를 복원하는 메서드 projects.instances.databases.restore가 한 가지 예시입니다. 데이터베이스를 복원할 때 Spanner 서비스는 장기 실행 작업을 생성하여 복원 진행 상황을 추적합니다. 작업이 예상보다 오래 걸리는 경우 gcloud를 사용하여 작업 진행 상황을 확인할 수 있습니다. 작업이 응답하지 않으면 gcloud를 사용하여 작업을 취소할 수 있습니다.

Spanner는 장기 실행 작업 진행 상황을 확인할 수 있는 작업 API를 제공합니다. 장기 실행 작업을 나열 및 취소하고 장기 실행 인스턴스 작업을 삭제할 수도 있습니다.

다음을 사용하여 장기 실행 작업을 확인하고 관리할 수 있습니다.

작업 관리를 위한 REST API 명령어

Spanner 장기 실행 작업은 다음과 같은 REST 메서드를 사용하여 관리합니다.

작업 장기 실행 데이터베이스 작업 장기 실행 인스턴스 작업
장기 실행 작업 취소 cancel cancel
장기 실행 작업 삭제 지원되지 않음 delete
장기 실행 작업 진행 상황 확인 get get
장기 실행 작업 나열 list list

Spanner에서 REST를 사용하는 방법에 대한 자세한 내용은 REST를 사용하여 Spanner 시작하기를 참조하세요.

인스턴스 작업

다음은 장기 실행 인스턴스 작업입니다.

장기 실행 인스턴스 작업 진행 상황 확인

projects.instances.operations.get을 사용하여 장기 실행 인스턴스 작업의 진행 상황을 확인하세요.

예를 들어 다음은 projects.instances.create의 응답입니다.

  {
    "name": "projects/test01/instances/test-instance/operations/_auto_1492721321097206",
    "metadata": {
      "@type": "type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceMetadata",
      "instance": {
        "name": "projects/<VAR>PROJECT-ID</VAR>/instances/test-instance",
        "config": "projects/<VAR>PROJECT-ID</VAR>/instanceConfigs/regional-us-central1",
        "displayName": "Test Instance",
        "nodeCount": 1,
        "state": "READY"
      },
      "startTime": "2017-04-24T22:45:41.130854Z"
    }
  }

응답 맨 위의 name 값은 Spanner 서비스가 projects/test01/instances/test-instance/operations/_auto_1492721321097206라는 장기 실행 인스턴스 작업을 생성했음을 보여줍니다.

장기 실행 인스턴스 작업 진행 상황을 확인하려면 다음 안내를 따르세요.

  1. projects.instances.operations.get로 이동합니다.
  2. 이름projects.instances.create 또는 projects.instances.patch에 대한 응답에 표시된 장기 실행 인스턴스 작업 이름을 입력합니다. 예를 들면 다음과 같습니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID

    장기 실행 인스턴스 작업을 나열하여 인스턴스 작업 이름을 가져올 수 있습니다.

  3. 실행을 클릭합니다. 작업이 완료되면 done 필드가 true로 설정됩니다.

지속적인 업데이트를 받으려면 작업이 완료될 때까지 projects.instances.databases.operations.get 메서드를 반복적으로 호출합니다. 각 요청 사이에 백오프를 사용합니다. 예를 들어 10초마다 요청합니다.

장기 실행 인스턴스 작업 나열

projects.instances.operations.list를 사용하여 장기 실행 인스턴스 작업을 나열할 수 있습니다.

  1. projects.instances.operations.list로 이동합니다.
  2. 이름에 다음을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/operationsOPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID
  3. 실행을 클릭합니다. 응답에 장기 실행 작업 목록이 포함됩니다.

장기 실행 인스턴스 작업 취소

projects.instances.operations.cancel을 사용하여 장기 실행 인스턴스 작업을 취소할 수 있습니다.

  1. projects.instances.operations.cancel로 이동합니다.
  2. 이름에 장기 실행 인스턴스 작업 응답에 표시된 장기 실행 인스턴스 작업 이름을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/operations/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID

    또한 장기 실행 인스턴스 작업을 나열하여 인스턴스 작업 이름을 검색할 수 있습니다.

  3. 실행을 클릭합니다.

장기 실행 인스턴스 작업 삭제

projects.instances.operations.delete를 사용하여 장기 실행 인스턴스 작업을 삭제할 수 있습니다.

  1. projects.instances.operations.delete를 클릭합니다.
  2. 이름에 장기 실행 인스턴스 작업 응답에 표시된 장기 실행 인스턴스 작업 이름을 입력합니다.

    projects/<VAR>PROJECT-ID</VAR>/instances/<VAR>INSTANCE-NAME</VAR>/operations/<VAR>OPERATION-ID</VAR>
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID

    또한 장기 실행 인스턴스 작업을 나열하여 인스턴스 작업 이름을 검색할 수 있습니다.

  3. 실행으로 이동합니다. 작업이 삭제됩니다.

데이터베이스 작업

다음은 장기 실행 데이터베이스 작업입니다.

장기 실행 데이터베이스 작업 진행 상황 확인

projects.instances.databases.operations.get을 사용하여 장기 실행 데이터베이스 작업 진행 상황을 확인합니다.

예를 들어 다음은 projects.instances.databases.create의 응답입니다.

{
  "name": "projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateDatabaseMetadata",
    "database": "projects/test01/instances/test-instance/databases/example-db"
  }
}

응답 맨 위의 name 값은 Spanner 서비스가 projects/test01/instances/test-instance/databases/example-db/operations/_auto_1492721321097206라는 장기 실행 인스턴스 작업을 생성했음을 보여줍니다.

장기 실행 데이터베이스 작업 진행 상황을 확인하려면 다음 안내를 따르세요.

  1. projects.instances.databases.operations.get로 이동합니다.

  2. 이름projects.instances.databases.create 또는 projects.instances.databases.updateDdl에 대한 응답에 표시된 장기 실행 데이터베이스 작업 이름을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID

    또한 장기 실행 데이터베이스 작업을 나열하여 데이터베이스 작업 이름을 검색할 수 있습니다.

  3. 실행을 클릭합니다. 작업이 완료되면 done 필드가 true로 설정됩니다.

지속적인 업데이트를 받으려면 작업이 완료될 때까지 projects.instances.databases.operations.get 메서드를 반복적으로 호출합니다. 각 요청 사이에 백오프를 사용합니다. 예를 들어 10초마다 요청합니다.

장기 실행 데이터베이스 작업 나열

projects.instances.databases.operations.list를 사용하여 장기 실행 데이터베이스 작업을 나열할 수 있습니다.

  1. projects.instances.databases.operations.list로 이동합니다.
  2. 이름에 다음을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID
  3. 실행을 클릭합니다. 응답에 장기 실행 작업 목록이 포함됩니다.

장기 실행 데이터베이스 작업 취소

projects.instances.databases.operations.cancel을 사용하여 장기 실행 데이터베이스 작업을 취소합니다.

  1. projects.instances.databases.operations.cancel로 이동합니다.
  2. 이름에 장기 실행 데이터베이스 작업 응답에 표시된 장기 실행 데이터베이스 작업 이름을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID

    또한 장기 실행 데이터베이스 작업을 나열하여 데이터베이스 작업 이름을 검색할 수 있습니다.

  3. 실행을 클릭합니다.

스키마 업데이트 작업

다음은 장기 실행 스키마 업데이트 작업입니다.

장기 실행 스키마 업데이트 작업 진행 상황 확인

콘솔

  1. Spanner 탐색 메뉴에서 작업 탭을 선택합니다. 작업 페이지에 실행 중인 작업 목록이 표시됩니다.

  2. 목록에서 스키마 작업을 찾습니다. 아직 실행 중이면 다음 이미지와 같이 종료 시간 열의 진행률 표시줄에 완료된 작업의 비율이 표시됩니다.

98%로 표시된 진행률 표시기 스크린샷

gcloud

gcloud spanner operations describe를 사용하여 작업 진행 상황을 확인합니다.

  1. 작업 ID를 가져옵니다.

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL
    

    다음을 바꿉니다.

    • INSTANCE-NAME: Spanner 인스턴스 이름
    • DATABASE-NAME: 인스턴스의 이름
    • DATABASE-NAME: 데이터베이스의 이름
  2. gcloud spanner operations describe를 실행합니다.

    gcloud spanner operations describe OPERATION-ID \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME
    

    다음을 바꿉니다.

    • OPERATION-ID: 확인할 작업의 작업 ID
    • INSTANCE-NAME: Spanner 인스턴스 이름
    • DATABASE-NAME: Spanner 데이터베이스 이름

    출력의 progress 섹션에 완료된 작업의 비율이 표시됩니다. 결과는 다음과 유사합니다.

    done: true
    metadata:
    ...
      progress:
      - endTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
        startTime: '2022-03-01T00:28:04.221401Z'
      - endTime: '2022-03-01T00:28:17.624588Z'
        startTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
    ...
    

REST v1

작업 ID를 가져옵니다.

gcloud spanner operations list \
--instance=INSTANCE-NAME \
--database=DATABASE-NAME \
--type=DATABASE_UPDATE_DDL

다음을 바꿉니다.

  • INSTANCE-NAME: Spanner 인스턴스 이름
  • DATABASE-NAME: 데이터베이스의 이름

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

  • PROJECT-ID: 프로젝트 ID
  • INSTANCE-ID: 인스턴스 ID입니다.
  • DATABASE-ID: 데이터베이스 ID
  • OPERATION-ID: 작업 ID

HTTP 메서드 및 URL:

GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

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

다음과 비슷한 JSON 응답이 표시됩니다.

{
...
    "progress": [
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:27.366688Z",
        "endTime": "2023-05-27T00:52:30.184845Z"
      },
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:30.184845Z",
        "endTime": "2023-05-27T00:52:40.750959Z"
      }
    ],
...
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

작업에 시간이 너무 오래 걸리는 경우 취소할 수 있습니다. 자세한 내용은 장기 실행 스키마 업데이트 작업 취소를 참조하세요.

장기 실행 스키마 업데이트 작업 나열

gcloud

gcloud spanner operations list \
 --instance=INSTANCE-NAME \
 --database=DATABASE-NAME \
 --type=DATABASE_UPDATE_DDL

다음을 바꿉니다.

  • INSTANCE-NAME: Spanner 인스턴스 이름
  • DATABASE-NAME: 데이터베이스의 이름

결과는 다음과 유사합니다.

OPERATION-ID     STATEMENTS                                                                                           DONE   @TYPE
_auto_op_123456  CREATE INDEX SingersByFirstLastName ON Singers(FirstName, LastName)                                  False  UpdateDatabaseDdlMetadata
_auto_op_234567  CREATE INDEX SongsBySingerAlbumSongName ON Songs(SingerId, AlbumId, SongName), INTERLEAVE IN Albums  True   CreateDatabaseMetadata

장기 실행 스키마 업데이트 작업 취소

gcloud

  1. 작업 ID를 가져옵니다.

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL
    

    다음을 바꿉니다.

    • INSTANCE-NAME: Spanner 인스턴스 이름
    • DATABASE-NAME: 데이터베이스의 이름
  2. gcloud spanner operations cancel을 사용하여 장기 실행 스키마 업데이트 작업을 취소합니다.

    gcloud spanner operations cancel OPERATION-ID \
     --instance=INSTANCE-NAME
    

    다음을 바꿉니다.

    • OPERATION-ID: 확인할 작업의 작업 ID
    • INSTANCE-NAME: Spanner 인스턴스 이름

REST V1

projects.instances.databases.operations.cancel을 사용하여 장기 실행 스키마 업데이트 작업을 취소할 수 있습니다.

  1. 작업 ID를 가져옵니다.

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL
    

    다음을 바꿉니다.

    • INSTANCE-NAME: Spanner 인스턴스 이름
    • DATABASE-NAME: 데이터베이스의 이름
  2. projects.instances.databases.operations.cancel로 이동합니다.

  3. 이름에 장기 실행 스키마 업데이트 작업 응답에 표시된 장기 실행 스키마 업데이트 작업 이름을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/databases/example-db/operations/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • OPERATION-ID: 작업 ID

    또한 장기 실행 인스턴스 작업을 나열하여 스키마 업데이트 작업 이름을 검색할 수 있습니다.

  4. 실행을 클릭합니다. 작업 실행이 중지됩니다.

백업 및 복원 작업

다음은 장기 실행 백업 작업입니다.

장기 실행 백업 또는 복원 작업 진행 상황 확인

콘솔

백업

  1. Spanner 탐색 메뉴에서 작업 탭을 선택합니다. 작업 페이지에 현재 실행 중인 작업 목록이 표시됩니다.

  2. 목록에서 스키마 작업을 찾습니다. 아직 실행 중이면 다음 이미지와 같이 종료 시간 열의 진행률 표시줄에 완료된 작업의 비율이 표시됩니다.

98%로 표시된 진행률 표시기 스크린샷

복원

복원 작업 진행 상황을 확인하려면 다음 이미지와 같이 복원 중에 표시되는 진행률 표시기를 확인합니다.

56%로 표시된 진행률 표시기 스크린샷

작업에 시간이 너무 오래 걸리는 경우 취소할 수 있습니다. 자세한 내용은 장기 실행 인스턴스 작업 취소를 참조하세요.

gcloud

gcloud spanner operations describe을 사용하여 백업 또는 복원 작업 진행 상황을 확인합니다.

  1. 작업 ID를 가져옵니다.

    gcloud spanner operations list \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME \
    --type=DATABASE_UPDATE_DDL
    

    다음을 바꿉니다.

    • INSTANCE-NAME: Spanner 인스턴스 이름
    • DATABASE-NAME: 데이터베이스의 이름
  2. gcloud spanner operations describe를 실행합니다.

    gcloud spanner operations describe OPERATION-ID \
    --instance=INSTANCE-NAME \
    --database=DATABASE-NAME
    

    다음을 바꿉니다.

    • OPERATION-ID: 확인할 작업의 작업 ID
    • INSTANCE-NAME: Spanner 인스턴스 이름
    • DATABASE-NAME: Spanner 데이터베이스 이름

    출력의 progress 섹션에 완료된 작업의 비율이 표시됩니다. 결과는 다음과 유사합니다.

    done: true
    metadata:
    ...
      progress:
      - endTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
        startTime: '2022-03-01T00:28:04.221401Z'
      - endTime: '2022-03-01T00:28:17.624588Z'
        startTime: '2022-03-01T00:28:06.691403Z'
        progressPercent: 100
    ...
    

REST v1

작업 ID를 가져옵니다.

 gcloud spanner operations list 
--instance=INSTANCE-NAME
--database=DATABASE-NAME
--type=DATABASE_UPDATE_DDL

다음을 바꿉니다.

  • INSTANCE-NAME: Spanner 인스턴스 이름
  • DATABASE-NAME: 데이터베이스의 이름

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

  • PROJECT-ID: 프로젝트 ID
  • INSTANCE-ID: 인스턴스 ID입니다.
  • DATABASE-ID: 데이터베이스 ID
  • OPERATION-ID: 작업 ID

HTTP 메서드 및 URL:

GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID

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

다음과 비슷한 JSON 응답이 표시됩니다.

{
...
    "progress": [
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:27.366688Z",
        "endTime": "2023-05-27T00:52:30.184845Z"
      },
      {
        "progressPercent": 100,
        "startTime": "2023-05-27T00:52:30.184845Z",
        "endTime": "2023-05-27T00:52:40.750959Z"
      }
    ],
...
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

작업에 시간이 너무 오래 걸리는 경우 취소할 수 있습니다. 자세한 내용은 장기 실행 백업 작업 취소를 참조하세요.

장기 실행 백업 또는 복원 작업 나열

projects.instances.backups.operations.list를 사용하여 단일 백업의 작업을 나열하거나 projects.instances.backupOperations.list를 사용하여 인스턴스의 모든 백업 작업을 나열합니다.

  1. projects.instances.backups.operations.list로 이동합니다.

  2. 이름에 다음을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • BACKUP-NAME: 백업의 이름
    • OPERATION-ID: 작업 ID
  3. 실행을 클릭합니다. 응답에 장기 실행 작업 목록이 포함됩니다.

장기 실행 백업 작업 취소

projects.instances.backups.operations.cancel을 사용하여 장기 실행 백업 작업을 취소합니다.

  1. projects.instances.backups.operations.cancel로 이동합니다.

  2. 이름에 장기 실행 백업 작업 응답에 표시된 장기 실행 백업 작업 이름을 입력합니다.

    projects/PROJECT-ID/instances/INSTANCE-NAME/backups/BACKUP-NAME/operations/OPERATION-ID
    

    다음을 바꿉니다.

    • PROJECT-ID: 프로젝트 ID
    • INSTANCE-NAME: 인스턴스의 이름
    • BACKUP-NAME: 백업의 이름
    • OPERATION-ID: 작업 ID

    장기 실행 백업 작업 나열을 통해 백업 작업 이름을 검색할 수도 있습니다.

  3. 실행을 클릭합니다.