arrow_back

使用 Database Migration Service 迁移到 Cloud SQL for PostgreSQL

加入 登录
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

使用 Database Migration Service 迁移到 Cloud SQL for PostgreSQL

Lab 1 小时 30 分钟 universal_currency_alt 1 个积分 show_chart 入门级
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP918

Google Cloud 自定进度实验

概览

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 实例升级为独立数据库,以便读取和写入数据。

目标

在本实验中,您将学习如何配置持续的 Database Migration Service 作业,以将数据库从 PostgreSQL 实例迁移到 Cloud SQL for PostgreSQL。

  • 为源数据库做好迁移准备。
  • 为源 PostgreSQL 实例(例如独立 PostgreSQL)创建连接配置文件。
  • 使用 VPC 对等互连配置源数据库实例和目标数据库实例之间的连接。
  • 配置防火墙和数据库访问规则,以允许访问要迁移的源数据库。
  • 使用 Database Migration Service 创建、运行和验证持续迁移作业。
  • 将目标实例 (Cloud SQL for PostgreSQL) 升级为独立数据库,以读取和写入数据。

设置

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google 控制台。 该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择帐号对话框,请点击使用其他帐号
  3. 如有必要,请从实验详细信息面板复制用户名,然后将其粘贴到登录对话框中。点击下一步

  4. 请从实验详细信息面板复制密码,然后将其粘贴到欢迎对话框中。点击下一步

    重要提示:您必须使用左侧面板中的凭据。请勿使用您的 Google Cloud Skills Boost 凭据。 注意:在本次实验中使用您自己的 Google Cloud 帐号可能会产生额外费用。
  5. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该帐号为临时帐号,请勿添加帐号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Cloud 控制台。

注意:您可以点击左上角的导航菜单来查看列有 Google Cloud 产品和服务的菜单。 “导航菜单”图标

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

验证 Database Migration API 是否已启用

  1. 在 Google Cloud 控制台的顶部搜索栏中输入 Database Migration API。点击 Database Migration API 的搜索结果。

此页面将显示状态信息或提供启用该 API 的选项。

  1. 如有必要,请启用此 API。

验证 Service Networking API 是否已启用

必须启用 Service Networking API,才能将 Cloud SQL 配置为支持 VPC 对等互连和通过专用 IP 地址进行的连接。

  1. 在 Cloud 控制台的顶部搜索栏中输入 Service Networking API。点击 Service Networking API 的搜索结果。

此页面将显示状态信息或提供启用该 API 的选项。

  1. 如有必要,请启用此 API。

任务 1. 为源数据库做好迁移准备

在此任务中,您将向源数据库添加 Database Migration Service 执行迁移所需的支持功能。具体包括:

  • 安装和配置 pglogical 数据库扩展程序。
  • 配置独立 PostgreSQL 数据库,允许通过 Cloud Shell 和 Cloud SQL 进行访问。
  • pglogical 数据库扩展程序添加到独立服务器上的 postgresordersgmemegen_db 数据库。
  • 创建执行数据库迁移的 migration_admin 用户(具有复制权限),并向该用户授予访问架构和关系所需的权限。

利用 pglogical 扩展程序升级数据库

在此步骤中,您将下载 pglogical 数据库扩展程序并将其添加到 postgresql-vm 虚拟机实例上的 orders 和 postgres 数据库中。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击 Compute Engine > 虚拟机实例

  2. postgresql-vm 对应的条目中,点击连接下方的 SSH

  3. 如果出现提示,请点击授权

  4. 在新浏览器窗口上的终端中,安装 pglogical 数据库扩展程序:

sudo apt install postgresql-13-pglogical 注意:pglogical 是一个完全作为 PostgreSQL 扩展程序实现的逻辑复制系统。该系统已完全集成,不需要触发器或外部程序即可运行。它可以替代物理复制,是一种使用发布/订阅模型进行选择性复制的高效数据复制方法。如需了解详情,请访问 https://github.com/2ndQuadrant/pglogical
  1. 下载 PostgreSQL 配置文件并在其中添加一些内容(以启用 pglogical 扩展程序),然后重启 postgresql 服务:
sudo su - postgres -c "gsutil cp gs://cloud-training/gsp918/pg_hba_append.conf ." sudo su - postgres -c "gsutil cp gs://cloud-training/gsp918/postgresql_append.conf ." sudo su - postgres -c "cat pg_hba_append.conf >> /etc/postgresql/13/main/pg_hba.conf" sudo su - postgres -c "cat postgresql_append.conf >> /etc/postgresql/13/main/postgresql.conf" sudo systemctl restart postgresql@13-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 服务已重启。

  1. 启动 psql 工具:
