安排 MySQL 转移
借助 BigQuery Data Transfer Service MySQL 连接器,您可以将数据从 MySQL 实例注入到 BigQuery。它支持托管在本地环境、Cloud SQL 以及其他公有云服务提供商(例如 Amazon Web Services [AWS] 和 Microsoft Azure)中的 MySQL 实例。借助 BigQuery Data Transfer Service MySQL 连接器,您还可以创建按需和周期性数据传输作业,以便将数据从 MySQL 数据库传输到 BigQuery。
准备工作
- 在 MySQL 数据库中创建用户。
- 确认您已完成启用 BigQuery Data Transfer Service 所需的所有操作。
- 创建 BigQuery 数据集来存储数据。
- 确保您拥有完成本文档中任务所需的角色。
所需的角色
如果您想要为 Pub/Sub 设置转移作业运行通知,请确保拥有 pubsub.topics.setIamPolicy
Identity and Access Management (IAM) 权限。如果您只想设置电子邮件通知,则无需 Pub/Sub 权限。如需了解详情,请参阅 BigQuery Data Transfer Service 运行通知。
如需获得创建 MySQL 数据传输所需的权限,请让管理员为您授予项目的 BigQuery Admin (roles/bigquery.admin
) IAM 角色。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含创建 MySQL 数据传输所需的权限。如需查看所需的确切权限,请展开所需权限部分:
所需权限
创建 MySQL 数据传输需要以下权限:
-
bigquery.transfers.update
-
bigquery.datasets.get
网络连接数
如果公共 IP 地址不适用于 MySQL 数据库连接,您必须设置网络连接。
如需详细了解所需的网络设置,请参阅以下文档:
- 如果您要从 Cloud SQL 进行转移,请参阅配置 Cloud SQL 实例访问权限。
- 如果您要从 AWS 进行转移,请参阅设置 AWS-Google Cloud VPN 和网络附加项。
- 如果您要从 Azure 进行转移,请参阅设置 Azure-Google Cloud VPN 和网络附加项。
限制
MySQL 数据转移存在以下限制:
- 与 MySQL 数据库的并发连接数上限由 MySQL 配置参数
max_connections
决定。默认情况下,此值设置为 151 个连接,但您可以根据需要将其配置为更高的限制。因此,单个 MySQL 数据库的并发迁移作业运行数不得超过该上限。这一限制也意味着,并发传输作业的数量应限制在小于 MySQL 数据库支持的并发连接数上限的值。 - 在 MySQL 中,某些数据类型会映射到 BigQuery 中的字符串类型,以避免数据丢失。例如,在 MySQL 中定义的没有定义精度和标度的数值类型会映射到 BigQuery 中的字符串类型。
设置 MySQL 数据转移
从下列选项中选择一项:
控制台
进入数据传输页面。
点击
创建转移作业。在来源类型部分的来源中,选择 MySQL。
在转移配置名称部分的显示名称中,输入转移作业的名称。转移作业名称可以是任何可让您以后在需要修改转移作业时识别该转移作业的值。
在时间表选项部分中,执行以下操作:
- 选择重复频率。如果您选择小时、天(默认)、周或月选项,则还必须指定频率。您还可以选择自定义选项,以创建更具体的重复频率。如果您选择按需选项,则只有在手动触发数据转移作业时,此数据转移作业才会运行。
- 如果适用,请选择立即开始或在设置的时间开始选项,并提供开始日期和运行时间。
在目标设置部分的数据集字段中,选择您创建用来存储数据的数据集,或点击新建数据集,然后创建一个数据集以用作目标数据集。
在数据源详细信息部分中,执行以下操作:
- 对于网络连接,选择现有网络连接或点击创建网络连接。如需了解详情,请参阅本文档的网络连接部分。
- 对于主机,输入 MySQL 数据库服务器的主机名或 IP 地址。
- 对于端口号,输入 MySQL 数据库服务器的端口号。
- 对于数据库名称,输入 MySQL 数据库的名称。
- 在用户名中,输入发起 MySQL 数据库连接的 MySQL 用户的用户名。
- 对于密码,输入启动 MySQL 数据库连接的 MySQL 用户的密码。
- 对于加密模式,从菜单中选择 Full 以在连接到 MySQL 数据库时启用完整 SSL 验证,或选择 Disable 以停用 SSL 验证。
对于要转移的 MySQL 对象,请执行以下操作之一:
- 点击浏览,选择转移所需的 MySQL 表,然后点击选择。
- 在要转移的 MySQL 对象中手动输入表的名称。
可选:在服务账号菜单中,指定用于向数据转移授权的自定义服务账号。确保所使用的服务账号具有所有必要的角色和权限。如需了解详情,请参阅以服务账号身份转移所有者。
可选:在通知选项部分中,执行以下操作:
点击保存。
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
:
bq mk \ --transfer_config \ --project_id=PROJECT_ID \ --data_source=DATA_SOURCE \ --display_name=DISPLAY_NAME \ --target_dataset=DATASET \ --params='PARAMETERS'
替换以下内容:
- PROJECT_ID(可选):您的 Google Cloud 项目 ID。
如果未提供
--project_id
标志来指定具体项目,则系统会使用默认项目。 - DATA_SOURCE:数据源,即
mysql
。 - DISPLAY_NAME:数据转移作业配置的显示名称。转移作业名称可以是任何可让您在需要修改转移作业时识别该转移作业的名称。
- DATASET:数据转移作业配置的目标数据集。
PARAMETERS:所创建转移作业配置的参数(采用 JSON 格式)。例如
--params='{"param":"param_value"}'
。以下是 MySQL 转移作业的参数:networkAttachment
(可选):要连接到 MySQL 数据库的网络连接的名称。connector.database
:MySQL 数据库的名称。connector.endpoint.host
:数据库的主机名或 IP 地址。connector.endpoint.port
:数据库的端口号。connector.authentication.username
:数据库用户的用户名。connector.authentication.password
:数据库用户的密码。 connector.connectionTypeconnector.connectionType
(可选):用于确定连接网址的连接类型。可以为SERVICE
、SID
或TNS
。如果未提供,则默认为SERVICE
。connector.encryptionMode
:加密模式。此值可以是FULL
(连接到 MySQL 数据库时进行完整 SSL 验证),也可以是DISABLE
(不进行 SSL 验证)。assets
:要从 MySQL 数据库传输的 MySQL 表的名称列表。
例如,以下命令会创建一个名为 My Transfer
的 MySQL 传输:
bq mk \ --transfer_config \ --target_dataset=mydataset \ --data_source=mysql \ --display_name='My Transfer' \ --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"], \ "connector.authentication.username": "User1", \ "connector.authentication.password":"ABC12345", \ "connector.encryptionMode":"FULL", \ "connector.database":"DB1", \ "connector.endpoint.host":"54.74.220.23", \ "connector.endpoint.port":"3306"}'
API
使用 projects.locations.transferConfigs.create
方法并提供 TransferConfig
资源实例。
数据类型映射
下表将 MySQL 数据类型映射到相应的 BigQuery 数据类型。
MySQL 数据类型 | BigQuery 数据类型 |
---|---|
BIT |
BOOLEAN |
TINYINT |
INTEGER |
BOOL ,BOOLEAN |
BOOLEAN |
SMALLINT |
INTEGER |
MEDIUMINT |
INTEGER |
INT ,INTEGER |
INTEGER |
BIGINT |
BIGNUMERIC |
FLOAT |
FLOAT |
DOUBLE |
FLOAT |
DECIMAL |
BIGNUMERIC |
DATE |
DATE |
DATETIME |
TIMESTAMP |
TIMESTAMP |
TIMESTAMP |
TIME |
TIME |
YEAR |
DATE |
CHAR |
STRING |
VARCHAR |
STRING |
BINARY |
BYTES |
VARBINARY |
BYTES |
TINYBLOB |
BYTES |
TINYTEXT |
STRING |
BLOB |
BYTES |
TEXT |
STRING |
MEDIUMBLOB |
BYTES |
MEDIUMTEXT |
STRING |
LONGBLOB |
BYTES |
LONGTEXT |
STRING |
ENUM |
STRING |
SET |
STRING |
问题排查
如果您在设置数据转移作业时遇到问题,请参阅 MySQL 转移问题。
后续步骤
- 如需大致了解 BigQuery Data Transfer Service,请参阅 什么是 BigQuery Data Transfer Service?。
- 如需了解如何使用转移作业,包括获取有关转移作业配置的信息、列出转移作业配置以及查看转移作业的运行历史记录,请参阅管理转移作业。
- 了解如何通过跨云操作加载数据。