将数据从 SQL Server 复制到 BigQuery

本教程介绍了如何创建和部署将更改的数据从 Microsoft SQL Server 数据库持续复制到 BigQuery 表的作业。

目标

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

  1. 在 SQL Server 数据库中启用变更数据捕获 (CDC)。
  2. 创建并运行 Cloud Data Fusion 复制作业。
  3. 在 BigQuery 中查看结果。

费用

在本文档中,您将使用的以下收费组件: Google Cloud

您可使用 价格计算器 根据您的预计使用情况来估算费用。

新 Google Cloud 用户可能有资格申请免费试用

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

准备工作

  1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  2. Verify that billing is enabled for your Google Cloud project.

  3. Enable the Cloud Data Fusion, BigQuery, and Cloud Storage APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  4. 在版本 6.3.0 或更高版本中,创建公共 Cloud Data Fusion 实例如果您创建的是私有实例,请设置 VPC 网络对等互连。
    • 创建实例时,通过 点击 添加加速器 ,然后选中 复制 复选框来启用复制功能。
    • 如需在现有实例中启用此功能,请参阅 启用 复制功能

如需详细了解网络,请参阅将 HAProxy 与 Cloud Data Fusion 结合使用以浏览复杂的网络拓扑

所需角色

如需获取本教程所需的权限,请参阅 使用 IAM 进行访问权限控制授予服务帐号用户权限

可选:设置 SQL Server 虚拟机实例

  1. 创建一个 SQL Server 实例

  2. 下载 AdventureWorks2017 (OLTP) 数据库加载数据 到 SQL Server 实例中。

在 SQL Server 数据库中启用 CDC

如需进行复制,请在要复制的 数据库 上启用变更数据捕获 (CDC)。

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

上传 JDBC 驱动程序

  1. 下载 SQL Server JDBC 驱动程序 到本地机器。

  2. 在 Cloud Data Fusion 网页界面中,上传 JDBC 驱动程序。 使用以下值配置 JDBC 驱动程序:

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

创建作业

  1. 在 Cloud Data Fusion 网页界面中,点击复制

  2. 点击 创建复制作业

  3. 创建新的复制作业 页面上,指定复制作业的名称 ,然后点击下一步

  4. 配置来源:

    1. 选择 Microsoft SQL Server 作为来源。
    2. 对于主机,输入要从中读取的 SQL Server 的主机名。
    3. 对于端口,输入要用于连接到 SQL Server 的端口:1433
    4. 对于 JDBC 插件名称 ,选择 sqlserver 或您在配置 JDBC 驱动程序时指定的名称。
    5. 对于数据库名称,输入AdventureWorks2017
    6. 凭据部分中,输入您的用户名和密码以访问 SQL Server。
  5. 点击下一步

  6. 配置目标:

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

  8. 如果连接成功,系统将显示 AdventureWorks2017 表的列表。在本教程中,选择一些表和事件,例如 InsertUpdateDelete 事件。

  9. 可选:配置高级属性。在本教程中,您可以接受默认设置。

  10. 点击下一步

  11. 审核评估 页面上,点击任一表的查看映射 ,以评估复制期间可能发生的架构问题、缺少功能或连接问题。您必须先解决问题,然后才能继续。在本教程中,如果任何表出现问题,请返回到选择表的步骤,然后选择一个没有问题的表或事件。

    如需详细了解从源数据库到 BigQuery 目标的数据类型转换,请参阅 复制数据类型

  12. 点击 Back (返回)。

  13. 点击下一步

  14. 查看摘要复制作业详情,然后点击部署复制作业

启动作业

  • 复制作业详情 页面中,点击启动

复制作业从正在预配 依次转换为正在启动正在运行 状态。在正在运行状态下,复制作业会将您选择的表数据的初始快照(例如,人员表)加载到 BigQuery 中。在此状态下,人员表的状态显示为正在截取快照 (Snapshotting)。在初始快照加载到 BigQuery 后,对人员表所做的任何更改都会复制到 BigQuery。该表的状态会显示为正在复制

监控作业

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

您可以通过复制作业详情 页面监控复制作业活动。

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

  2. 点击监控

在 BigQuery 中查看结果

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

  1. 在 Google Cloud 控制台中打开 BigQuery

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

  3. 选择 adventureworks2017 数据集,然后选择要查看的表。

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

清理

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

完成本教程后,请删除您在 Google Cloud上创建的资源。

删除虚拟机实例

  1. 在 Google Cloud 控制台中,转到 虚拟机实例 页面。

    转到“虚拟机实例”

  2. 选中要删除的实例对应的复选框。
  3. 如需删除实例,请依次点击 更多操作删除,然后按照说明操作。

删除 Cloud Data Fusion 实例

按照说明删除 Cloud Data Fusion 实例

删除项目

  1. 在 Google Cloud 控制台中,前往 管理资源 页面。

    转到“管理资源”

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

后续步骤