sudo su - postgres psql
  1. pglogical 数据库扩展程序添加到 postgresordersgmemegen_db 数据库。
\c postgres; CREATE EXTENSION pglogical; \c orders; CREATE EXTENSION pglogical; \c gmemegen_db; CREATE EXTENSION pglogical;
  1. 列出服务器上的 PostgreSQL 数据库:
\l

可以看到,除了默认的 postgresql 数据库之外,本实验还提供了 ordersgmemegen_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)

创建数据库迁移用户

在此步骤中,您将创建一个专用用户来管理数据库迁移。

  1. 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 迁移数据库的必要权限。

  1. 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;
  1. psql 中,授予用户对 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;
  1. psql 中,授予用户对 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;
  1. psql 中,授予用户对 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;
  1. psql 中,授予用户对 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 迁移 postgresordersgmemegen_db 数据库所需的全部权限。

migration_admin 用户设置为 orders 数据库中的表的所有者,以便您稍后在对迁移进行测试时可以修改源数据。

  1. psql 中,运行以下命令:
\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)
  1. 退出 psql 和 postgres 用户会话
\q exit

点击“检查我的进度”以验证是否完成了以下目标: 为 PostgreSQL 源实例做好迁移准备。

任务 2. 为独立 PostgreSQL 数据库创建 Database Migration Service 连接配置文件

在此任务中,您将为 PostgreSQL 源实例创建连接配置文件。

获取 PostgreSQL 源实例的连接信息

在此步骤中,您需要确定要迁移到 Cloud SQL 的源数据库实例的内部 IP 地址。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击 Compute Engine > 虚拟机实例

  2. 找到 postgresql-vm 实例所在的行。

  3. 复制内部 IP 字段的值(例如 10.128.0.2)。

为 PostgreSQL 源实例创建新的连接配置文件

连接配置文件中存储着有关源数据库实例(例如独立 PosgreSQL)的信息,Database Migration Service 使用连接配置文件将数据从源实例迁移到目标 Cloud SQL 数据库实例。创建连接配置文件后,可以在迁移作业中重复使用此配置文件。

在此步骤中,您将为 PostgreSQL 源实例创建一个新的连接配置文件。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击数据库迁移 > 连接配置文件

  2. 点击 + 创建配置文件

  3. 对于数据库引擎,选择 PostgreSQL

  4. 对于连接配置文件名称,输入 postgres-vm

  5. 对于主机名或 IP 地址,输入您在上一个任务中复制的 PostgreSQL 源实例的内部 IP(例如 10.128.0.2)。

  6. 对于端口,输入 5432

  7. 对于用户名,输入 migration_admin

  8. 对于密码,输入 DMS_1s_cool!

  9. 对于区域,选择

  10. 对于所有其他值,请保留默认值。

  11. 点击创建

一个名为 postgres-vm 的新连接配置文件即会显示在连接配置文件列表中。

点击“检查我的进度”以验证是否完成了以下目标: 为 PostgreSQL 源实例创建连接配置文件。

任务 3. 创建并启动持续迁移作业

在创建新的迁移作业时,首先需要使用先前创建的连接配置文件定义源数据库实例。然后,创建一个新的目标数据库实例,并配置源实例与目标实例之间的连接。

在此任务中,您将使用迁移作业界面来创建一个新的 Cloud SQL for PostgreSQL 数据库实例,并将其设置为从 PostgreSQL 源实例迁移数据的持续迁移作业的目标。

创建新的持续迁移作业

在此步骤中,您将创建一个新的持续迁移作业。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击数据库迁移 > 迁移作业

  2. 点击 + 创建迁移作业

  3. 对于迁移作业名称,输入 vm-to-cloudsql

  4. 对于源数据库引擎,选择 PostgreSQL

  5. 对于目标区域,选择

  6. 对于目标数据库引擎,选择 Cloud SQL for PostgreSQL

  7. 对于迁移作业类型,选择持续

对于其他设置,请保留默认值。

  1. 点击保存并继续

定义源实例

在此步骤中,您将定义要迁移的源实例。

  1. 对于来源连接配置文件,选择 postgres-vm

对于其他设置,请保留默认值。

  1. 点击保存并继续

选择来源连接配置文件后,您就能看到其配置详细信息,包括来源主机名或 IP 地址、端口、用户名和加密类型。

创建目标实例

