导出GCP数据存储区并导入到其他GCP项目

时间:2020-03-01 19:46:59

标签: google-cloud-platform google-cloud-datastore

我正在尝试将数据从一个GCP项目中的DataStore复制到另一个项目-该过程似乎没有出现任何错误,但是也没有填充我的目标数据存储。

在我的源项目中,我创建一个存储桶,并将我的数据存储导出到其中,如下所示:

gcloud datastore export gs://ctb_datatransfer

然后我切换到目标项目并运行

gcloud datastore import gs://ctb_datatransfer/2020-03-01T18:41:37_32872/2020-03-01T18:41:37_32872.overall_export_metadata

这两个步骤似乎均未指示任何错误,但是导入完成后,我的目标数据存储仍然为空。

很高兴收到任何帮助,因为我对所发生的事情并不十分了解-我相信我已向存储桶授予了正确的权限(如果没有,我会看到某种权限失败的消息)我猜不是)

导出步骤的输出如下所示

    done: true
metadata:
  "@type": type.googleapis.com/google.datastore.admin.v1.ExportEntitiesMetadata
  common:
    endTime: "2020-03-01T18:41:50.349159Z"
    operationType: EXPORT_ENTITIES
    startTime: "2020-03-01T18:41:37.188012Z"
    state: SUCCESSFUL
  entityFilter: {}
  outputUrlPrefix: gs://ctb_datatransfer/2020-03-01T18:41:37_32872
  progressBytes:
    workCompleted: "8848"
    workEstimated: "6480"
  progressEntities:
    workCompleted: "40"
    workEstimated: "40"
name: projects/chattyappsdata-staging/operations/ASAzMTEwMzAzMTMJGnRsdWFmZWQHEjJ3LXVlLXNib2otbmltZGEQCigS
response:
  "@type": type.googleapis.com/google.datastore.admin.v1.ExportEntitiesResponse

导入步骤的输出如下所示

    done: true
metadata:
  "@type": type.googleapis.com/google.datastore.admin.v1.ImportEntitiesMetadata
  common:
    endTime: "2020-03-01T18:46:25.251008Z"
    operationType: IMPORT_ENTITIES
    startTime: "2020-03-01T18:45:44.029056Z"
    state: SUCCESSFUL
  entityFilter: {}
  inputUrl: gs://ctb_datatransfer/2020-03-01T18:41:37_32872/2020-03-01T18:41:37_32872.overall_export_metadata
  progressBytes:
    workCompleted: "8110"
    workEstimated: "8848"
  progressEntities:
    workCompleted: "40"
    workEstimated: "40"
name: projects/chattytoolbox/operations/AiAwNTEwNDAxMTMJGnRsdWFmZWQHEjJ3LXVlLXNib2otbmltZGEQCigS
response:
  "@type": type.googleapis.com/google.protobuf.Empty

1 个答案:

答案 0 :(得分:1)

正如OP在评论中所指出的那样,整个过程最终得以完成,只是几个小时后才完成。这是一个可能的解释:

通过查看有关导入实体的文档,我发现导入是long running operation(LRO),因此可能需要大量时间才能完成。从您共享的导入输出中,我们可以看到操作did finish,但我相信它缺少某些传播,该传播已随着时间而固定。

此外,导入命令(gcloud datastore import)仅启动LRO。如果指定参数--async,该命令将立即返回,但如果未指定,它将等待响应。在this section的gcloud选项卡上,指出即使取消了导入命令,操作也将继续,从而加强了有关命令,导入和传播的独立性的理论。