GSP918
概览
Database Migration Service 支持通过一次性作业或持续性作业将数据迁移到 Cloud SQL。该服务支持多种连接方法,包括 IP 许可名单、反向 SSH 隧道、VPC 对等互连以及 Private Service Connect 接口。如需详细了解连接方法,请参阅配置连接指南。
本实验将重点介绍如何将虚拟机上托管的独立 PostgreSQL 数据库迁移至 Cloud SQL for PostgreSQL。此次迁移将利用 Database Migration Service 的持续作业功能,并通过 VPC 对等互连建立网络连接。
在使用 Database Migration Service 迁移数据库之前,必须先在源数据库上完成以下准备步骤:
- 创建专用用户:该用户必须拥有执行复制操作所需的权限。
- 添加
pglogical 扩展程序:您需要在源数据库中安装此扩展程序。
- 授予必要权限:必须确保专用用户拥有访问待迁移数据库(包括其架构和表)以及
postgres 数据库的权限。
完成上述设置后,即可着手创建并启动迁移作业。迁移过程包括:
- 初始复制:确认数据库的初始数据已成功同步至 Cloud SQL 实例。
- 持续迁移:了解迁移作业如何将源数据库中的实时数据更新同步应用到 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 控制台按钮
- 您在本实验中必须使用的临时凭证(用户名和密码)
- 帮助您逐步完成该实验所需的其他信息(如果需要)
请注意,实验计时器位于页面顶部附近,将显示剩余时间。
-
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:可以将这些标签页分别放在不同的窗口中,并排显示。
注意:如果您看见选择账号对话框,请点击使用其他账号。
-
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
{{{user_0.username | "<用户名>"}}}
您也可以在实验设置和访问权限面板中找到“用户名”。
-
点击下一步。
-
复制下面的密码,然后将其粘贴到欢迎对话框中。
{{{user_0.password | "<密码>"}}}
您也可以在实验设置和访问权限面板中找到“密码”。
-
点击下一步。
重要提示:您必须使用实验提供的凭证。请勿使用您的 Google Cloud 账号凭证。
注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
-
依次点击进入后续页面:
- 接受条款及条件。
- 由于这是临时账号,请勿添加账号恢复选项或双重身份验证。
- 请勿注册免费试用。
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。
激活 Cloud Shell
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
-
点击 Google Cloud 控制台顶部的激活 Cloud Shell
。
-
在弹出的窗口中执行以下操作:
- 继续完成 Cloud Shell 信息窗口中的设置。
- 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID:
Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
- (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
- 点击授权。
输出:
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (可选)您可以通过此命令列出项目 ID:
gcloud config list project
输出:
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
验证 Database Migration API 是否已启用
如需使用 Database Migration Service 管理数据迁移任务,必须先启用 Database Migration API。
- 在 Google Cloud 控制台标题栏的搜索字段中输入 Database Migration API,然后在搜索结果中点击 Database Migration API。
如果该 API 已启用,您将看到管理按钮。
- 如果您看到启用按钮,请点击该按钮以启用 API。
验证 Service Networking API 是否已启用
配置 Cloud SQL 以支持 VPC 对等互连和专用 IP 地址连接时,必须启用 Service Networking API。
- 在 Cloud 控制台顶部的搜索栏中输入 Service Networking API,然后从结果列表中选择 Service Networking API。
如果该 API 已启用,您将看到管理按钮。
- 如果您看到启用按钮,请点击该按钮以启用 API。
任务 1.为源数据库做好迁移准备
通过 Database Migration Service 进行迁移前,您需要使用 pglogical 扩展程序升级数据库,然后创建数据库迁移用户。
如要使用 pglogical 扩展程序升级数据库,您需要完成以下操作:
- 安装并配置
pglogical 数据库扩展程序。
- 配置独立 PostgreSQL 数据库,允许通过 Cloud Shell 和 Cloud SQL 进行访问。
- 在独立服务器的
postgres、orders 及 gmemegen_db 数据库中分别添加 pglogical 扩展程序。
创建数据库迁移用户时,请建立一个名为 migration_admin 且具备复制权限的用户,并授予其访问架构和关系所需的权限。
利用 pglogical 扩展程序升级数据库
在本部分中,您将下载 pglogical 数据库扩展程序,并将其添加到 postgresql-vm 虚拟机实例上的 orders 和 postgres 数据库中。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
-
在 postgresql-vm 虚拟机实例中,点击 SSH。
-
如果出现提示,请点击授权。
-
在新打开的终端窗口里,运行以下命令安装 pglogical 数据库扩展程序:
sudo apt install postgresql-14-pglogical
注意:pglogical 是一个完全作为 PostgreSQL 扩展程序实现的逻辑复制系统。该系统已完全集成,不需要触发器或外部程序即可运行。它可以替代物理复制,是一种使用发布/订阅模型进行选择性复制的高效数据复制方法。
- 下载 PostgreSQL 配置文件并在其中添加一些内容(以启用
pglogical 扩展程序),然后运行以下命令重启 postgresql 服务:
sudo su - postgres -c "gsutil cp gs://spls/gsp918/pg_hba_append.conf ."
sudo su - postgres -c "gsutil cp gs://spls/gsp918/postgresql_append.conf ."
sudo su - postgres -c "cat pg_hba_append.conf >> /etc/postgresql/14/main/pg_hba.conf"
sudo su - postgres -c "cat postgresql_append.conf >> /etc/postgresql/14/main/postgresql.conf"
sudo systemctl restart postgresql@14-main
这些操作会在 pg_hba.conf 文件中加入一条新规则,从而允许所有主机进行连接:
#GSP918 - allow access to all hosts
host all all 0.0.0.0/0 md5
postgresql.conf 中的命令完成了 pglogical 的基础配置,使其能够监听所有地址:
#GSP918 - added configuration for pglogical database extension
wal_level = logical # minimal, replica, or logical
max_worker_processes = 10 # one per database needed on provider node
# one per node needed on subscriber node
max_replication_slots = 10 # one per node needed on provider node
max_wal_senders = 10 # one per node needed on provider node
shared_preload_libraries = 'pglogical'
max_wal_size = 1GB
min_wal_size = 80MB
listen_addresses = '*' # what IP address(es) to listen on, '*' is all
上述代码段已附加到相关文件中,并且 PostgreSQL 服务已重启。
- 运行以下命令以启动 psql 工具:
sudo su - postgres
psql
- 运行以下命令,将
pglogical 数据库扩展程序添加到 postgres、orders 和 gmemegen_db 数据库:
\c postgres;
CREATE EXTENSION pglogical;
\c orders;
CREATE EXTENSION pglogical;
\c gmemegen_db;
CREATE EXTENSION pglogical;
- 列出服务器上的 PostgreSQL 数据库:
\l
您应该会获得以下输出结果,其中列出了默认的 postgresql 数据库,以及为本实验提供的 orders 和 gmemegen_db 数据库。您在本实验中不会用到 gmemegen_db 数据库。
输出:
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-------------+----------+----------+---------+---------+-----------------------
gmemegen_db | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
orders | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
postgres | postgres | UTF8 | C.UTF-8 | C.UTF-8 |
template0 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C.UTF-8 | C.UTF-8 | =c/postgres +
| | | | | postgres=CTc/postgres
(5 rows)
创建数据库迁移用户
在本部分中,您将创建一个专门用于管理数据库迁移任务的用户。
- 在 psql 中输入以下命令,以创建具有复制角色的新用户:
CREATE USER migration_admin PASSWORD 'DMS_1s_cool!';
ALTER DATABASE orders OWNER TO migration_admin;
ALTER ROLE migration_admin WITH REPLICATION;
为迁移用户分配权限
在本部分中,您将为 migration_admin 用户分配允许 Database Migration Service 迁移数据库的必要权限。
- 在 psql 中运行以下命令,授予该用户访问
postgres 数据库的 pglogical 架构和表的权限:
\c postgres;
GRANT USAGE ON SCHEMA pglogical TO migration_admin;
GRANT ALL ON SCHEMA pglogical TO migration_admin;
GRANT SELECT ON pglogical.tables TO migration_admin;
GRANT SELECT ON pglogical.depend TO migration_admin;
GRANT SELECT ON pglogical.local_node TO migration_admin;
GRANT SELECT ON pglogical.local_sync_status TO migration_admin;
GRANT SELECT ON pglogical.node TO migration_admin;
GRANT SELECT ON pglogical.node_interface TO migration_admin;
GRANT SELECT ON pglogical.queue TO migration_admin;
GRANT SELECT ON pglogical.replication_set TO migration_admin;
GRANT SELECT ON pglogical.replication_set_seq TO migration_admin;
GRANT SELECT ON pglogical.replication_set_table TO migration_admin;
GRANT SELECT ON pglogical.sequence_state TO migration_admin;
GRANT SELECT ON pglogical.subscription TO migration_admin;
- 运行以下命令,授予该用户访问
orders 数据库中 pglogical 架构及表的权限:
\c orders;
GRANT USAGE ON SCHEMA pglogical TO migration_admin;
GRANT ALL ON SCHEMA pglogical TO migration_admin;
GRANT SELECT ON pglogical.tables TO migration_admin;
GRANT SELECT ON pglogical.depend TO migration_admin;
GRANT SELECT ON pglogical.local_node TO migration_admin;
GRANT SELECT ON pglogical.local_sync_status TO migration_admin;
GRANT SELECT ON pglogical.node TO migration_admin;
GRANT SELECT ON pglogical.node_interface TO migration_admin;
GRANT SELECT ON pglogical.queue TO migration_admin;
GRANT SELECT ON pglogical.replication_set TO migration_admin;
GRANT SELECT ON pglogical.replication_set_seq TO migration_admin;
GRANT SELECT ON pglogical.replication_set_table TO migration_admin;
GRANT SELECT ON pglogical.sequence_state TO migration_admin;
GRANT SELECT ON pglogical.subscription TO migration_admin;
- 运行以下命令,授予该用户访问
orders 数据库内 public 架构及表的权限:
GRANT USAGE ON SCHEMA public TO migration_admin;
GRANT ALL ON SCHEMA public TO migration_admin;
GRANT SELECT ON public.distribution_centers TO migration_admin;
GRANT SELECT ON public.inventory_items TO migration_admin;
GRANT SELECT ON public.order_items TO migration_admin;
GRANT SELECT ON public.products TO migration_admin;
GRANT SELECT ON public.users TO migration_admin;
- 运行以下命令,授予该用户访问
gmemegen_db 数据库中 pglogical 架构及表的权限:
\c gmemegen_db;
GRANT USAGE ON SCHEMA pglogical TO migration_admin;
GRANT ALL ON SCHEMA pglogical TO migration_admin;
GRANT SELECT ON pglogical.tables TO migration_admin;
GRANT SELECT ON pglogical.depend TO migration_admin;
GRANT SELECT ON pglogical.local_node TO migration_admin;
GRANT SELECT ON pglogical.local_sync_status TO migration_admin;
GRANT SELECT ON pglogical.node TO migration_admin;
GRANT SELECT ON pglogical.node_interface TO migration_admin;
GRANT SELECT ON pglogical.queue TO migration_admin;
GRANT SELECT ON pglogical.replication_set TO migration_admin;
GRANT SELECT ON pglogical.replication_set_seq TO migration_admin;
GRANT SELECT ON pglogical.replication_set_table TO migration_admin;
GRANT SELECT ON pglogical.sequence_state TO migration_admin;
GRANT SELECT ON pglogical.subscription TO migration_admin;
- 运行以下命令,授予该用户访问
gmemegen_db 数据库中 public 架构及表的权限:
GRANT USAGE ON SCHEMA public TO migration_admin;
GRANT ALL ON SCHEMA public TO migration_admin;
GRANT SELECT ON public.meme TO migration_admin;
源数据库现已做好迁移准备。您向 migration_admin 用户授予的权限是 Database Migration Service 迁移 postgres、orders 和 gmemegen_db 数据库所需的全部权限。
接下来,将 migration_admin 用户设置为 orders 数据库中的表的所有者,以便您稍后在对迁移进行测试时可以修改源数据。
- 运行以下命令:
\c orders;
\dt
ALTER TABLE public.distribution_centers OWNER TO migration_admin;
ALTER TABLE public.inventory_items OWNER TO migration_admin;
ALTER TABLE public.order_items OWNER TO migration_admin;
ALTER TABLE public.products OWNER TO migration_admin;
ALTER TABLE public.users OWNER TO migration_admin;
\dt
输出
List of relations
Schema | Name | Type | Owner
--------+----------------------+-------+-------
public | distribution_centers | table | migration_admin
public | inventory_items | table | migration_admin
public | order_items | table | migration_admin
public | products | table | migration_admin
public | users | table | migration_admin
(5 rows)
- 运行以下命令,退出 psql 和 postgres 用户会话:
\q
exit
点击检查我的进度以验证是否完成了以下目标:
为 PostgreSQL 源实例做好迁移准备。
任务 2. 创建并启动持续迁移作业
如需创建新的迁移作业,您必须使用现有连接配置文件指定源数据库实例。随后需要建立目标数据库实例,并在源实例和目标实例之间设置必要的连接。
获取 PostgreSQL 源实例的连接信息
在此步骤中,您将确定要迁移到 Cloud SQL 的源数据库实例的内部 IP 地址。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击 Compute Engine > 虚拟机实例。
-
在实例列表中,找到 postgresql-vm。
-
复制内部 IP(如 10.128.0.2),以便在下一部分中用于配置连接配置文件。
创建新的持续迁移作业
-
在 Google Cloud 控制台标题栏的搜索字段中,输入数据库迁移,按 Enter 键,在搜索结果中点击数据库迁移。
-
在左侧窗格中,点击迁移作业,然后点击创建迁移作业。
注意:迁移作业向导会在左侧加载,显示后续配置步骤。
开始
在此步骤中,您将创建一个新的持续迁移作业。
- 在开始标签页中指定以下值,然后将其余设置均保留为默认值:
| 字段 |
值 |
| 迁移作业名称 |
vm-to-cloudsql |
| 源数据库引擎 |
PostgreSQL |
| 目标数据库引擎 |
Cloud SQL for PostgreSQL |
| 目标区域 |
|
| 迁移作业类型 |
持续 |
- 点击保存并继续。
定义源实例
在此步骤中,您将定义要迁移的源实例,并为 PostgreSQL 源实例新建一个连接配置文件。
连接配置文件中存储着有关源数据库实例(例如独立 PostgreSQL)的信息,Database Migration Service 使用连接配置文件将数据从源实例迁移到目标 Cloud SQL 数据库实例。创建连接配置文件后,可以在迁移作业中重复使用此配置文件。
-
对于来源连接配置文件,选择创建连接配置文件。
-
在创建连接配置文件标签页上,指定以下值,并将其余值均保留为默认值:
| 字段 |
值 |
| 源引擎 |
PostgreSQL |
| 目标引擎 |
Cloud SQL for PostgreSQL |
| 配置文件类型 |
来源 |
| 连接配置文件名称 |
postgres-vm |
| 区域 |
|
| 定义连接配置 |
定义 |
| 主机名或 IP 地址 |
您在上一个任务中复制的 PostgreSQL 源实例的内部 IP(例如 10.128.0.2) |
| 端口 |
5432 |
| 用户名 |
migration_admin |
| 密码 |
DMS_1s_cool! |
- 点击保存。
- 点击创建。
在迁移作业向导的指定来源页面上,会显示一个名为 postgres-vm 的新连接配置文件。
- 点击保存并继续。
点击检查我的进度以验证是否完成了以下目标:
为 PostgreSQL 源实例创建连接配置文件。
定义目标实例
在此步骤中,您将定义迁移的目标实例。
-
在目标实例的类型部分,选择现有实例。
-
在选择目标实例部分,选择 postgresql-cloudsql。
-
点击选择并继续。
-
如果系统提示您确认,请输入实例名称 postgresql-cloudsql。
-
点击确认并继续。
注意:您可以忽略以下警告:“您的目标实例将被降级,并转换为源数据库的副本。”
定义连接方法
在此步骤中,您将定义用于迁移的连接方法。

-
对于连接方法,选择 VPC 对等互连。
-
对于 VPC,选择默认。
Database Migration Service 会使用您为 VPC 网络(在本例中为默认网络)提供的信息配置 VPC 对等互连。
当您看到指出目标实例创建完成的更新消息后,请继续执行下一步。

- 点击配置并继续。
配置迁移数据库
在此步骤中,您将定义要迁移的源实例。
-
对于要迁移的数据库,选择所有数据库。
-
点击保存并继续。
允许从自动分配的 IP 范围访问 postgresql-vm 实例
在此步骤中,您要修改 pg_hba.conf PostgreSQL 配置文件,以允许 Database Migration Service 访问独立 PostgreSQL 数据库。
-
获取分配的 IP 地址范围。在控制台的导航菜单 (
) 中,点击 VPC 网络,然后右键点击 VPC 网络对等互连并选择在新标签页中打开链接。
-
点击 servicenetworking-googleapis-com 条目,再点击底部的有效路由视图。
-
从网络下拉菜单中,选择默认;对于区域,选择 。点击查看。
-
在目标 IP 地址范围一栏,找到 peering-route-xxxxx... 路由对应的 IP 范围(例如 10.107.176.0/24)并将其记录下来,以供后续步骤使用。
-
在虚拟机实例上的终端会话中,修改 pg_hba.conf 文件,如下所示:
sudo nano /etc/postgresql/14/main/pg_hba.conf
- 在文件的最后一行:
#GSP918 - allow access to all hosts
host all all 0.0.0.0/0 md5
将“所有 IP 地址”范围 (0.0.0.0/0) 替换为在上一步中记录的范围。
#GSP918 - allow access to all hosts
host all all 10.107.176.0/24 md5
注意:上述步骤并非迁移成功的必要条件,但这样可以增强源数据库在迁移过程中的安全性,并且在迁移完成后迁移的数据库成为可信来源时,还能限制访问权限,因此是一种很好的做法。
-
依次按 CTRL+O、Enter、CTRL+X 键,以保存文件并退出 nano 编辑器。
-
重启 PostgreSQL 服务以使更改生效。在虚拟机实例终端会话中,运行以下命令:
sudo systemctl start postgresql@14-main
测试并启动持续迁移作业
在此步骤中,您将测试并启动迁移作业。
-
在您之前打开的 Database Migration Service 标签页中,查看迁移作业的详细信息。
-
点击测试作业。
-
在测试成功后,点击创建并启动作业。
-
如果系统提示您确认,请点击创建并启动。
查看持续迁移作业的状态
在此步骤中,您将确认持续迁移作业是否正在运行。
-
在 Google Cloud 控制台的导航菜单 (
) 中,依次点击数据库迁移 > 迁移作业。
-
点击迁移作业 vm-to-cloudsql,查看详情页面。
-
查看迁移作业状态。
- 如果作业尚未启动,其状态会显示为尚未开始。您可以选择启动或删除该作业。
- 作业启动后,状态将显示为正在启动,然后变为正在运行,表示正在执行初始数据库转储。
- 初始数据库转储完成后,阶段状态将变为 CDC,表明正在进行持续迁移。
在作业阶段变为 CDC 时,继续执行下一项任务。
注意:持续迁移作业会一直处于运行状态,以确保目标数据库能够持续接收来自源数据库的数据更新。
只有在您将目标库提升为支持读写的独立数据库后,作业状态才会最终变为“已完成”。您将在本实验的任务 4 中完成此操作。
点击检查我的进度以验证是否完成了以下目标:
创建、启动和查看持续迁移作业。
任务 3. 确认 Cloud SQL for PostgreSQL 中的数据
查看 Cloud SQL 中的 PostgreSQL 数据库
-
在 Google Cloud 控制台的导航菜单 (
) 中,点击 Cloud SQL。
-
展开实例 ID postgresql-cloudsql-master。
-
点击 postgresql-cloudsql 实例(PostgreSQL 读取副本)。
-
在副本实例菜单中,点击数据库。
可以看到,名为 postgres、orders 和 gmemegen_db 的数据库已迁移到 Cloud SQL。
连接到 PostgreSQL 实例
-
在副本实例菜单中,点击概览。
-
向下滚动到连接到此实例部分,然后点击打开 Cloud Shell。
连接到 PostgreSQL 的命令已预先填充在 Cloud Shell 中,命令如下:
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
-
运行预先填充的命令。
-
如果出现提示,请点击授权以使用 API。
-
当系统提示输入密码时,输入您先前设置的密码,即:
supersecret!
您现在已激活目标实例的 PostgreSQL 交互式控制台。
查看 Cloud SQL for PostgreSQL 实例中的数据
- 要在 PostgreSQL 交互式控制台中选择数据库,请运行以下命令:
\c orders;
- 当系统提示输入密码时,请输入以下密码:
supersecret!
- 运行以下命令查询
distribution_centers 表:
select * from distribution_centers;
输出:
longitude | latitude | name | id
-----------+----------+---------------------------------------------+----
-89.9711 | 35.1174 | Memphis TN | 1
-87.6847 | 41.8369 | Chicago IL | 2
-95.3698 | 29.7604 | Houston TX | 3
-118.25 | 34.05 | Los Angeles CA | 4
-90.0667 | 29.95 | New Orleans LA | 5
-73.7834 | 40.634 | Port Authority of New York/New Jersey NY/NJ | 6
-75.1667 | 39.95 | Philadelphia PA | 7
-88.0431 | 30.6944 | Mobile AL | 8
-79.9333 | 32.7833 | Charleston SC | 9
-81.1167 | 32.0167 | Savannah GA | 10
- 运行以下命令退出 PostgreSQL 交互式控制台:
\q
更新独立源数据,以测试持续迁移
- 在 Cloud Shell 中,运行以下命令连接到 PostgreSQL 源实例:
export VM_NAME=postgresql-vm
export PROJECT_ID=$(gcloud config list --format 'value(core.project)')
export POSTGRESQL_IP=$(gcloud compute instances describe ${VM_NAME} \
--zone={{{ project_0.default_zone|(zone) }}} --format="value(networkInterfaces[0].accessConfigs[0].natIP)")
echo $POSTGRESQL_IP
psql -h $POSTGRESQL_IP -p 5432 -d orders -U migration_admin
注意:以上是访问虚拟机实例上的独立数据库的另一种方法。
- 当系统提示输入密码时,请输入以下密码:
DMS_1s_cool!
- 在 psql 中,输入以下命令:
\c orders;
insert into distribution_centers values(-80.1918,25.7617,'Miami FL',11);
- 运行以下命令,关闭交互式 psql 会话:
\q
连接到 Cloud SQL PostgreSQL 数据库,检查更新的数据是否已迁移
- 在 Cloud Shell 中,输入以下命令连接到目标 Cloud SQL PostgreSQL 实例:
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
- 当系统提示输入密码时,输入您先前为 Cloud SQL 实例设置的密码,即:
supersecret!
您现在已激活目标实例的 PostgreSQL 交互式控制台。
查看 Cloud SQL for PostgreSQL 数据库中的数据
- 在 Cloud Shell 中运行以下命令,在 PostgreSQL 交互式控制台中选择活跃数据库:
\c orders;
- 当系统提示输入密码时,输入您先前设置的密码,即:
supersecret!
- 运行以下命令查询
distribution_centers 表:
select * from distribution_centers;
输出:
longitude | latitude | name | id
-----------+----------+---------------------------------------------+----
-89.9711 | 35.1174 | Memphis TN | 1
-87.6847 | 41.8369 | Chicago IL | 2
-95.3698 | 29.7604 | Houston TX | 3
-118.25 | 34.05 | Los Angeles CA | 4
-90.0667 | 29.95 | New Orleans LA | 5
-73.7834 | 40.634 | Port Authority of New York/New Jersey NY/NJ | 6
-75.1667 | 39.95 | Philadelphia PA | 7
-88.0431 | 30.6944 | Mobile AL | 8
-79.9333 | 32.7833 | Charleston SC | 9
-81.1167 | 32.0167 | Savannah GA | 10
-80.1918 | 25.7617 | Miami FL | 11
请注意,在独立数据库 orders 中添加的新行现在已出现在迁移后的数据库中。
- 运行以下命令退出 PostgreSQL 交互式控制台:
\q
点击检查我的进度以验证是否完成了以下目标:
测试数据是否持续从源数据库迁移到目标数据库。
任务 4. 将 Cloud SQL 提升为独立实例,以便读取和写入数据
-
在 Google Cloud 控制台的导航菜单 (
) 中,点击查看所有产品。在数据库部分下,依次点击数据库迁移 > 迁移作业。
-
点击迁移作业名称 vm-to-cloudsql,查看详情页面。
-
点击升级。
-
如果系统提示您确认,请点击升级。
提升完毕后,作业的状态将更新为已完成。
- 在 Google Cloud 控制台的导航菜单 (
) 中,点击查看所有产品。在数据库部分中,点击 Cloud SQL。
可以看到,postgresql-cloudsql 现在已是独立实例,可供读取和写入数据。
点击检查我的进度以验证是否完成了以下目标:
将 Cloud SQL for PostgreSQL 数据库提升为独立实例,以便读取和写入数据。
恭喜!
您已成功配置并完成了 Database Migration Service 的持续迁移作业,将数据库从 PostgreSQL 实例迁移至 Cloud SQL for PostgreSQL。
后续步骤/了解详情
请参阅以下资源,详细了解数据迁移、Cloud SQL 数据库和 Database Migration Service:
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
本手册的最后更新时间:2026 年 5 月 20 日
本实验的最后测试时间:2026 年 5 月 28 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。