#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;
在 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;
在 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;
\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;
在 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;
\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 控制台的导航菜单 () 中,依次点击数据库迁移 > 连接配置文件。
点击 + 创建配置文件。
对于数据库引擎,选择 PostgreSQL。
对于连接配置文件名称,输入 postgres-vm。
对于主机名或 IP 地址,输入您在上一个任务中复制的 PostgreSQL 源实例的内部 IP(例如 10.128.0.2)。
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 文件,如下所示:
sudo nano /etc/postgresql/13/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) 替换为上面第 3 步中复制的范围。
#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@13-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
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
点击“检查我的进度”以验证是否完成了以下目标:
测试数据是否持续从源数据库迁移到目标数据库。
任务 5. 将 Cloud SQL 升级为独立实例,以便读取和写入数据
在 Google Cloud 控制台的导航菜单 () 中,依次点击数据库迁移 > 迁移作业。
点击迁移作业名称 vm-to-cloudsql,查看详情页面。
点击升级。
如果系统提示您确认,请点击升级。
升级完成后,作业的状态将更新为已完成。
在 Google Cloud 控制台的导航菜单 () 中,依次点击数据库 > SQL。
可以看到,postgresql-cloudsql 现在已是独立实例,可供读取和写入数据。
点击“检查我的进度”以验证是否完成了以下目标:
将 Cloud SQL for PostgreSQL 数据库升级为独立实例,以便读取和写入数据。
恭喜!
您已了解如何配置持续的 Database Migration Service 作业,以将数据库从 PostgreSQL 实例迁移到 Cloud SQL for PostgreSQL。
Google Cloud 培训和认证
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2024 年 5 月 14 日
上次测试实验的时间:2024 年 5 月 14 日
版权所有 2025 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。