将数据从 MySQL 复制到 BigQuery

本教程介绍了如何创建和部署将更改的数据从 MySQL 数据库持续复制到 BigQuery 表的流水线。

目标

在本教程中,您将执行以下操作:

  1. 在 Compute Engine 上部署 MySQL 数据库。
  2. 设置 MySQL 数据库以启用复制功能。
  3. 创建并运行 Cloud Data Fusion 复制作业。
  4. 在 BigQuery 中查看结果。

费用

本教程使用 Google Cloud 的以下收费组件:

复制功能运行时,您需要为 Dataproc 集群付费,并且会对 BigQuery 产生处理费用。为了优化这些费用,我们强烈建议您使用 BigQuery 统一费率价格

请使用价格计算器根据您的预计使用情况来估算费用。 Google Cloud 新用户可能有资格申请免费试用

准备工作

  1. 登录您的 Google Cloud 帐号。如果您是 Google Cloud 新手,请创建一个帐号来评估我们的产品在实际场景中的表现。新客户还可获享 $300 赠金,用于运行、测试和部署工作负载。
  2. 在 Google Cloud Console 的项目选择器页面上,选择或创建一个 Google Cloud 项目。

    转到“项目选择器”

  3. 确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能

  4. 启用 Cloud Data Fusion, BigQuery, and Cloud Storage API。

    启用 API

  5. 在版本 6.3.0 或更高版本中,创建私有 Cloud Data Fusion 实例。设置该实例时:

如果您使用现有实例,或者如果您未在 Cloud Data Fusion 菜单 中看到复制功能,请参阅升级以启用复制功能

在 Compute Engine 中安装 MySQL

  1. 下载 MySQL Server Docker 映像。

  2. 将您的 Docker 映像上传到 Container Registry。

  3. 在新的虚拟机实例上部署 Docker 映像。

  4. 在 Compute Engine 磁盘页面上,将磁盘大小更改为 500 GB,然后重启虚拟机。

    转到“磁盘”页面

  5. 为虚拟机实例创建防火墙

  6. 安装 Sakila 示例数据库

在 MySQL 数据库中启用复制功能

如需启用复制功能,请在 MySQL 中设置变更数据捕获 (CDC)

创建并运行 Cloud Data Fusion 复制作业

上传 JDBC 驱动程序

  1. 将 MySQL JDBC 驱动程序(版本 8 或更高版本)下载到本地机器

  2. 在 Cloud Data Fusion 界面中,上传 JDBC 驱动程序

    使用以下值配置 JDBC 驱动程序:

    • 名称字段中,输入 mysql
    • 版本字段中,保留默认值。
    • 类名称字段中,输入 com.mysql.jdbc.Driver

创建流水线

  1. 在 Cloud Data Fusion 界面中,点击菜单 ,然后导航到复制页面。

  2. 创建新的复制作业 (Create new replication job) 页面上,指定复制作业的名称

  3. 点击下一步

  4. 配置来源:

    1. 选择 MySQL 作为来源。
    2. 对于主机,输入要从中读取的 MySQL 服务器的主机名。
    3. 对于端口,输入要用于连接到 MySQL 服务器的端口:3306
    4. 对于 JDBC 插件名称 (JDBC Plugin Name),选择 mysql(或您在配置 JDBC 驱动程序时指定的名称)。
    5. 对于数据库名称,输入 sakila
    6. “凭据”部分中,输入您的用户名和密码以访问 MySQL 服务器。
  5. 点击下一步

  6. 如果连接成功,系统将显示 Sakila 示例数据库表的列表。在本教程中,选择一些要复制的表和事件(包括插入、更新和删除事件)。

  7. 点击下一步

  8. 配置目标:

    1. 选择 BigQuery 目标。
    2. 系统会自动检测项目 ID服务帐号密钥。请保留默认值。
    3. (可选)在高级部分中,您可以配置暂存存储分区的名称和位置、加载间隔、暂存表前缀以及删除表或数据库时的行为。
  9. 点击下一步

  10. (可选)配置高级属性。在本教程中,您可以使用默认设置。

  11. 点击下一步

  12. 审核评估 (Review assessment) 页面上,点击任一表的查看映射 (View mappings),以获取复制期间可能发生的架构问题、缺少功能或连接问题的评估。如果出现任何问题,必须先解决问题,然后才能继续操作。在本教程中,如果任何表出现问题,请返回到选择表的步骤,然后改为选择一个没有问题的表或事件(插入、更新或删除)。

  13. 点击 Back(返回)。

  14. 点击下一步

  15. 查看摘要复制作业详情,然后点击部署复制作业 (Deploy Replication job)。

启动流水线

复制作业详情 (Replication job details) 页面上,执行以下操作:

点击开始

复制作业从正在预配依次转换为正在启动正在运行状态。在正在运行状态下,复制作业会将您选择的表数据的初始快照加载到 BigQuery 中。在此状态下,表状态显示为正在拍摄快照。在初始快照加载到 BigQuery 后,对表所做的任何更改都会复制到 BigQuery,并且表状态会显示为正在复制

监控流水线

您可以启动和停止复制作业、查看复制作业的配置和日志以及监控复制作业。

您可以通过复制作业详情 (Replication job details) 页面监控复制作业活动。

  1. 复制页面中,点击所需的复制作业的名称

  2. 点击 Monitoring

在 BigQuery 中查看结果

复制作业会在 BigQuery 中使用继承自相应 MySQL 数据库的名称和表名称创建复制数据集和表。

  1. 在 Cloud Console 中,打开 BigQuery

  2. 在左侧面板中,点击您的项目名称以展开数据集列表。

  3. 选择 sakila 数据集,然后选择一个表。

如需了解详情,请参阅 BigQuery 文档

清除数据

为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,请删除包含这些资源的项目,或者保留项目但删除各个资源。

学完本教程后,请清理在 Google Cloud 上创建的资源,以避免这些资源占用配额,日后产生费用。以下部分介绍如何删除或关闭这些资源。

删除 Cloud Data Fusion 实例

按照说明删除 Cloud Data Fusion 实例

删除项目

为了避免产生费用,最简单的方法是删除您为本教程创建的项目。

如需删除项目,请执行以下操作:

  1. 在 Cloud Console 中,转到管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