对于到 Cloud SQL 的同构 PostgreSQL 迁移,Database Migration Service 会连接到目标 Cloud SQL for PostgreSQL 实例,并代表该实例管理持续迁移过程。目标实例会建立与源数据库的连接,而 Database Migration Service 会编排和监控端到端数据流水线。
对于到 Cloud SQL 的标准同构 PostgreSQL 迁移,Database Migration Service 支持持续迁移。在持续迁移中,初始数据会从快照转储中加载,然后使用逻辑解码和 pglogical 扩展程序从源数据库的预写式日志 (WAL) 中持续复制正在进行的数据更改。对于持续
快速启动迁移,Database Migration Service 使用 pgnative。
持续迁移阶段
持续迁移会按顺序经历以下阶段:
标准迁移
-
复制设置和编排:创建迁移作业时,Database Migration Service 会将目标 Cloud SQL for PostgreSQL 实例配置为副本,并使用
pglogical扩展程序建立复制订阅。迁移到现有 Cloud SQL 实例时,Database Migration Service 会降级该实例,以将其配置为外部副本(而不会将数据库置于只读模式)。 - 初始快照阶段:启动迁移作业时,Database Migration Service 会为源实例上的所选数据库创建一致的快照。此过程会在初始化快照时短暂锁定表(通常每个表不到 10 秒)。源数据库在整个过程中继续接受读取和写入。
- 数据加载阶段:Database Migration Service 会从源数据库流式传输初始快照数据,并将其加载到目标 Cloud SQL for PostgreSQL 实例中。
- 创建限制条件和索引:初始数据加载完成后,系统会在目标实例上创建表限制条件(包括主键和外键)和二级索引。将数据加载与限制条件创建分开,可优化数据注入速度。
-
变更数据捕获 (CDC) 阶段:应用限制条件后,Database Migration Service 会进入持续 CDC 阶段。在 CDC 期间,Database Migration Service 会使用
pglogical从源数据库的逻辑复制流中捕获持续的 DML 更改,并近乎实时地将其应用于目标实例。 - 割接和提升阶段:当您准备好将应用流量切换到目标实例时,请停止向源数据库写入数据,验证复制延迟是否达到零,然后在 Database Migration Service 中启动提升。在提升期间,Database Migration Service 会将目标实例与源实例断开连接,移除复制槽,并将目标实例转换为独立的读/写 Cloud SQL for PostgreSQL 主实例。
快速启动迁移
-
复制设置和编排:创建迁移作业时,Database Migration Service 会使用 Private Service Connect 接口通过专用 IP 自动设置网络连接(自动创建专用连接配置、网络连接和子网)。它使用 PostgreSQL 逻辑复制(通过
pgnative)在源数据库和目标数据库之间建立复制,而无需在源数据库上安装pglogical扩展程序或降级目标实例。目标实例可以是为其他数据库提供流量的活跃实例。 - 初始快照阶段:启动迁移作业时,Database Migration Service 会在源数据库服务器上为所选数据库(每个作业最多迁移 50 个数据库)创建一致的快照。在整个过程中,源数据库会继续接受读取和写入。
- 数据加载阶段:Database Migration Service 通过专用连接将初始快照数据直接流式传输到目标 Cloud SQL for PostgreSQL 实例。目标数据库对象的所有权会分配给 Database Migration Service 生成的迁移用户(使用 Google Cloud 控制台时)或使用 Google Cloud CLI 指定的迁移用户。
- 创建限制条件和索引:初始数据加载完成后,系统会在目标实例上创建表限制条件和二级索引,以确保架构保真度,同时最大限度地提高提取性能。
-
变更数据捕获 (CDC) 阶段:应用限制条件后,Database Migration Service 会进入持续 CDC 阶段。在 CDC 期间,Database Migration Service 会从
pgnativePostgreSQL 逻辑复制流中流式传输正在进行的 DML 更改,并近乎实时地将其应用于目标实例。对于没有主键的表,如果表的副本标识配置为INDEX或FULL,则可以复制UPDATE和DELETE操作。 - 割接和提升阶段:当您准备好将应用流量切换到目标实例时,请停止向源数据库写入数据,验证复制延迟是否达到零,然后在 Database Migration Service 中启动提升。在提升期间,Database Migration Service 会完成 CDC 复制、终止复制槽并分离迁移流水线,从而使 Cloud SQL for PostgreSQL 目标数据库完全可供客户端连接。
后续步骤
如需详细了解 Database Migration Service 中的 PostgreSQL 数据和功能支持,请参阅已知限制。
如需获取完整的逐步迁移演示,请参阅 Cloud SQL for PostgreSQL 迁移入门。