您可能需要从一个 Looker (Google Cloud Core) 实例导出 Looker (Google Cloud Core) 实例数据,包括已创建的内容和有关 Looker (Google Cloud Core) 实例的内部数据,然后再将这些数据导入到另一个 Looker (Google Cloud Core) 实例中。您可能需要导出和导入数据的多种原因:
- 您想要升级或降级到其他版本的 Looker (Google Cloud Core)。
- 您想要移至其他项目中的 Looker (Google Cloud Core) 实例。
- 您想要移至其他区域的 Looker (Google Cloud Core) 实例。
所需角色
如需获取导入或导出 Looker (Google Cloud Core) 实例数据所需的权限,请让管理员向您授予对创建实例的项目的 Looker Admin (roles/looker.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理访问权限。
正在将 Looker (Google Cloud Core) 实例数据导出到 Cloud Storage 存储桶
导出到 Cloud Storage 存储桶所需的对象和权限
- 一个 Looker 服务帐号。如果您是使用 Google Cloud CLI CLI、Terraform 或 API 来创建 Looker (Google Cloud Core) 实例,并且尚未创建 Looker 服务帐号,则需要创建一个。
- Cloud Storage 存储桶(已向 Looker 服务帐号分配了
storage.objects.create
权限)。Storage Object Creator (roles/storage.objectCreator
) 角色包含此权限,因此您也可以将该角色分配给 Looker 服务帐号。 - 客户管理的加密密钥 (CMEK)。此 CMEK 专用于导出和导入过程,不同于用于加密实例数据的 CMEK。必须为 Looker 服务帐号分配 CMEK
cloudkms.cryptoKeyVersions.useToEncrypt
权限。Cloud KMS CryptoKey Encrypter (roles/cloudkms.cryptoKeyEncrypter
) 角色包含此权限,因此您也可以将该角色分配给 Looker 服务帐号。
导出到 Cloud Storage 存储桶
如需导出数据,请选择以下选项之一:
控制台
转到 Google Cloud 控制台中的 Looker 页面。
在页面顶部的选择组织下拉列表中,选择包含要为其导出数据的 Looker (Google Cloud Core) 实例的组织资源。
点击要为其导出数据的实例的名称。
点击导出。
在导出存储桶字段中,指定要在其中创建导出工件的存储桶位置。您可以在输入字段中输入
<bucket_name>/<folder_name>
作为路径,也可以浏览以选择存储桶中的相应位置。在选择客户管理的密钥字段中,选择要用于加密导出工件的 CMEK。
点击导出。
gcloud
gcloud looker instances export INSTANCE_NAME \ --target-gcs-uri='gs://BUCKET_NAME/FOLDER_NAME' \ --kms-key=KMS_KEY_ID
替换以下内容:
INSTANCE_NAME
:您的 Looker (Google Cloud Core) 实例的名称;它不与实例网址关联BUCKET_NAME
:要在其中创建导出工件的 Cloud Storage 存储桶位置FOLDER_NAME
:您希望将导出工件保存在 Cloud Storage 存储桶中的文件夹KMS_KEY_ID
:指向特定于导入和导出的 CMEK 密钥 ID 的完整路径
将数据从 Cloud Storage 存储桶导入 Looker (Google Cloud Core) 实例
从 Cloud Storage 存储桶导入所需的权限
- 一个 Looker 服务帐号。如果您使用 Google Cloud CLI、Terraform 或 API 创建了 Looker (Google Cloud Core) 实例,并且尚未创建 Looker 服务帐号,则需要创建一个。
- 向 Looker 服务帐号授予
storage.objects.get
权限。Storage Object Viewer (roles/storage.objectViewer
) 角色包含此权限,因此您也可以将该角色分配给 Looker 服务帐号。 - 必须为 Looker 服务帐号分配
cloudkms.cryptoKeyVersions.useToDecrypt
权限。Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter
) 角色拥有此权限,因此您也可以将该角色分配给 Looker 服务帐号。
从 Cloud Storage 存储桶导入
如需导入数据,请选择以下选项之一:
控制台
转到 Google Cloud 控制台中的 Looker 页面。
在页面顶部的选择组织下拉列表中,选择包含要导入数据的 Looker (Google Cloud Core) 实例的组织资源。
点击要导入数据的实例的名称。
点击导入 (IMPORT)。
在导入存储分区字段中,输入路径或浏览至您导出数据的 Cloud Storage 位置。选择包含
metadata.json
文件和其他文件的文件夹。点击导入 (IMPORT)。
gcloud
gcloud looker instances import INSTANCE_NAME \ --source-gcs-uri='gs://BUCKET_NAME/FOLDER_NAME'
替换以下内容:
INSTANCE_NAME
:您的 Looker (Google Cloud Core) 实例的名称;它不与实例网址关联BUCKET_NAME
:metadata.json
文件和其他文件所在的 Cloud Storage 存储桶位置FOLDER_NAME
:metadata.json
文件和其他文件所在的文件夹
排查 Looker (Google Cloud Core) 数据导出或导入问题
本部分介绍如何修复可能导致导出或导入过程失败的错误情况。
导出过程中出错
确保您已向 Looker 服务帐号授予 Cloud Storage 存储桶的
storage.objects.create
权限或 Storage Object Creator (roles/storage.objectCreator
) 角色。确保您已向 Looker 服务帐号授予您创建的 客户管理的加密密钥 (CMEK) 的
cloudkms.cryptoKeyVersions.useToEncrypt
权限或 Cloud KMS CryptoKey Encrypter (roles/cloudkms.cryptoKeyEncrypter
) 角色。在导出数据之前,请确保指定的 Cloud Storage 位置中不包含先前导出操作中的任何文件。如果已经存在任何文件,请先将其移除。
您不能使用启用了请求者付款的 Cloud Storage 存储桶。
导入错误
确保您已向 Looker 服务帐号授予 Cloud Storage 存储桶的
storage.objects.get
权限或 Storage Object Viewer (roles/storage.objectViewer
) 角色。确保您已向 Looker 服务帐号授予您创建的 客户管理的加密密钥 (CMEK) 的
cloudkms.cryptoKeyVersions.useToDecrypt
权限或 Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter
) 角色。由于目标实例与导出实例之间的版本不兼容,导入操作可能会失败,如下所述:
- 目标实例的 Looker 次要版本低于导出数据的 Looker 版本。例如,目标实例在 Looker 23.5.X 上,但导出内容是从 Looker 23.6.X 版中的实例创建的。
- 创建导出数据的实例的次要版本落后于目标实例的 Looker 版本,并且落后了多个版本。例如,目标实例在 Looker 23.6.X 上,但导出内容是从 Looker 23.4.X 版中的实例创建的。
在这种情况下,请升级导出实例或目标实例,使这两个实例都运行相同的 Looker 版本。