概览
本文档介绍了通过公共 IP 地址将数据从 Amazon Redshift 迁移到 BigQuery 的过程。
如果您想要通过虚拟私有云 (VPC) 在专用 IP 地址上转移 Redshift 实例中的数据,请参阅通过 VPC 迁移 Amazon Redshift 数据。
借助 BigQuery Data Transfer Service,您可以将数据从 Amazon Redshift 数据仓库复制到 BigQuery。此服务与 GKE 中的迁移代理合作,触发从 Amazon Redshift 到 Amazon S3 存储分区中的暂存区域的卸载操作。然后,BigQuery Data Transfer Service 会将 Amazon S3 存储分区中的数据迁移到 BigQuery。
下图展示了迁移期间 Amazon Redshift 数据仓库与 BigQuery 之间的整体数据流动情况。

准备工作
本部分介绍如何逐步设置从 Amazon Redshift 到 BigQuery 的数据迁移。具体步骤包括:
- Google Cloud 要求:满足 Google Cloud 的前提条件并在其上设置权限。
- 授予对 Amazon Redshift 集群的访问权限。
- 授予对您用于临时暂存数据的 Amazon S3 存储分区的访问权限。 请记下访问密钥对,以便在后续步骤中使用。
- 设置借助 BigQuery Data Transfer Service 进行的迁移。您需要有:
- Amazon Redshift JDBC 网址。请按照获取 JDBC 网址的说明进行操作。
- Amazon Redshift 数据库的用户名和密码。
- AWS 访问密钥对,将通过授予对 S3 存储分区的访问权限步骤获取。
- Amazon S3 存储分区的 URI。我们建议您为此存储分区设置生命周期政策,以避免产生不必要的费用。建议的到期时间为 24 小时,以便您有足够的时间将所有数据转移到 BigQuery。
所需权限
创建 Amazon Redshift 转移作业的准备工作:
确保创建转移作业的人员在 BigQuery 中拥有以下所需权限:
- 创建转移作业所需的
bigquery.transfers.update
权限 - 针对目标数据集的
bigquery.datasets.update
权限
预定义的 IAM 角色
bigquery.admin
包含bigquery.transfers.update
和bigquery.datasets.update
权限。如需详细了解 BigQuery Data Transfer Service 中的 IAM 角色,请参阅访问权限控制参考文档。- 创建转移作业所需的
请参阅 Amazon S3 的相关文档,以确保您已配置启用转移作业所需的所有权限。Amazon S3 源数据必须至少包含对其应用的 AWS 代管政策
AmazonS3ReadOnlyAccess
。
Google Cloud 要求
为了确保成功实现 Amazon Redshift 数据仓库迁移,必须满足下列 Google Cloud 的前提条件:
选择或创建 Google Cloud 项目以存储迁移数据。
-
在 Google Cloud Console 中,转到项目选择器页面。
-
选择或创建 Google Cloud 项目。
-
启用 BigQuery Data Transfer Service API。
在 Google Cloud Console 中,点击 BigQuery Data Transfer Service API 页面上的启用按钮。
新项目中会自动启用 BigQuery。对于现有项目,您可能需要启用 BigQuery API。绿色对勾标记表示您已启用了 API。
创建 BigQuery 数据集来存储数据。您不需要创建任何表。
授予对 Amazon Redshift 集群的访问权限
遵循 Amazon 提供的说明将以下 IP 地址列入许可名单。您可以将与您的数据集位置对应的 IP 地址列入许可名单,也可以将下表中的所有 IP 地址列入许可名单。以下是为 Amazon Redshift 数据迁移预留的 Google 拥有的 IP 地址。
区域位置
区域说明 | 区域名称 | IP 地址 | |
---|---|---|---|
美洲 | |||
拉斯维加斯 | us-west4 |
34.125.53.201 34.125.69.174 34.125.159.85 34.125.152.1 34.125.195.166 34.125.50.249 34.125.68.55 34.125.91.116 |
|
洛杉矶 | us-west2 |
35.236.59.167 34.94.132.139 34.94.207.21 34.94.81.187 34.94.88.122 35.235.101.187 34.94.238.66 34.94.195.77 |
|
蒙特利尔 | northamerica-northeast1 |
34.95.20.253 35.203.31.219 34.95.22.233 34.95.27.99 35.203.12.23 35.203.39.46 35.203.116.49 35.203.104.223 |
|
北弗吉尼亚 | us-east4 |
35.245.95.250 35.245.126.228 35.236.225.172 35.245.86.140 35.199.31.35 35.199.19.115 35.230.167.48 35.245.128.132 35.245.111.126 35.236.209.21 |
|
俄勒冈 | us-west1 |
35.197.117.207 35.197.117.207 35.197.86.233 34.82.155.140 35.247.28.48 35.247.31.246 35.247.106.13 34.105.85.54 |
|
盐湖城 | us-west3 |
34.106.37.58 34.106.85.113 34.106.28.153 34.106.64.121 34.106.246.131 34.106.56.150 34.106.41.31 34.106.182.92 |
|
圣保罗 | southamerica-east1 |
35.199.88.228 34.95.169.140 35.198.53.30 34.95.144.215 35.247.250.120 35.247.255.158 34.95.231.121 35.198.8.157 |
|
南卡罗来纳 | us-east1 |
35.196.207.183 35.237.231.98 104.196.102.222 35.231.13.201 34.75.129.215 34.75.127.9 35.229.36.137 35.237.91.139 |
|
欧洲 | |||
比利时 | europe-west1 |
35.240.36.149 35.205.171.56 34.76.234.4 35.205.38.234 34.77.237.73 35.195.107.238 35.195.52.87 34.76.102.189 |
|
芬兰 | europe-north1 |
35.228.35.94 35.228.183.156 35.228.211.18 35.228.146.84 35.228.103.114 35.228.53.184 35.228.203.85 35.228.183.138 |
|
法兰克福 | europe-west3 |
35.246.153.144 35.198.80.78 35.246.181.106 35.246.211.135 34.89.165.108 35.198.68.187 35.242.223.6 34.89.137.180 |
|
伦敦 | europe-west2 |
35.189.119.113 35.189.101.107 35.189.69.131 35.197.205.93 35.189.121.178 35.189.121.41 35.189.85.30 35.197.195.192 |
|
荷兰 | europe-west4 |
35.204.237.173 35.204.18.163 34.91.86.224 34.90.184.136 34.91.115.67 34.90.218.6 34.91.147.143 34.91.253.1 |
|
苏黎世 | europe-west6 |
34.65.205.160 34.65.121.140 34.65.196.143 34.65.9.133 34.65.156.193 34.65.216.124 34.65.233.83 34.65.168.250 |
|
亚太地区 | |||
香港 | asia-east2 |
34.92.245.180 35.241.116.105 35.220.240.216 35.220.188.244 34.92.196.78 34.92.165.209 35.220.193.228 34.96.153.178 |
|
雅加达 | asia-southeast2 |
34.101.79.105 34.101.129.32 34.101.244.197 34.101.100.180 34.101.109.205 34.101.185.189 34.101.179.27 34.101.197.251 |
|
孟买 | asia-south1 |
34.93.67.112 35.244.0.1 35.200.245.13 35.200.203.161 34.93.209.130 34.93.120.224 35.244.10.12 35.200.186.100 |
|
大阪 | asia-northeast2 |
34.97.94.51 34.97.118.176 34.97.63.76 34.97.159.156 34.97.113.218 34.97.4.108 34.97.119.140 34.97.30.191 |
|
首尔 | asia-northeast3 |
34.64.152.215 34.64.140.241 34.64.133.199 34.64.174.192 34.64.145.219 34.64.136.56 34.64.247.158 34.64.135.220 |
|
新加坡 | asia-southeast1 |
34.87.12.235 34.87.63.5 34.87.91.51 35.198.197.191 35.240.253.175 35.247.165.193 35.247.181.82 35.247.189.103 |
|
悉尼 | australia-southeast1 |
35.189.33.150 35.189.38.5 35.189.29.88 35.189.22.179 35.189.20.163 35.189.29.83 35.189.31.141 35.189.14.219 |
|
台湾 | asia-east1 |
35.221.201.20 35.194.177.253 34.80.17.79 34.80.178.20 34.80.174.198 35.201.132.11 35.201.223.177 35.229.251.28 35.185.155.147 35.194.232.172 |
|
东京 | asia-northeast1 |
34.85.11.246 34.85.30.58 34.85.8.125 34.85.38.59 34.85.31.67 34.85.36.143 34.85.32.222 34.85.18.128 34.85.23.202 34.85.35.192 |
多区域位置
多区域说明 | 多区域名称 | IP 地址 |
---|---|---|
欧盟成员国的数据中心1 | EU |
34.76.156.158 34.76.156.172 34.76.136.146 34.76.1.29 34.76.156.232 34.76.156.81 34.76.156.246 34.76.102.206 34.76.129.246 34.76.121.168 |
美国的数据中心 | US |
35.185.196.212 35.197.102.120 35.185.224.10 35.185.228.170 35.197.5.235 35.185.206.139 35.197.67.234 35.197.38.65 35.185.202.229 35.185.200.120 |
1 位于 EU
多区域的数据不会存储在 europe-west2
(伦敦)或 europe-west6
(苏黎世)数据中心中。
授予对 Amazon S3 存储分区的访问权限
为了将 Amazon Redshift 数据转移到 BigQuery,您需要有一个用作暂存区域的 S3 存储分区。如需 Amazon 提供的详细说明,请点击此处。
建议您创建一个专用的 Amazon IAM 用户,并授予该用户对 Redshift 的只读访问权限以及对 S3 的读写访问权限。可通过应用以下现有政策来实现此目的:
创建 Amazon IAM 用户访问密钥对。
可选:通过单独的迁移队列实现工作负载控制
您可以定义一个专供迁移使用的 Amazon Redshift 队列,借此限制并分隔用于迁移的资源。可为此迁移队列配置最大并发查询计数。然后,您可以将特定迁移用户组与此队列关联,并在设置迁移时使用这些凭据将数据转移到 BigQuery。转移服务仅拥有迁移队列的访问权限。
设置 Amazon Redshift 转移作业
如需设置 Amazon Redshift 转移作业,请执行以下操作:
控制台
转到 Cloud Console 中的 BigQuery 页面。
点击转移作业。
点击 Add Transfer。
在新转移作业页面上,执行以下操作:
- 在 Source 字段,选择“Migration: Amazon Redshift”。
- 在 Display name 部分,输入转移作业的名称,例如
My migration
。显示名可以是任何容易辨识的值,让您以后在需要修改时能够轻松识别。 在目标数据集部分,选择相应的数据集。
在数据源详细信息下,继续设置 Amazon Redshift 转移作业的特定详细信息。
- 在 Amazon Redshift 的 JDBC 连接网址 (JDBC connection url for Amazon Redshift) 字段,提供用来访问您 Amazon Redshift 集群的 JDBC 网址。
- 在您的数据库用户名字段,输入您希望迁移的 Amazon Redshift 数据库的用户名。
- 在您的数据库密码字段,输入数据库密码。
- 在访问密钥 ID 和私有访问密钥字段,输入您从授予对 S3 存储分区的访问权限步骤获取的访问密钥对。
- 在 Amazon S3 URI 字段,输入您将用作暂存区域的 S3 存储分区的 URI。
- 在 Amazon Redshift 架构字段,输入您要迁移的 Amazon Redshift 架构。
在表名模式字段,指定与架构中的表名匹配的名称或模式。您可以使用正则表达式指定采用以下格式的模式:
<table1Regex>;<table2Regex>
。此模式应遵循 Java 正则表达式语法。(可选)在通知选项部分,执行以下操作:
点击保存。
Cloud Console 随即显示所有转移作业设置的详细信息,包括此转移作业的资源名称。
bq
输入 bq mk
命令并提供转移作业创建标志 --transfer_config
。此外,还必须提供以下标志:
--project_id
--data_source
--target_dataset
--display_name
--params
bq mk \ --transfer_config \ --project_id=project_id \ --data_source=data_source \ --target_dataset=dataset \ --display_name=name \ --params='parameters'
其中:
- project_id 是您的 Google Cloud 项目 ID。如果未指定
--project_id
,则系统会使用默认项目。 - data_source 是数据源,即
redshift
。 - dataset 是转移作业配置的 BigQuery 目标数据集。
- name 是转移作业配置的显示名。转移作业名称可以是任何容易辨识的值,让您以后在需要修改时能够轻松识别。
- parameters 包含所创建转移作业配置的参数(采用 JSON 格式),例如:
--params='{"param":"param_value"}'
。
Amazon Redshift 转移作业配置需要的参数包括:
jdbc_url
:用于定位 Amazon Redshift 集群的 JDBC 连接网址。database_username
:用于访问数据库以卸载指定表的用户名。database_password
:与用户名配合使用的密码,用于访问数据库以卸载指定表。access_key_id
:访问密钥 ID,用于签署发往 AWS 的请求。secret_access_key
:与访问密钥 ID 配合使用的私有访问密钥,用于签署发往 AWS 的请求。s3_bucket
:以“s3://”开头的 Amazon S3 URI,用于指定要使用的临时文件的前缀。redshift_schema
:包含要迁移的所有表的 Amazon Redshift 架构。table_name_patterns
:以英文分号 (;) 分隔的表名模式。表模式是要迁移的表的正则表达式。如果未提供,系统将迁移数据库架构下的所有表。
例如,以下命令会创建名为 My Transfer
的 Amazon Redshift 转移作业,且目标数据集名为 mydataset
,项目 ID 为 google.com:myproject
。
bq mk \
--transfer_config \
--project_id=myproject \
--data_source=redshift \
--target_dataset=mydataset \
--display_name='My Transfer' \
--params='{"jdbc_url":"jdbc:postgresql://test-example-instance.sample.us-west-1.redshift.amazonaws.com:5439/dbname","database_username":"my_username","database_password":"1234567890","access_key_id":"A1B2C3D4E5F6G7H8I9J0","secret_access_key":"1234567890123456789012345678901234567890","s3_bucket":"s3://bucket/prefix","redshift_schema":"public","table_name_patterns":"table_name"}'
API
使用 projects.locations.transferConfigs.create
方法并提供一个 TransferConfig
资源实例。
Java
配额和限制
对于每项加载作业、每个表,BigQuery 有 15 TB 的加载配额。Amazon Redshift 会在内部执行表数据压缩,因此实际导出的表大小会超过 Amazon Redshift 报告的表大小。如果您打算迁移 15 TB 以上的表,请先联系 bq-dts-support@google.com。
请注意,使用此服务可能会产生 Google 之外的费用。如需了解详情,请查看 Amazon Redshift 和 Amazon S3 的价格页面。
由于 Amazon S3 的一致性模型要求,向 BigQuery 转移的作业中可能不包括某些文件。