在此步骤中,您将创建数据要迁移到的目标实例。

  1. 对于目标实例 ID,输入 postgresql-cloudsql

  2. 对于密码,输入 supersecret!

  3. 对于选择 Cloud SQL 版本,选择企业版

  4. 对于数据库版本,选择 Cloud SQL for PostgreSQL 13

  5. 选择区域和可用区部分,选择单个可用区并选择 作为主可用区

  6. 实例连接部分,选择专用 IP公共 IP

  7. 选择使用自动分配的 IP 范围

对于其他设置,请保留默认值。

  1. 点击分配并连接

保留选择的默认选项,以使用自动分配的 IP 范围。

注意:此步骤可能需要几分钟时间。如果系统要求您重试请求,请点击重试按钮以刷新 Service Networking API。

完成此步骤后,一条更新消息将会显示,告知您该实例将使用现有的托管式服务连接。

您需要修改虚拟机实例上的 pg_hba.conf 文件,以允许访问在上一步第 5 点中自动生成的 IP 范围。您需在后面的步骤中执行此操作,具体而言是在此任务结束时对迁移配置进行测试之前。

更新后的消息显示实例将使用现有的托管式服务连接。

输入在 Cloud SQL 上创建目标实例所需的其他信息。

  1. 对于机器类型,选中 1 个 vCPU、3.75 GB

  2. 对于存储类型,选择 SSD

  3. 对于存储空间容量,选择 10 GB

  4. 点击创建并继续

如果系统提示您确认,请点击创建目标并继续。一条消息即会显示,指出正在创建您的目标数据库实例。在此期间,继续执行下一步。

定义连接方法

在此步骤中,您将定义用于迁移的连接方法。

消息指出,在目标 Cloud SQL 实例创建完成后,“配置并继续”按钮将会启用。

  1. 对于连接方法,选择 VPC 对等互连

  2. 对于 VPC,选择默认

Database Migration Service 会使用您为 VPC 网络(在本例中为默认网络)提供的信息配置 VPC 对等互连。

当您看到指出目标实例创建完成的更新消息后,请继续执行下一步。

更新后的消息告知您目标 Cloud SQL 实例已创建完成。

  1. 点击配置并继续

允许从自动分配的 IP 范围访问 postgresql-vm 实例

在此步骤中,您将修改 pg_hba.conf PostgreSQL 配置文件,以允许 Database Migration Service 访问独立 PostgreSQL 数据库。

  1. 获取分配的 IP 地址范围。在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,右键点击 VPC 网络 > VPC 网络对等互连,在新标签页中打开其页面。

  2. 点击 servicenetworking-googleapis-com 条目。

  3. 导入的路由标签页中,选择并复制目标 IP 地址范围(例如 10.107.176.0/24)。

  4. 在虚拟机实例上的终端会话中,修改 pg_hba.conf 文件,如下所示:

sudo nano /etc/postgresql/13/main/pg_hba.conf
  1. 在文件的最后一行:
#GSP918 - allow access to all hosts host all all 0.0.0.0/0 md5

将“所有 IP 地址”范围 (0.0.0.0/0) 替换为上面第 3 步中复制的范围。

#GSP918 - allow access to all hosts host all all 10.107.176.0/24 md5 注意:上述步骤并非迁移成功的必要条件,但这样可以增强源数据库在迁移过程中的安全性,并且在迁移完成后迁移的数据库成为可信来源时,还能限制访问权限,因此是一种很好的做法。
  1. 按 Ctrl-O、Enter、Ctrl-X 键保存并退出 nano 编辑器。

  2. 重启 PostgreSQL 服务以使更改生效。在虚拟机实例终端会话中,输入以下命令:

sudo systemctl start postgresql@13-main

测试并启动持续迁移作业

在此步骤中,您将测试并启动迁移作业。

  1. 在您之前打开的 Database Migration Service 标签页中,查看迁移作业的详细信息。

  2. 点击测试作业

  3. 在测试成功后,点击创建并启动作业

请务必点击“创建并启动作业”按钮,以确保作业成功启动。

如果系统提示您确认,请点击创建并启动

查看持续迁移作业的状态

在此步骤中,您将确认持续迁移作业是否正在运行。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击数据库迁移 > 迁移作业

  2. 点击迁移作业 vm-to-cloudsql,查看详情页面。

  3. 查看迁移作业状态。

    • 如果作业尚未启动,状态会显示为尚未开始。您可以选择启动或删除该作业。
    • 作业启动后,状态将显示为正在启动,然后变为“正在运行”|“正在进行完全转储”,指出正在执行初始数据库转储。
    • 初始数据库转储完成后,状态将变为“正在运行”|“正在进行变更数据捕获 (CDC)”,指出正在进行持续迁移。

