您可能需要从一个 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>
输入到输入字段中,也可以浏览以在存储分区中选择合适的位置。在 Select a customer-managed key(选择客户管理的密钥)字段中,选择要用于加密导出工件的 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 服务账号。 - 必须向 Looker 服务账号分配
cloudkms.cryptoKeyVersions.useToDecrypt
权限。Cloud KMS CryptoKey Decrypter (roles/cloudkms.cryptoKeyDecrypter
) 角色包含此权限,因此您也可以将该角色分配给 Looker 服务账号。
从 Cloud Storage 存储分区导入
如需导入数据,请选择以下选项之一:
控制台
前往 Google Cloud 控制台中的 Looker 页面。
在页面顶部的选择组织下拉列表中,选择包含您要导入数据的 Looker(Google Cloud 核心)实例的组织资源。
点击要将数据导入到的目标实例的名称。
点击导入 (IMPORT)。
在 Import Bucket(导入存储分区)字段中,输入路径或浏览到您导出数据的 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 服务账号授予
cloudkms.cryptoKeyVersions.useToEncrypt
权限,或向您创建的客户管理的加密密钥 (CMEK) 授予 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 版本。