从 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) 实例。
  • 您想将数据从非生产实例导出到生产实例。

导出内容包括实例中的所有数据、配置和内容,但存在以下例外情况:

  • 任何 Google Cloud 控制台设置(必须在 Google Cloud 控制台中为每个实例进行设置)都不会导出。不过,Looker (Google Cloud Core) 应用内 Looker 管理面板中的设置会导出。
  • 存储在实例中的任何 OAuth 令牌都不会导出。如果为各个数据库连接使用 OAuth,那么在导入后,每个用户都必须重新登录,并刷新使用 OAuth 的所有数据库连接的令牌。
  • 如果您将导出内容导入到 Looker (Google Cloud Core) 实例中,而该实例使用的网络设置与创建导出内容的实例不同,则可能需要以不同的方式配置与外部服务的连接。
  • 如果将导出内容从一个 Google Cloud 项目中的实例移到另一个项目中的实例,则需要在新项目中设置 IAM 权限,以向用户授予对该实例的访问权限。

所需角色

如需获得导入或导出 Looker (Google Cloud Core) 实例数据所需的权限,请让管理员为您授予创建该实例的项目中的 Looker Admin (roles/looker.admin) IAM 角色。 如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

将 Looker (Google Cloud Core) 实例数据导出到 Cloud Storage 存储桶

以下部分介绍了如何导出实例数据。

导出到 Cloud Storage 存储桶所需的对象和权限

导出到 Cloud Storage 存储桶

如需导出数据,请选择以下选项之一:

控制台

  1. 前往 Google Cloud 控制台中的 Looker 页面。

    前往 Looker 实例

  2. 在页面顶部的选择组织下拉列表中,选择包含要导出数据的 Looker (Google Cloud Core) 实例的组织资源。

  3. 点击要为其导出数据的实例的名称。

  4. 点击导出

  5. 导出存储桶字段中,指定要创建导出制品的存储桶位置。您可以在输入字段中输入路径(如 <bucket_name>/<folder_name>),也可以浏览以选择存储桶中的相应位置。

  6. 选择客户管理的密钥字段中,选择将用于加密导出制品的 CMEK。

  7. 点击导出

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) IAM 角色包含此权限,因此您也可以将该角色分配给 Looker 服务账号。
  • 必须向 Looker 服务账号分配 cloudkms.cryptoKeyVersions.useToDecrypt 权限。Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter) 角色包含此权限,因此您也可以将该角色分配给 Looker 服务账号。

从 Cloud Storage 存储桶导入

如需导入数据,请选择以下选项之一:

控制台

  1. 前往 Google Cloud 控制台中的 Looker 页面。

    前往 Looker 实例

  2. 在页面顶部的选择组织下拉列表中,选择包含要导入数据的 Looker (Google Cloud Core)实例的组织资源。

  3. 点击要将数据导入到的实例的名称。

  4. 点击导入 (IMPORT)。

  5. 导入存储分区字段中,输入路径或浏览到您导出数据的 Cloud Storage 位置。选择包含 metadata.json 文件和其他文件的文件夹。

  6. 点击导入 (IMPORT)。

gcloud

gcloud looker instances import INSTANCE_NAME \
--source-gcs-uri='gs://BUCKET_NAME/FOLDER_NAME'

替换以下内容:

  • INSTANCE_NAME:Looker (Google Cloud Core) 实例的名称;与实例网址无关
  • BUCKET_NAMEmetadata.json 文件和其他文件所在的 Cloud Storage 存储桶位置
  • FOLDER_NAMEmetadata.json 文件和其他文件所在的文件夹

导入后,Looker (Google Cloud Core)用户会被要求重新对任何使用 OAuth 进行个人用户身份验证的 BigQuerySnowflake 数据库连接进行身份验证。这是因为 Looker (Google Cloud Core) 导出不会保留各个用户数据库连接的 OAuth 访问令牌或刷新令牌。

用户可以通过以下方法之一重新对数据库进行身份验证:

  • 按照用户在查看使用个人 OAuth 数据库连接的探索或信息中心时显示的登录提示操作。
  • 前往其账号页面,然后针对 OAuth 连接凭据标题下的每个数据库选择登录

如果任何自动化时间表或提醒归单个用户所有,并且引用了 OAuth 连接,那么在相应用户使用其 OAuth 凭据登录之前,这些时间表或提醒都将无法正常运行。

排查 Looker (Google Cloud Core) 数据导出或导入问题

本部分介绍了如何修正可能导致导出或导入流程失败的错误情况。

导出过程中出现的错误

导入错误

  • 确保您已向 Looker 服务账号授予对 Cloud Storage 存储桶storage.objects.get 权限或 Storage Object Viewer (roles/storage.objectViewer) IAM 角色。

  • 确保您已向 Looker 服务账号授予 cloudkms.cryptoKeyVersions.useToDecrypt 权限或 Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter) 角色,以访问您创建的客户管理的加密密钥 (CMEK)

  • 由于目标实例与导出实例之间的版本不兼容,导入可能会失败,具体如下:

    • 目标实例的 Looker 次要版本低于导出数据的 Looker 版本。例如,目标实例使用的是 Looker 23.5.X,但导出是从 Looker 版本 23.6.X 的实例创建的。
    • 创建导出数据的实例的次要版本比目标实例的 Looker 版本落后多个版本。例如,目标实例使用的是 Looker 23.6.X,但导出是从使用 Looker 23.4.X 的实例创建的。

    在这种情况下,请升级导出实例或目标实例,使这两个实例运行相同的 Looker 版本。