从 Cloud SQL 同步

如需从 Cloud SQL 中注入数据,请按以下步骤操作,设置 Cloud SQL 访问权限、创建数据存储区并注入数据。

为 Cloud SQL 实例设置临时存储桶访问权限

从 Cloud SQL 提取数据时,数据会先暂存到 Cloud Storage 存储桶。请按照以下步骤授予 Cloud SQL 实例对 Cloud Storage 存储分区的访问权限。

  1. 在 Google Cloud 控制台中,前往 SQL 页面。

    SQL

  2. 点击您计划从中导入数据的 Cloud SQL 实例。

  3. 复制实例的服务账号的标识符,该标识符类似于电子邮件地址,例如 p9876-abcd33f@gcp-sa-cloud-sql.

  4. 前往 IAM 和管理页面。

    IAM 和管理

  5. 点击授予访问权限

  6. 新的主账号中,输入实例的服务账号标识符,然后选择 Cloud Storage > Storage Admin 角色。

  7. 点击保存

下一步:

设置从其他项目访问 Cloud SQL

如需向 Gemini Enterprise 授予对其他项目中 Cloud SQL 数据的访问权限,请按以下步骤操作:

  1. 将以下 PROJECT_NUMBER 变量替换为您的 Gemini Enterprise 项目编号,然后复制代码块的内容。这是您的 Gemini Enterprise 服务账号标识符:

    service-PROJECT_NUMBER@gcp-sa-discoveryengine.
    
  2. 前往 IAM 和管理页面。

    IAM 和管理

  3. IAM 和管理页面上切换到 Cloud SQL 项目,然后点击授予访问权限

  4. 新的主账号中,输入服务账号的标识符,然后选择 Cloud SQL > Cloud SQL Viewer 角色。

  5. 点击保存

接下来,请参阅从 Cloud SQL 导入数据

从 Cloud SQL 导入数据

控制台

如需使用控制台从 Cloud SQL 注入数据,请按以下步骤操作:

  1. 在 Google Cloud 控制台中,前往 Gemini Enterprise 页面。

    Gemini Enterprise

  2. 前往数据存储区页面。

  3. 点击创建数据存储区

  4. 选择数据源页面上,选择 Cloud SQL

  5. 指定您计划导入的数据的项目 ID、实例 ID、数据库 ID 和表 ID。

  6. 点击浏览,选择要将数据导出到的中间 Cloud Storage 位置,然后点击选择。或者,直接在 gs:// 字段中输入位置。

  7. 选择是否启用无服务器导出功能。无服务器导出功能会产生额外费用。如需了解无服务器导出,请参阅 Cloud SQL 文档中的最大限度地降低导出对性能的影响

  8. 点击继续

  9. 为数据存储区选择一个区域。

  10. 为数据存储区输入名称。

  11. 点击创建

  12. 如需查看数据注入状态,请前往数据存储区页面,然后点击数据存储区名称,在其数据页面上查看相关详情。当活动标签页上的“状态”列从正在进行更改为导入已完成时,表示注入已完成。

    注入过程可能需要几分钟或几小时才能完成,具体取决于数据的大小。

REST

如需使用命令行创建数据存储区并从 Cloud SQL 注入数据,请按以下步骤操作:

  1. 创建数据存储区。

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -H "X-Goog-User-Project: PROJECT_ID" \
    "https://discoveryengine.googleapis.com/v1alpha/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores?dataStoreId=DATA_STORE_ID" \
    -d '{
      "displayName": "DISPLAY_NAME",
      "industryVertical": "GENERIC",
      "solutionTypes": ["SOLUTION_TYPE_SEARCH"],
    }'
    

    替换以下内容:

    • PROJECT_ID:您的项目的 ID。
    • DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
    • DISPLAY_NAME:数据存储区的显示名称。此信息可能会显示在 Google Cloud 控制台中。
  2. 从 Cloud SQL 导入数据。

      curl -X POST \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Content-Type: application/json" \
      "https://discoveryengine.googleapis.com/v1/projects/PROJECT_ID/locations/global/collections/default_collection/dataStores/DATA_STORE_ID/branches/0/documents:import" \
      -d '{
        "cloudSqlSource": {
          "projectId": "SQL_PROJECT_ID",
          "instanceId": "INSTANCE_ID",
          "databaseId": "DATABASE_ID",
          "tableId": "TABLE_ID",
          "gcsStagingDir": "STAGING_DIRECTORY"
        },
        "reconciliationMode": "RECONCILIATION_MODE",
        "autoGenerateIds": "AUTO_GENERATE_IDS",
        "idField": "ID_FIELD",
      }'
    

    替换以下内容:

    • PROJECT_ID:Gemini Enterprise 项目的 ID。
    • DATA_STORE_ID:数据存储区的 ID。ID 只能包含小写字母、数字、下划线和连字符。
    • SQL_PROJECT_ID:Cloud SQL 项目的 ID。
    • INSTANCE_ID:Cloud SQL 实例的 ID。
    • DATABASE_ID:Cloud SQL 数据库的 ID。
    • TABLE_ID:Cloud SQL 表的 ID。
    • STAGING_DIRECTORY:可选。Cloud Storage 目录,例如 gs://<your-gcs-bucket>/directory/import_errors
    • RECONCILIATION_MODE:可选。值为 FULLINCREMENTAL。默认值为 INCREMENTAL。 指定 INCREMENTAL 会导致系统以增量方式将数据从 Cloud SQL 刷新到您的数据存储区。此方法会执行 upsert 操作,即添加新文档,并将现有文档替换为具有相同 ID 的更新文档。 指定 FULL 会导致数据存储区中的文档完全重新定位。换句话说,系统会将新文档和更新后的文档添加到数据存储区,并从数据存储区中移除 Cloud SQL 中不存在的文档。如果您想自动删除不再需要的文档,FULL 模式会很有帮助。

后续步骤

  • 如需将数据存储区挂接到应用,请按照创建搜索应用中的步骤创建应用并选择数据存储区。

  • 如需在设置应用和数据存储区后预览搜索结果以了解其显示方式,请参阅预览搜索结果