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