本页介绍如何使用操作 API 来管理 Cloud Spanner 长时间运行的操作的生命周期。
长时间运行的操作是可能需要大量时间才能完成的方法调用。Spanner 会为多个实例、数据库和备份操作创建长时间运行的操作。用于恢复数据库的方法 projects.instances.databases.restore
就是这样一个例子。恢复数据库时,Spanner 服务会创建长时间运行的操作来跟踪恢复进度。Spanner 提供了一些操作 API,让您可以检查长时间运行的操作的状态。您还可以列出并取消长时间运行的操作以及删除长时间运行的实例操作。
本页面介绍了如何使用 REST API 管理长时间运行的操作。但是,您还可以使用以下工具管理长时间运行的操作:
- Spanner 客户端库
gcloud
命令行工具- Google Cloud 控制台中的 Spanner 页面
可以使用以下方法管理 Spanner 长时间运行的操作:
操作 | 长时间运行的数据库操作 | 长时间运行的备份操作 | 长时间运行的实例操作 |
---|---|---|---|
取消长时间运行的操作 | cancel |
cancel |
cancel |
删除长时间运行的操作 | 不支持 | 不支持 | delete |
获取长时间运行的操作的状态 | get |
get |
get |
列出长时间运行的操作 | list |
list |
list |
数据库操作
以下是长时间运行的数据库操作。
projects.instances.databases.create
projects.instances.databases.restore
projects.instances.databases.updateDdl
projects.instances.databaseOperations.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
的长时间运行的数据库操作。
要获取长时间运行的数据库操作的状态,请执行以下操作:
- 点击
projects.instances.databases.operations.get
。 对于名称,请输入长时间运行的数据库操作的名称,如
projects.instances.databases.create
或projects.instances.databases.updateDdl
的响应中所示。例如:projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的数据库操作来检索数据库操作的名称。
点击执行并查看响应。操作完成后,
done
字段将设置为true
。
要轮询长时间运行的数据库操作,请反复调用 projects.instances.databases.operations.get
方法,直到操作完成。请在每个轮询请求之间使用退避时间。例如,每 10 秒轮询一次。
列出长时间运行的数据库操作
使用 projects.instances.databases.operations.list
可列出长时间运行的数据库操作。
- 点击
projects.instances.databases.operations.list
。 对于名称,请输入:
projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations
点击执行。响应会包含长时间运行的数据库操作。
取消长时间运行的数据库操作
使用 projects.instances.databases.operations.cancel
可取消长时间运行的数据库操作。
- 点击
projects.instances.databases.operations.cancel
。 对于名称,请输入长时间运行的数据库操作的名称,如长时间运行的数据库操作响应中所示。例如:
projects/[PROJECT_ID]/instances/test-instance/databases/example-db/operations/_auto_1492721321097206
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的数据库操作来检索数据库操作的名称。
点击执行。
备份操作
以下是长时间运行的备份操作。
获取长时间运行的备份操作的状态
使用 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
的长时间运行的备份操作。
要获取长时间运行的备份操作的状态,请执行以下操作:
- 点击
projects.instances.backups.operations.get
。 对于名称,请输入长时间运行的备份操作的名称,如
projects.instances.backups.create
的响应中所示。例如:projects/[PROJECT_ID]/instances/test-instance/backups/example-db/operations/_auto_1492721321097206
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的备份操作来检索备份操作的名称。
点击执行并查看响应。操作完成后,
done
字段将设置为true
。
要轮询长时间运行的备份操作,请反复调用 projects.instances.backups.operations.get
方法,直到操作完成。请在每个轮询请求之间使用退避时间。例如,每 10 秒轮询一次。
列出长时间运行的备份操作
使用 projects.instances.backups.operations.list
列出单个备份上的操作,或使用 projects.instances.backupOperations.list
列出实例中的所有备份操作。
- 点击
projects.instances.backups.operations.list
。 对于名称,请输入:
projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations
点击执行。响应会包含长时间运行的操作。
取消长时间运行的备份操作
使用 projects.instances.backups.operations.cancel
可取消长时间运行的备份操作。
- 点击
projects.instances.backups.operations.cancel
。 对于名称,请输入长时间运行的备份操作响应中显示的长时间运行的备份操作的名称。例如:
projects/[PROJECT_ID]/instances/test-instance/backups/example-db-backup-4/operations/_auto_1492721321097206
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的备份操作来检索备份操作的名称。
点击执行。
实例操作
以下是长时间运行的实例操作。
获取长时间运行的实例操作的状态
使用 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
的长时间运行的实例操作。
要获取长时间运行的实例操作的状态,请执行以下操作:
- 点击
projects.instances.operations.get
。 对于名称,请输入长时间运行的实例操作的名称,如
projects.instances.create
或projects.instances.patch
的响应中所示。例如:projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的实例操作来检索实例操作的名称。
点击执行并查看响应。操作完成后,
done
字段将设置为true
。
要轮询长时间运行的实例操作,请反复调用 projects.instances.operations.get
方法,直到操作完成。请在每个轮询请求之间使用退避时间。例如,每 10 秒轮询一次。
列出长时间运行的实例操作
使用 projects.instances.operations.list
可列出长时间运行的实例操作。
- 点击
projects.instances.operations.list
。 对于名称,请输入:
projects/[PROJECT_ID]/instances/test-instance/operations
点击执行。响应会包含长时间运行的实例操作。
取消长时间运行的实例操作
使用 projects.instances.operations.cancel
可取消长时间运行的实例操作。
- 点击
projects.instances.operations.cancel
。 对于名称,请输入长时间运行的实例操作的名称,如长时间运行的实例操作响应中所示。例如:
projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的实例操作来检索实例操作的名称。
点击执行。
删除长时间运行的实例操作
使用 projects.instances.operations.delete
可删除长时间运行的实例操作。
- 点击
projects.instances.operations.delete
。 对于名称,请输入长时间运行的实例操作的名称,如长时间运行的实例操作响应中所示。例如:
projects/[PROJECT_ID]/instances/test-instance/operations/9af0cf8c1e123a2e
(请使用您收到的操作名称,而不要使用此值。)您还可以通过列出长时间运行的实例操作来检索实例操作的名称。
点击执行。