当作业状态变为“正在运行”|“正在进行变更数据捕获 (CDC)”时,继续执行下一项任务。

迁移作业 vm-to-cloudsql 的状态为“正在运行”|“正在进行变更数据捕获 (CDC)”。

点击“检查我的进度”以验证是否完成了以下目标: 创建、启动和查看持续迁移作业。

任务 4. 确认 Cloud SQL for PostgreSQL 中的数据

查看 Cloud SQL 中的 PostgreSQL 数据库

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击数据库 > SQL

  2. 展开实例 ID postgresql-cloudsql-master

  3. 点击 postgresql-cloudsql 实例(PostgreSQL 读取副本)。

  4. 副本实例菜单中,点击数据库

可以看到,名为 postgresordersgmemegen_db 的数据库已迁移到 Cloud SQL。

Cloud SQL 上已迁移的数据库。

连接到 PostgreSQL 实例

  1. 副本实例菜单中,点击概览

  2. 向下滚动到连接到此实例部分,然后点击打开 Cloud Shell

Cloud Shell 中将预先填充用于连接到 PostgreSQL 的命令:

gcloud sql connect postgresql-cloudsql --user=postgres --quiet
  1. 运行预先填充的命令。

如果出现提示,请点击授权以使用 API。

  1. 当系统提示输入密码时,请输入您之前设置的密码:
supersecret!

您现在已激活目标实例的 PostgreSQL 交互式控制台。

查看 Cloud SQL for PostgreSQL 实例中的数据

  1. 要在 PostgreSQL 交互式控制台中选择数据库,请运行以下命令:
\c orders;
  1. 当系统提示输入密码时,请输入以下密码:
supersecret!
  1. 查询 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
  1. 输入以下命令,退出 PostgreSQL 交互式控制台:
\q

更新独立源数据,以测试持续迁移

  1. 在 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 注意:以上是访问虚拟机实例上的独立数据库的另一种方法。
  1. 当系统提示输入密码时,请输入以下密码:
DMS_1s_cool!
  1. psql 中,输入以下命令:
\c orders; insert into distribution_centers values(-80.1918,25.7617,'Miami FL',11);
  1. 关闭交互式 psql 会话:
\q

连接到 Cloud SQL PostgreSQL 数据库,检查更新的数据是否已迁移

  1. 在 Cloud Shell 中,输入以下命令连接到目标 Cloud SQL PostgreSQL 实例:
gcloud sql connect postgresql-cloudsql --user=postgres --quiet
  1. 当系统提示输入密码时,请输入您之前为 Cloud SQL 实例设置的密码:
supersecret!

您现在已激活目标实例的 PostgreSQL 交互式控制台。

查看 Cloud SQL for PostgreSQL 数据库中的数据

  1. 在 Cloud Shell 中,于 PostgreSQL 交互式控制台中选择活跃数据库:
\c orders;
  1. 当系统提示输入密码时,请输入您之前设置的密码:
supersecret!
  1. 查询 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 中添加的新行现在已出现在迁移后的数据库中。

  1. 退出 PostgreSQL 交互式控制台:
\q

点击“检查我的进度”以验证是否完成了以下目标: 测试数据是否持续从源数据库迁移到目标数据库。

任务 5. 将 Cloud SQL 升级为独立实例,以便读取和写入数据

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击数据库迁移 > 迁移作业

  2. 点击迁移作业名称 vm-to-cloudsql,查看详情页面。

  3. 点击升级

如果系统提示您确认,请点击升级

升级完成后,作业的状态将更新为已完成

迁移作业 vm-to-cloudsql 的状态为“已完成”。

  1. 在 Google Cloud 控制台的导航菜单 (“导航菜单”图标) 中,点击数据库 > SQL

可以看到,postgresql-cloudsql 现在已是独立实例,可供读取和写入数据。

实例 postgresql-cloudsql 已标记为主实例。

点击“检查我的进度”以验证是否完成了以下目标: 将 Cloud SQL for PostgreSQL 数据库升级为独立实例,以便读取和写入数据。

恭喜!

您已了解如何配置持续的 Database Migration Service 作业,以将数据库从 PostgreSQL 实例迁移到 Cloud SQL for PostgreSQL。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 2 月 9 日

上次测试实验的时间:2024 年 2 月 6 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。