使用代管式迁移将自行管理的 MySQL Metastore 迁移到 Dataproc Metastore

代管式迁移是一项自动化功能,可帮助您将数据从自行管理的 Hive Metastore 迁移到 Dataproc Metastore 服务,而无需任何较长的停机时间(也称为标志日)。

代管式迁移的运作方式

如需完成代管式迁移,您的服务必须运行两个迁移过程:开始迁移和完成迁移。您可以随时通过取消迁移流程取消迁移。您还可以运行许多操作命令,这些命令完成迁移并不需要这些命令。例如,列出迁移删除迁移

随着您的服务在此过程中的推进,还会在各种迁移状态迁移阶段之间切换。这些状态和阶段代表在后台发生的进程。例如,MIGRATING 状态表示您的服务正在主动将数据从 Cloud SQL 数据库转移到 Dataproc Metastore。

代管式迁移需要三个子网来运行迁移:proxy_subnetnat_subnetreverse_proxy_subnet。为避免出现任何延迟问题,请进行以下配置:

  • proxy_subnetnat_subnet,位于 Cloud SQL 所在区域。
  • reverse_proxy_subnet 与 Dataproc Metastore 服务位于同一区域。

如需详细了解不同类型的子网,请参阅子网的用途

代管式迁移流程

开始迁移

  1. 您在 Dataproc Metastore 服务上运行启动迁移过程。
  2. 您的 Dataproc Metastore 服务会连接到您的 Cloud SQL 数据库,该数据库充当自行管理的 Hive Metastore 的后端数据库。在此步骤中,Cloud SQL 数据库仍然是数据的可靠来源。

  3. Dataproc Metastore 运行变更数据捕获 (CDC) 流,将数据从 Cloud SQL 数据库复制到 Dataproc Metastore 数据库 (Cloud Spanner)。

    启动迁移成功后,您就可以开始将工作负载路由到 Dataproc Metastore。此时,Cloud SQL 仍然是数据的可靠来源。

完成迁移

将工作负载迁移到 Dataproc Metastore 后,您便可以完成迁移。调用完整迁移流程后,会发生以下情况:

  • 在完成迁移过程之前,Dataproc Metastore 将转换为只读模式。
  • CDC 流将所有运行中的数据转移到 Dataproc Metastore。
  • Dataproc Metastore 连接到 Spanner 并与 Cloud SQL 断开连接。Dataproc Metastore 现在充当数据的可靠来源。

准备工作

如要开始迁移,您必须设置或有权访问以下服务:

  • 配置了 Spanner 数据库类型的 Dataproc Metastore
  • 配置了专用 IPCloud SQL for MySQL 数据库实例。

    • Cloud SQL 实例的 VPC 网络具有所需的子网

    • Cloud SQL 使用的架构与其在将数据复制到的 Dataproc Metastore 服务上运行的 Hive Metastore 版本兼容。

    • 设置 Cloud SQL 以用作 Datastream 来源。 创建用户名和密码,将 Datastream 连接到 Cloud SQL。

必需的角色

如需获取创建 Dataproc Metastore 和启动代管式迁移所需的权限,请让管理员授予您以下 IAM 角色:

  • 如需授予对所有 Dataproc Metastore 资源的完整访问权限,包括设置 IAM 权限: 拥有 Dataproc Metastore 用户帐号或服务帐号的 Dataproc Metastore Admin (roles/metastore.admin)
  • 如需授予对 Dataproc Metastore 资源的完全控制权,请执行以下操作: 拥有 Dataproc Metastore 用户帐号或服务帐号的 Dataproc Metastore Editor (roles/metastore.editor) 权限
  • 如需创建代管式迁移,请执行以下操作: Dataproc Metastore [服务代理][7] 上的 Migration Admin (roles/metastore.migrationAdmin)
  • 如需将 Cloud Storage 对象与 Datastream 搭配使用,请执行以下操作:

如需详细了解如何授予角色,请参阅管理访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

配置代管式迁移

您可以使用 Dataproc Metastore API 配置迁移。

Dataproc Metastore 服务一次只能运行一项迁移。

开始迁移

当您开始迁移时,Dataproc Metastore 会连接到 Cloud SQL,并使用 Cloud SQL 作为其后端数据库。在此过程中,Dataproc Metastore 会运行一条流水线,将数据从 Cloud SQL 复制到自己的数据库 (Spanner)。

Dataproc Metastore 会继续使用 Cloud SQL 作为其后端,并复制数据,直到调用完整的迁移过程为止。

