#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 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
Labs create a Google Cloud project and resources for a fixed time
Labs have a time limit and no pause feature. If you restart it, you'll have to start from the beginning.
On the top left of your screen, click Start lab to begin
Use private browsing
Copy the provided Username and Password for the lab
Click Open console in private mode
Sign in to the Console
Sign in using your lab credentials. Using other credentials might cause errors or incur charges.
Accept the terms, and skip the recovery resource page
Don't click End lab unless you've finished the lab or want to restart it, as it will clear your work and remove the project
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
One lab at a time
Confirm to end all existing labs and start this one
Setup your console before you begin
Use an Incognito or private browser window to run this lab. This
prevents any conflicts between your personal account and the Student
account, which may cause extra charges incurred to your personal account.
在本实验中,您将使用持续的 Database Migration Service 作业和 VPC 对等互连连接方法,将一个独立 PostgreSQL 数据库(在虚拟机上运行)迁移到 Cloud SQL for PostgreSQL。