您可能需要从一个 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 存储桶所需的对象和权限
- Looker 服务账号。如果您使用 Google Cloud CLI、Terraform 或 API 创建了 Looker (Google Cloud Core) 实例,但尚未创建 Looker 服务账号,则需要创建一个。
- 一个 Cloud Storage 存储桶,其中 Looker 服务账号被分配了
storage.objects.create
权限。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 服务账号。 - 必须向 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)用户会被要求重新对任何使用 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 服务账号授予
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 版本。