注意事项

  • 在您完成迁移过程之前,迁移将保持有效状态。完成迁移没有截止日期,例如,迁移可能需要 1 天、30 天或一年的时间。

  • 计划备份在迁移过程中不受限制。但是,备份可能不完整。为避免出现任何问题,请在迁移过程中停用所有计划备份。

开始迁移会触发以下状态更改:

  • Dataproc Metastore 会进入 MIGRATING 状态。
  • 迁移执行状态将变为 RUNNING
  • 迁移执行阶段进入 REPLICATION

控制台

开始设置

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面:

    打开 Dataproc Metastore

  2. Dataproc Metastore 页面上,点击您要迁移到的服务的名称。

    服务详细信息页面会打开。

  3. 点击页面顶部的迁移数据

    创建迁移页面会打开到连接标签页,并显示 Dataproc Metastore 的 Cloud SQL 数据库配置配置设置。

适用于 DPMS 的 Cloud SQL 数据库配置

  1. 实例连接名称中,按以下格式输入 Cloud SQL 数据库的实例连接名称:PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID

  2. IP 地址字段中,输入连接到 Cloud SQL 实例所需的 IP 地址。

  3. 端口字段中,输入 3306

  4. Hive 数据库名称字段中,输入要用作自行管理的 Hive Metastore 的后端的数据库的名称。

  5. 用户名字段中,输入用于将 Cloud SQL 连接到 Hive Metastore 的用户名。

  6. 密码字段中,输入用于将 Cloud SQL 连接到 Hive Metastore 的密码。

SOCKS5 代理服务

  1. 代理子网字段中,输入 Cloud SQL VPC 网络中使用的子网。此子网用于部署中间 SOCKS5 代理。

  2. Nat 子网字段中,输入 Private Service Connect 子网,该子网可提供从 Dataproc Metastore 服务连接到中间代理的连接。子网大小的前缀长度应至少为 /29

  3. 点击继续

    变更数据捕获 (CDC) 标签页会打开并显示 Datastream 的 Cloud SQL 数据库配置配置设置。

适用于数据流的 Cloud SQL 数据库配置

  1. 用户名字段中,输入您用于登录 Datastream 使用的 Cloud SQL CDC 的用户名。

  2. 密码字段中,输入您用于登录 Datastream 使用的 Cloud SQL CDC 的密码。

  3. VPC 网络字段中,输入 Datastream 用于与 CDC 建立专用连接时使用的 Cloud SQL 实例所在的 VPC 网络。

  4. 子网 IP 范围字段中,输入不小于 /29 的子网 IP 范围。Datastream 使用此 IP 与 VPC 网络建立对等互连。

  5. 反向代理子网字段中,输入您在 Cloud SQL 所在的 VPC 网络中创建的子网。Datastream 使用此子网。该子网用于托管 Datastream CDC 的反向代理连接。该子网必须在 Dataproc Metastore 服务所在的区域中配置。

GCS 配置

  1. 对于存储分区 ID,选择迁移期间用于存储 CDC 数据的 Cloud Storage 路径。

  2. 根路径字段中,输入 Cloud Storage 存储桶中的根路径。流事件数据会写入此路径。

  3. 点击创建

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d \
  '{
    "migration_execution": {
      "cloud_sql_migration_config": {
        "cloud_sql_connection_config": {
          "instance_connection_name": INSTANCE_CONNECTION_NAME,
          "hive_database_name": "HIVE_DATABASE_NAME",
          "ip_address": "IP_ADDRESS",
          "port": 3306,
          "username": "CONNECTION_USERNAME",
          "password": "CONNECTION_PASSWORD",
          "proxy_subnet": "PROXY_SUBNET",
          "nat_subnet": "NAT_SUBNET"
        },
        "cdc_config": {
          "username": "CDC_USENAME",
          "password": "CDC_PASSWORD",
          "vpc_network": "VPC_NETWORK",
          "subnet_ip_range": "SUBNET_IP_RANGE",
          "reverse_proxy_subnet": "REVERSE_PROXY_SUBNET_ID",
          "bucket": "BUCKET_NAME",
          "root_path": "ROOT_PATH",
        }
      }
    }
}' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:startMigration

请替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务的名称或 ID。
  • PROJECT_ID:您的 Dataproc Metastore 服务所在的 Google Cloud 项目的 ID。
  • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。

