您可能需要从一个 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 (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 服务帐号授予导出所在的 Cloud Storage 存储桶的以下 IAM 权限:
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 版本。