管理长时间运行的操作

本页介绍如何使用操作 API 来管理 Cloud Spanner 长时间运行的操作的生命周期。

长时间运行的操作是可能需要大量时间才能完成的方法调用。Spanner 会为多个实例、数据库和备份操作创建长时间运行的操作。用于恢复数据库的方法 projects.instances.databases.restore 就是这样一个例子。恢复数据库时,Spanner 服务会创建长时间运行的操作来跟踪恢复进度。Spanner 提供了一些操作 API,让您可以检查长时间运行的操作的状态。您还可以列出并取消长时间运行的操作以及删除长时间运行的实例操作。

本页面介绍了如何使用 REST API 管理长时间运行的操作。但是,您还可以使用以下工具管理长时间运行的操作:

可以使用以下方法管理 Spanner 长时间运行的操作:

操作 长时间运行的数据库操作 长时间运行的备份操作 长时间运行的实例操作
取消长时间运行的操作 cancel cancel cancel
删除长时间运行的操作 不支持 不支持 delete
获取长时间运行的操作的状态 get get get
列出长时间运行的操作 list list list

数据库操作

以下是长时间运行的数据库操作。

获取长时间运行的数据库操作的状态

使用 projects.instances.databases.operations.get 可获取长时间运行的数据库操作的状态。

例如,这是来自 projects.instances.databases.create 的响应:

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

响应顶部的 name 值表明 Spanner 服务创建了一个名为 projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206 的长时间运行的数据库操作。

要获取长时间运行的数据库操作的状态,请执行以下操作:

  1. 点击 projects.instances.databases.operations.get
  2. 对于名称,请输入长时间运行的数据库操作的名称,如 projects.instances.databases.createprojects.instances.databases.updateDdl 的响应中所示。例如:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的数据库操作来检索数据库操作的名称。

  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/test-instance/databases/example-db/operations
    
  3. 点击执行。响应会包含长时间运行的数据库操作。

取消长时间运行的数据库操作

使用 projects.instances.databases.operations.cancel 可取消长时间运行的数据库操作。

  1. 点击 projects.instances.databases.operations.cancel
  2. 对于名称,请输入长时间运行的数据库操作的名称,如长时间运行的数据库操作响应中所示。例如:

    projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的数据库操作来检索数据库操作的名称。

  3. 点击执行

备份操作

以下是长时间运行的备份操作。

获取长时间运行的备份操作的状态

使用 projects.instances.backups.operations.get 获取长时间运行的备份操作的状态。

例如,这是来自 projects.instances.backups.create 的响应:

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-5/operations/_auto_1492721321097206",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.database.v1.CreateBackupMetadata",
    "name": "projects/[PROJECT_ID]/instances/test-instance/backup/example-db-backup-5"
  }
}

响应顶部的 name 值显示 Spanner 服务创建了一项名为 projects/[PROJECT_ID]/instances/test-instance/backups/example-db/operations/_auto_op_0cf69250b487c2f7 的长时间运行的备份操作。

要获取长时间运行的备份操作的状态,请执行以下操作:

  1. 点击 projects.instances.backups.operations.get
  2. 对于名称,请输入长时间运行的备份操作的名称,如 projects.instances.backups.create 的响应中所示。例如:

    projects/[PROJECT_ID]/instances/test-instance/backups/example-db/operations/_auto_1492721321097206
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的备份操作来检索备份操作的名称。

  3. 点击执行并查看响应。操作完成后,done 字段将设置为 true

要轮询长时间运行的备份操作,请反复调用 projects.instances.backups.operations.get 方法,直到操作完成。请在每个轮询请求之间使用退避时间。例如,每 10 秒轮询一次。

列出长时间运行的备份操作

使用 projects.instances.backups.operations.list 列出单个备份上的操作,或使用 projects.instances.backupOperations.list 列出实例中的所有备份操作。

  1. 点击 projects.instances.backups.operations.list
  2. 对于名称,请输入:

    projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations
    
  3. 点击执行。响应会包含长时间运行的操作。

取消长时间运行的备份操作

使用 projects.instances.backups.operations.cancel 可取消长时间运行的备份操作。

  1. 点击 projects.instances.backups.operations.cancel
  2. 对于名称,请输入长时间运行的备份操作响应中显示的长时间运行的备份操作的名称。例如:

    projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations/_auto_1492721321097206
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的备份操作来检索备份操作的名称。

  3. 点击执行

实例操作

以下是长时间运行的实例操作。

获取长时间运行的实例操作的状态

使用 projects.instances.operations.get 可获取长时间运行的实例操作的状态。

例如,这是来自 projects.instances.create 的响应:

{
  "name": "projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e",
  "metadata": {
    "@type": "type.googleapis.com/google.spanner.admin.instance.v1.CreateInstanceMetadata",
    "instance": {
      "name": "projects/[PROJECT_ID]/instances/test-instance",
      "config": "projects/[PROJECT_ID]/instanceConfigs/regional-us-central1",
      "displayName": "Test Instance",
      "nodeCount": 1,
      "state": "READY"
    },
    "startTime": "2017-04-24T22:45:41.130854Z"
  }
}

响应顶部的 name 值表明 Spanner 服务创建了一个名为 projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e 的长时间运行的实例操作。

要获取长时间运行的实例操作的状态,请执行以下操作:

  1. 点击 projects.instances.operations.get
  2. 对于名称,请输入长时间运行的实例操作的名称,如 projects.instances.createprojects.instances.patch 的响应中所示。例如:

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的实例操作来检索实例操作的名称。

  3. 点击执行并查看响应。操作完成后,done 字段将设置为 true

要轮询长时间运行的实例操作,请反复调用 projects.instances.operations.get 方法,直到操作完成。请在每个轮询请求之间使用退避时间。例如,每 10 秒轮询一次。

列出长时间运行的实例操作

使用 projects.instances.operations.list 可列出长时间运行的实例操作。

  1. 点击 projects.instances.operations.list
  2. 对于名称,请输入:

    projects/[PROJECT_ID]/instances/test-instance/operations
    
  3. 点击执行。响应会包含长时间运行的实例操作。

取消长时间运行的实例操作

使用 projects.instances.operations.cancel 可取消长时间运行的实例操作。

  1. 点击 projects.instances.operations.cancel
  2. 对于名称,请输入长时间运行的实例操作的名称,如长时间运行的实例操作响应中所示。例如:

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的实例操作来检索实例操作的名称。

  3. 点击执行

删除长时间运行的实例操作

使用 projects.instances.operations.delete 可删除长时间运行的实例操作。

  1. 点击 projects.instances.operations.delete
  2. 对于名称,请输入长时间运行的实例操作的名称,如长时间运行的实例操作响应中所示。例如:

    projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
    

    (请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的实例操作来检索实例操作的名称。

  3. 点击执行