您可能需要将 Looker (Google Cloud Core) 实例数据(包括创建的内容和有关 Looker (Google Cloud Core) 实例的内部数据)从一个 Looker (Google Cloud Core) 实例导出,然后将该数据导入到另一个 Looker (Google Cloud Core) 实例。您可能需要导出和导入数据的原因有以下几种:
- 您想要升级或降级到不同版本的 Looker (Google Cloud Core)。
- 您想要添加只能在创建实例期间启用的设置,例如 Private Service Connect 或 CMEK。
- 您想要迁移到其他项目中的 Looker (Google Cloud Core) 实例。
- 您想要迁移到其他区域中的 Looker (Google Cloud Core) 实例。
- 您想要将数据从非生产实例导出到生产实例。
一次性导出包含实例中的所有数据、配置和内容(包括 BigQuery 数据),但以下情况除外:
- 数据洞察 报告不会导出。
- 任何 Google Cloud 控制台设置(必须在每个实例的 Google Cloud 控制台中进行)都不会导出。不过,Looker (Google Cloud Core) 应用中 Looker 管理员 面板中的设置会导出。
- 存储在实例中的任何 OAuth 令牌都不会导出。如果 OAuth 用于各个数据库连接,则导入后,每个用户都必须重新登录,并为使用 OAuth 的任何数据库连接刷新其令牌。
- Looker 应用 API 密钥不会导出。所有用户都将失去对所有现有 API 密钥的访问权限,因为 API 密钥不会包含在导入的软件包中。
- 如果您导出并导入到 Looker (Google Cloud Core) 实例,该实例使用的 网络设置与创建导出的实例不同,则您可能需要以不同的方式配置与外部服务的连接。
- 如果从一个 Google Cloud 项目中的实例导出的内容移到了另一个项目中的实例,则需要在新项目中设置 IAM 权限,以便为用户提供对该实例的访问权限。
当计划的导出作业正在运行时,无法进行一次性数据导出和导入。如需了解计划的导出作业,请参阅为 Looker (Google Cloud Core) 实例创建计划的导出文档页面。
Looker (Google Cloud Core) 导入和导出不支持将数据从不符合 FIPS 标准的实例移到符合 FIPS 标准 的实例。
所需的角色
如需获得导入或导出 Looker (Google Cloud Core) 实例数据所需的权限,请让您的管理员为您授予以下 IAM 角色和权限:
在创建实例的项目中,Looker Admin (
roles/looker.admin) IAM 角色。在将创建导出的 Cloud Storage 存储桶中,
storage.buckets.getIamPolicy和storage.buckets.setIamPolicy权限。Storage Admin (roles/storage.admin) 或 Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) 角色也包含这些权限,因此您也可以请求授予其中一个角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
将 Looker (Google Cloud Core) 实例数据导出到 Cloud Storage 存储桶
以下部分介绍了如何导出实例数据。
导出到 Cloud Storage 存储桶所需的对象和权限
以下列表显示了导出到 Cloud Storage 存储桶所需的对象和权限:
- 一个 Looker 服务账号。如果您使用 Google Cloud CLI、Terraform 或 API 创建了 Looker (Google Cloud Core) 实例,但尚未创建 Looker 服务帐号,则需要创建一个。
一个 Cloud Storage 存储桶,并向 Looker 服务帐号分配了以下 IAM 权限:
storage.objects.create权限 - Storage Object Creator (roles/storage.objectCreator) IAM 角色包含此权限,因此您也可以将该角色分配给 Looker 服务帐号。storage.buckets.getIamPolicy和storage.buckets.setIamPolicy权限 - Storage Admin (roles/storage.admin) 或 Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) 角色也包含这些权限,因此您也可以请求授予其中一个角色。
一个 客户管理的加密密钥 (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>,也可以浏览以选择存储桶中的相应位置。在选择 Cloud KMS 密钥 字段中,选择要用于加密导出工件的 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 存储桶导入所需的权限
以下列表显示了从 Cloud Storage 存储桶导入所需的权限:
- 一个 Looker 服务账号。如果您使用 Google Cloud CLI、Terraform 或 API 创建了 Looker (Google Cloud Core) 实例,但尚未创建 Looker 服务帐号,则需要创建一个。
向 Looker 服务帐号授予以下 IAM 权限,这些权限位于导出所在的 Cloud Storage 存储桶中:
storage.objects.get- Storage Object Viewer (roles/storage.objectViewer) IAM 角色包含此权限,因此您也可以将该角色分配给 Looker 服务帐号。storage.buckets.getIamPolicy和storage.buckets.setIamPolicy权限 - Storage Admin (roles/storage.admin) 或 Storage Legacy Bucket Owner (roles/storage.legacyBucketOwner) 角色也包含这些权限,因此您也可以请求授予其中一个角色。
必须向 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 服务帐号授予
storage.objects.create权限或 Storage Object Creator (roles/storage.objectCreator) IAM 角色,以便访问 Cloud Storage 存储桶。确保您已向 Looker 服务帐号授予
cloudkms.cryptoKeyVersions.useToEncrypt权限或 Cloud KMS CryptoKey Encrypter (roles/cloudkms.cryptoKeyEncrypter) 角色,以便访问您创建的 客户管理的加密密钥 (CMEK)。在导出数据之前,请确保给定的 Cloud Storage 位置 中没有任何来自先前导出操作的文件。如果有任何预先存在的文件,请先将其移除。
您无法使用启用了 请求者付款 功能的 Cloud Storage 存储桶。
导入错误
确保您已向 Looker 服务帐号授予
storage.objects.get权限或 Storage Object Viewer (roles/storage.objectViewer) IAM 角色,以便访问 Cloud Storage 存储桶。确保您已向 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 版本。