Database Migration Service 支持通过一次性作业或持续性作业将数据迁移到 Cloud SQL。该服务支持多种连接方法,包括 IP 许可名单、反向 SSH 隧道、VPC 对等互连以及 Private Service Connect 接口。如需详细了解连接方法,请参阅配置连接指南。
本实验将重点介绍如何将虚拟机上托管的独立 PostgreSQL 数据库迁移至 Cloud SQL for PostgreSQL。此次迁移将利用 Database Migration Service 的持续作业功能,并通过 VPC 对等互连建立网络连接。
在使用 Database Migration Service 迁移数据库之前,必须先在源数据库上完成以下准备步骤:
#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
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;
\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 数据库创建 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 控制台的导航菜单 () 中,点击查看所有产品。在数据库部分下,依次点击数据库迁移 > 连接配置文件。
在目标 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 标签页中,查看迁移作业的详细信息。
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
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 12 月 10 日
上次测试实验的时间:2025 年 12 月 10 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。