Cloud SQL 迁移配置

  • INSTANCE_CONNECTION_NAME:Cloud SQL 数据库的实例连接名称,格式为:PROJECT_ID/LOCATION/CLOUDSQL_INSTANCE_ID
  • HIVE_DATABASE_NAME:连接到 Cloud SQL 的自行管理的 Hive 数据库的名称。
  • IP_ADDRESS:连接到 Cloud SQL 实例所需的 IP 地址。
  • CONNECTION_USERNAME:您用于将 Cloud SQL 连接到 Hive Metastore 的用户名。
  • CONNECTION_PASSWORD:您用于将 Cloud SQL 连接到 Hive Metastore 的密码
  • PROXY_SUBNET:Cloud SQL VPC 网络中使用的子网。该子网托管一个中间代理,用于在传递网络之间提供连接。
  • NAT_SUBNETPrivate Service Connect 子网,用于提供来自 Dataproc Metastore 服务的连接,以访问中间代理。子网大小的前缀长度应至少为 /29,并且处于 IPv4 范围内。

CDC 配置

  • CDC_USERNAME:Datastream 服务用于登录 Cloud SQL 的用户名。
  • CDC_PASSWORD:Datastream 服务用于登录 Cloud SQL 的密码。
  • VPC_NETWORK:与 Cloud SQL 实例位于同一 VPC 网络中的网络,Datastream 会使用该实例与 CDC 建立专用连接。
  • SUBNET_IP_RANGE:Datastream 用于建立与 VPC 网络的对等互连的子网 IP 地址范围,至少为 /29。
  • REVERSE_PROXY_SUBNET_ID:Datastream 使用的 Cloud SQL 实例所在 VPC 网络中的子网。该子网用于托管 Datastream CDC 的反向代理连接。该子网必须在 Dataproc Metastore 服务所在的区域中配置。
  • BUCKET_NAME:迁移期间用于存储 CDC 数据的 Cloud Storage 路径。
  • ROOT_PATH:Cloud Storage 存储桶中的根路径。流事件数据会写入此路径。

完成迁移

完成迁移后,Dataproc Metastore 会连接到 Spanner 并开始使用 Spanner 作为其后端数据库。

完成迁移会触发以下状态更改:

  • Dataproc Metastore 会退回到 ACTIVE 状态。
  • 迁移执行任务的状态会变为 SUCCEEDED

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面。

  2. 点击页面顶部的迁移数据

    迁移数据页面会打开并显示已完成的代管式迁移。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
  -X POST -d '' \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:completeMigration

请替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务的名称或 ID。
  • PROJECT_ID:您的 Dataproc Metastore 服务所在的 Google Cloud 项目的 ID。
  • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。

取消迁移

如果您取消迁移,Dataproc Metastore 会还原所有更改,并开始使用 Spanner 数据库类型作为后端数据库。迁移期间传输的所有数据都会被删除。

取消迁移会触发以下状态更改:

  • Dataproc Metastore 会退回到 ACTIVE 状态。
  • 迁移执行任务的状态会变为 CANCELLED

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面。

  2. 点击页面顶部的迁移数据

    迁移数据页面会打开并显示已取消的代管式迁移。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -H "Content-Type:application/json" \
   -X POST -d '' \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE:cancelMigration

请替换以下内容:

  • SERVICE_NAME:您的 Dataproc Metastore 服务的名称或 ID。
  • PROJECT_ID:您的 Dataproc Metastore 服务所在的 Google Cloud 项目的 ID。
  • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。

获取迁移详情

获取单次代管式迁移的详细信息。

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面。

  2. 点击页面顶部的迁移数据

    迁移数据页面会打开并显示您的代管式迁移。

    如需了解详情,请点击代管式迁移的名称。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

请替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务的名称或 ID。
  • PROJECT_ID:您的 Dataproc Metastore 服务所在的 Google Cloud 项目的 ID。
  • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。
  • MIGRATION_ID:Dataproc Metastore 迁移的名称或 ID。

列出迁移

列出代管式迁移。

控制台

  1. 在 Google Cloud 控制台中,打开 Dataproc Metastore 页面。

  2. 点击页面顶部的迁移数据

    迁移数据页面会打开并显示您的代管式迁移。

  3. 验证该命令是否列出了迁移。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X GET \
  https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

请替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务的名称或 ID。
  • PROJECT_ID:您的 Dataproc Metastore 服务所在的 Google Cloud 项目的 ID。
  • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。

删除迁移

删除代管式迁移。

REST

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  -X DELETE \
   https://metastore.googleapis.com/v1alpha/projects/PROJECT_ID/locations/LOCATION/services/SERVICE/migrationExecutions/MIGRATION_ID

请替换以下内容:

  • SERVICE:您的 Dataproc Metastore 服务的名称或 ID。
  • PROJECT_ID:您的 Dataproc Metastore 服务所在的 Google Cloud 项目的 ID。
  • LOCATION:您的 Dataproc Metastore 服务所在的 Google Cloud 区域。
  • MIGRATION_ID:Dataproc Metastore 迁移的名称或 ID。

后续步骤