您可能需要从一个 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、Terraform 或 API 创建了 Looker (Google Cloud Core) 实例,但尚未创建 Looker 服务账号,则需要创建一个。
- 向 Looker 服务账号分配了
storage.objects.create
权限的 Cloud Storage 存储桶。Storage Object Creator (roles/storage.objectCreator
) IAM 角色包含此权限,因此您也可以将该角色分配给 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
) IAM 角色包含此权限,因此您也可以将该角色分配给 Looker 服务账号。 - 必须将
cloudkms.cryptoKeyVersions.useToDecrypt
权限分配给 Looker 服务账号。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 核心)用户可能会收到重新对任何使用 OAuth 进行个别用户身份验证的 BigQuery 或 Snowflake 数据库连接进行身份验证的提示。这是因为 Looker (Google Cloud Core) 导出内容可能不会保留单个用户数据库连接的 OAuth 访问令牌或刷新令牌。
用户可以使用以下方法之一对其数据库重新进行身份验证:
- 在用户查看使用单个 OAuth 数据库连接的探索或信息中心时,按照系统显示的登录提示操作。
- 前往其账号页面,然后针对 OAuth 连接凭据标题下的每个数据库选择登录。
在用户使用 OAuth 凭据登录之前,任何归单个用户所有且引用 OAuth 连接的自动安排或提醒都可能会中断。
排查 Looker (Google Cloud Core) 数据导出或导入问题
本部分介绍了如何修复可能导致导出或导入过程失败的错误情况。
导出过程中出现的错误
确保您已向 Looker 服务账号授予 Cloud Storage 存储桶的
storage.objects.create
权限或 Storage Object Creator (roles/storage.objectCreator
) IAM 角色。确保您已向 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
) IAM 角色。确保您已向 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 版本。