检查点
Prepare the source database for migration.
/ 20
Create a Database Migration Service connection profile.
/ 20
Create and start a continuous migration job.
/ 20
Confirm the data in Cloud SQL for PostgreSQL.
/ 20
Promote Cloud SQL to be a stand-alone instance for reading and writing data.
/ 20
使用 Database Migration Service 迁移到 Cloud SQL for PostgreSQL
GSP918
概览
Database Migration Service 提供了一次性和持续作业选项,可使用不同的连接方法将数据迁移到 Cloud SQL,包括 IP 许可名单、VPC 对等互连和反向 SSH 隧道(有关连接方法的文档,请访问 https://cloud.google.com/database-migration/docs/postgresql/configure-connectivity)。
在本实验中,您将使用持续的 Database Migration Service 作业和 VPC 对等互连连接方法,将一个独立 PostgreSQL 数据库(在虚拟机上运行)迁移到 Cloud SQL for PostgreSQL。
通过 Database Migration Service 迁移数据库需要对源数据库做一些准备工作,包括创建一个具有复制权限的专用用户,为源数据库添加 pglogical
数据库扩展程序,并向相应用户授予适当的权限,以便他们访问要迁移的数据库及 postgres 数据库中的架构和表。
创建并运行迁移作业后,您需要确认数据库的初始副本已成功迁移到 Cloud SQL for PostgreSQL 实例。您还将探索持续迁移作业如何将源数据库中的数据更新应用到 Cloud SQL 实例。迁移作业结束时,您需要将 Cloud SQL 实例升级为独立数据库,以便读取和写入数据。
您将执行的操作
- 为源数据库做好迁移准备。
- 为源 PostgreSQL 实例(例如独立 PostgreSQL)创建连接配置文件。
- 使用 VPC 对等互连配置源数据库实例和目标数据库实例之间的连接。
- 配置防火墙和数据库访问规则,以允许访问要迁移的源数据库。
- 使用 Database Migration Service 创建、运行和验证持续迁移作业。
- 将目标实例 (Cloud SQL for PostgreSQL) 升级为独立数据库,以读取和写入数据。
设置和要求
点击“开始实验”按钮前的注意事项
请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。
为完成此实验,您需要:
- 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
- 完成实验的时间 - 请注意,实验开始后无法暂停。
如何开始实验并登录 Google Cloud 控制台
-
点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:
- 打开 Google Cloud 控制台按钮
- 剩余时间
- 进行该实验时必须使用的临时凭据
- 帮助您逐步完成本实验所需的其他信息(如果需要)
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示登录页面。
提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。 -
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}} 您也可以在实验详细信息面板中找到用户名。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}} 您也可以在实验详细信息面板中找到密码。
-
点击下一步。
重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。 -
继续在后续页面中点击以完成相应操作:
- 接受条款及条件。
- 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
- 点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID:
gcloud
是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
-
点击授权。
-
现在,输出的内容应如下所示:
输出:
- (可选)您可以通过此命令列出项目 ID:
输出:
输出示例:
gcloud
, in Google Cloud, refer to the gcloud CLI overview guide.
验证 Database Migration API 是否已启用
- 在 Google Cloud 控制台的顶部搜索栏中输入 Database Migration API。点击 Database Migration API 的搜索结果。
此页面将显示状态信息或提供启用该 API 的选项。
- 如有必要,请启用此 API。
验证 Service Networking API 是否已启用
必须启用 Service Networking API,才能将 Cloud SQL 配置为支持 VPC 对等互连和通过专用 IP 地址进行的连接。
- 在 Cloud 控制台的顶部搜索栏中输入 Service Networking API。点击 Service Networking API 的搜索结果。
此页面将显示状态信息或提供启用该 API 的选项。
- 如有必要,请启用此 API。
任务 1. 为源数据库做好迁移准备
在此任务中,您将向源数据库添加 Database Migration Service 执行迁移所需的支持功能。具体包括:
- 安装和配置 pglogical 数据库扩展程序。
- 配置独立 PostgreSQL 数据库,允许通过 Cloud Shell 和 Cloud SQL 进行访问。
- 将
pglogical
数据库扩展程序添加到独立服务器上的postgres
、orders
和gmemegen_db
数据库。 - 创建执行数据库迁移的
migration_admin
用户(具有复制权限),并向该用户授予访问架构和关系所需的权限。
利用 pglogical 扩展程序升级数据库
在此步骤中,您将下载 pglogical
数据库扩展程序,并将其添加到 postgresql-vm
虚拟机实例上的 orders 和 postgres 数据库中。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
-
在
postgresql-vm
对应的条目中,点击连接
下方的 SSH。 -
如果出现提示,请点击授权。
-
在新浏览器窗口上的终端中,安装
pglogical
数据库扩展程序:
pglogical
是一个完全作为 PostgreSQL 扩展程序实现的逻辑复制系统。该系统已完全集成,不需要触发器或外部程序即可运行。它可以替代物理复制,是一种使用发布/订阅模型进行选择性复制的高效数据复制方法。如需了解详情,请访问 https://github.com/2ndQuadrant/pglogical
- 下载 PostgreSQL 配置文件并在其中添加一些内容(以启用 pglogical 扩展程序),然后重启 postgresql 服务:
在 pg_hba.conf
中,以下命令添加了一条允许所有主机访问的规则:
在 postgresql.conf
中,以下命令为 pglogical 设置了最基本的配置,将其配置为监听所有地址:
上述代码段已附加到相关文件中,并且 PostgreSQL 服务已重启。
- 启动 psql 工具:
- 将
pglogical
数据库扩展程序添加到postgres
、orders
和gmemegen_db
数据库。
- 列出服务器上的 PostgreSQL 数据库:
可以看到,除了默认的 postgresql 数据库之外,本实验还提供了 orders
和 gmemegen_db
数据库。您在本实验中不会用到 gmemegen_db
数据库,但需要将其纳入迁移范围,以便在后续实验中使用。
创建数据库迁移用户
在此步骤中,您将创建一个专用用户来管理数据库迁移。
- 在 psql 中输入以下命令,创建具有复制角色的新用户:
为迁移用户分配权限
在此步骤中,您将为 migration_admin
用户分配允许 Database Migration Service 迁移数据库的必要权限。
- 在 psql 中,授予用户对
postgres
数据库的pglogical
架构和表的权限。
- 在 psql 中,授予用户对
orders
数据库的pglogical
架构和表的权限。
- 在 psql 中,授予用户对
orders
数据库的public
架构和表的权限。
- 在 psql 中,授予用户对
gmemegen_db
数据库的pglogical
架构和表的权限。
- 在 psql 中,授予用户对
gmemegen_db
数据库的public
架构和表的权限。
源数据库现已做好迁移准备。您向 migration_admin
用户授予的权限是 Database Migration Service 迁移 postgres
、orders
和 gmemegen_db
数据库所需的全部权限。
将 migration_admin
用户设置为 orders
数据库中的表的所有者,以便您稍后在对迁移进行测试时可以修改源数据。
- 在 psql 中,运行以下命令:
- 退出 psql 和 postgres 用户会话
点击“检查我的进度”以验证是否完成了以下目标:
任务 2. 为独立 PostgreSQL 数据库创建 Database Migration Service 连接配置文件
在此任务中,您将为 PostgreSQL 源实例创建连接配置文件。
获取 PostgreSQL 源实例的连接信息
在此步骤中,您需要确定要迁移到 Cloud SQL 的源数据库实例的内部 IP 地址。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
-
找到 postgresql-vm 实例所在的行。
-
复制内部 IP 字段的值(例如 10.128.0.2)。
为 PostgreSQL 源实例创建新的连接配置文件
连接配置文件中存储着有关源数据库实例(例如独立 PostgreSQL)的信息,Database Migration Service 使用连接配置文件将数据从源实例迁移到目标 Cloud SQL 数据库实例。创建连接配置文件后,可以在迁移作业中重复使用此配置文件。
在此步骤中,您将为 PostgreSQL 源实例创建一个新的连接配置文件。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库迁移 > 连接配置文件。
-
点击 + 创建配置文件。
-
对于数据库引擎,选择 PostgreSQL。
-
对于连接配置文件名称,输入 postgres-vm。
-
对于主机名或 IP 地址,输入您在上一个任务中复制的 PostgreSQL 源实例的内部 IP(例如 10.128.0.2)。
-
对于端口,输入 5432。
-
对于用户名,输入 migration_admin。
-
对于密码,输入 DMS_1s_cool!。
-
对于区域,选择
。 -
对于所有其他值,请保留默认值。
-
点击创建。
一个名为 postgres-vm 的新连接配置文件即会显示在连接配置文件列表中。
点击“检查我的进度”以验证是否完成了以下目标:
任务 3. 创建并启动持续迁移作业
在创建新的迁移作业时,首先需要使用先前创建的连接配置文件定义源数据库实例。然后,创建一个新的目标数据库实例,并配置源实例与目标实例之间的连接。
在此任务中,您将使用迁移作业界面来创建一个新的 Cloud SQL for PostgreSQL 数据库实例,并将其设置为从 PostgreSQL 源实例迁移数据的持续迁移作业的目标。
创建新的持续迁移作业
在此步骤中,您将创建一个新的持续迁移作业。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库迁移 > 迁移作业。
-
点击 + 创建迁移作业。
-
对于迁移作业名称,输入 vm-to-cloudsql。
-
对于源数据库引擎,选择 PostgreSQL。
-
对于目标区域,选择
。 -
对于目标数据库引擎,选择 Cloud SQL for PostgreSQL。
-
对于迁移作业类型,选择持续。
对于其他设置,请保留默认值。
- 点击保存并继续。
定义源实例
在此步骤中,您将定义要迁移的源实例。
- 对于来源连接配置文件,选择 postgres-vm。
对于其他设置,请保留默认值。
- 点击保存并继续。
创建目标实例
在此步骤中,您将创建数据要迁移到的目标实例。
-
对于目标实例 ID,输入 postgresql-cloudsql。
-
对于密码,输入 supersecret!。
-
对于选择 Cloud SQL 版本,选择企业版。
-
对于数据库版本,选择 Cloud SQL for PostgreSQL 13。
-
在选择区域和可用区部分,选择单个可用区并选择
作为主可用区。 -
在实例连接部分,选择专用 IP 和公共 IP。
-
选择使用自动分配的 IP 范围。
对于其他设置,请保留默认值。
- 点击分配并连接。
注意:此步骤可能需要几分钟时间。如果系统要求您重试请求,请点击重试按钮以刷新 Service Networking API。
完成此步骤后,一条更新消息将会显示,告知您该实例将使用现有的托管式服务连接。
您需要修改虚拟机实例上的 pg_hba.conf 文件,以允许访问在上一步第 5 点中自动生成的 IP 范围。您需在后面的步骤中执行此操作,具体而言是在此任务结束时对迁移配置进行测试之前。
输入在 Cloud SQL 上创建目标实例所需的其他信息。
-
对于机器类型,选中 1 个 vCPU、3.75 GB。
-
对于存储类型,选择 SSD。
-
对于存储空间容量,选择 10 GB。
-
点击创建并继续。
如果系统提示您确认,请点击创建目标并继续。一条消息即会显示,指出正在创建您的目标数据库实例。在此期间,继续执行下一步。
定义连接方法
在此步骤中,您将定义用于迁移的连接方法。
-
对于连接方法,选择 VPC 对等互连。
-
对于 VPC,选择默认。
Database Migration Service 会使用您为 VPC 网络(在本例中为默认网络)提供的信息配置 VPC 对等互连。
当您看到指出目标实例创建完成的更新消息后,请继续执行下一步。
- 点击配置并继续。
允许从自动分配的 IP 范围访问 postgresql-vm 实例
在此步骤中,您将修改 pg_hba.conf
PostgreSQL 配置文件,以允许 Database Migration Service 访问独立 PostgreSQL 数据库。
-
获取分配的 IP 地址范围。在 Google Cloud 控制台的导航菜单 (
) 中,右键点击 VPC 网络 > VPC 网络对等互连,在新标签页中打开其页面。
-
点击
servicenetworking-googleapis-com
条目。 -
在导入的路由标签页中,选择并复制
目标 IP 地址范围
(例如 10.107.176.0/24)。 -
在虚拟机实例上的终端会话中,修改
pg_hba.conf
文件,如下所示:
- 在文件的最后一行:
将“所有 IP 地址”范围 (0.0.0.0/0) 替换为上面第 3 步中复制的范围。
-
按 Ctrl-O、Enter、Ctrl-X 键保存并退出 nano 编辑器。
-
重启 PostgreSQL 服务以使更改生效。在虚拟机实例终端会话中,输入以下命令:
测试并启动持续迁移作业
在此步骤中,您将测试并启动迁移作业。
-
在您之前打开的 Database Migration Service 标签页中,查看迁移作业的详细信息。
-
点击测试作业。
-
在测试成功后,点击创建并启动作业。
如果系统提示您确认,请点击创建并启动。
查看持续迁移作业的状态
在此步骤中,您将确认持续迁移作业是否正在运行。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库迁移 > 迁移作业。
-
点击迁移作业 vm-to-cloudsql,查看详情页面。
-
查看迁移作业状态。
- 如果作业尚未启动,状态会显示为尚未开始。您可以选择启动或删除该作业。
- 作业启动后,状态将显示为正在启动,然后变为“正在运行”|“正在进行完全转储”,指出正在执行初始数据库转储。
- 初始数据库转储完成后,状态将变为“正在运行”|“正在进行变更数据捕获 (CDC)”,指出正在进行持续迁移。
当作业状态变为“正在运行”|“正在进行变更数据捕获 (CDC)”时,继续执行下一项任务。
点击“检查我的进度”以验证是否完成了以下目标:
任务 4. 确认 Cloud SQL for PostgreSQL 中的数据
查看 Cloud SQL 中的 PostgreSQL 数据库
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库 > SQL。
-
展开实例 ID postgresql-cloudsql-master。
-
点击 postgresql-cloudsql 实例(PostgreSQL 读取副本)。
-
在副本实例菜单中,点击数据库。
可以看到,名为 postgres、orders 和 gmemegen_db 的数据库已迁移到 Cloud SQL。
连接到 PostgreSQL 实例
-
在副本实例菜单中,点击概览。
-
向下滚动到连接到此实例部分,然后点击打开 Cloud Shell。
Cloud Shell 中将预先填充用于连接到 PostgreSQL 的命令:
- 运行预先填充的命令。
如果出现提示,请点击授权以使用 API。
- 当系统提示输入密码时,请输入您之前设置的密码:
您现在已激活目标实例的 PostgreSQL 交互式控制台。
查看 Cloud SQL for PostgreSQL 实例中的数据
- 要在 PostgreSQL 交互式控制台中选择数据库,请运行以下命令:
- 当系统提示输入密码时,请输入以下密码:
- 查询
distribution_centers
表:
(输出)
- 输入以下命令,退出 PostgreSQL 交互式控制台:
更新独立源数据,以测试持续迁移
- 在 Cloud Shell 中,输入以下命令连接到 PostgreSQL 源实例:
- 当系统提示输入密码时,请输入以下密码:
- 在 psql 中,输入以下命令:
- 关闭交互式 psql 会话:
连接到 Cloud SQL PostgreSQL 数据库,检查更新的数据是否已迁移
- 在 Cloud Shell 中,输入以下命令连接到目标 Cloud SQL PostgreSQL 实例:
- 当系统提示输入密码时,请输入您之前为 Cloud SQL 实例设置的密码:
您现在已激活目标实例的 PostgreSQL 交互式控制台。
查看 Cloud SQL for PostgreSQL 数据库中的数据
- 在 Cloud Shell 中,于 PostgreSQL 交互式控制台中选择活跃数据库:
- 当系统提示输入密码时,请输入您之前设置的密码:
- 查询
distribution_centers
表:
(输出)
请注意,在独立数据库 orders
中添加的新行现在已出现在迁移后的数据库中。
- 退出 PostgreSQL 交互式控制台:
点击“检查我的进度”以验证是否完成了以下目标:
任务 5. 将 Cloud SQL 升级为独立实例,以便读取和写入数据
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库迁移 > 迁移作业。
-
点击迁移作业名称 vm-to-cloudsql,查看详情页面。
-
点击升级。
如果系统提示您确认,请点击升级。
升级完成后,作业的状态将更新为已完成。
- 在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库 > SQL。
可以看到,postgresql-cloudsql 现在已是独立实例,可供读取和写入数据。
点击“检查我的进度”以验证是否完成了以下目标:
恭喜!
您已了解如何配置持续的 Database Migration Service 作业,以将数据库从 PostgreSQL 实例迁移到 Cloud SQL for PostgreSQL。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 5 月 14 日
上次测试实验的时间:2024 年 5 月 14 日
版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。