- 什么是 Database Migration Service?
- 支持哪些来源?
- 是否支持跨版本?
- 哪些数据、架构和元数据组件会被迁移?
- 持续迁移期间复制哪些更改?
- 哪些内容不会迁移?
- 使用哪些网络方法?
- 有哪些已知限制?
- 什么是 Database Migration Service?
- Database Migration Service 是一项服务,可帮助您更轻松地将数据迁移到 Google Cloud。Database Migration Service 可帮助您将 PostgreSQL 工作负载直接原样迁移到 AlloyDB。
- 支持哪些来源?
-
- Amazon RDS 9.6.10+、10.5+、11.1+、12、13、14、15
- Amazon Aurora 10.11+、11.6+、12.4+、13.3+、14、15
- 自行管理的 PostgreSQL(在本地或由您完全控制的任何云端虚拟机上)9.4、9.5、9.6、10、11、12、13、14、15
- Cloud SQL 9.6、10、11、12、13、14、15
- 支持哪些目标位置?
-
- AlloyDB for PostgreSQL 14、15、16
- 是否支持跨版本?
- Database Migration Service 支持从任何受支持的源数据库版本将数据库从 PostgreSQL 迁移到 AlloyDB。
- 哪些数据、架构和元数据组件会被迁移?
- Database Migration Service 会将架构、数据和元数据从源迁移到目标。在数据库迁移过程中,系统会迁移以下所有数据、架构和元数据组件:
数据迁移
- 所选数据库中的所有架构和所有表。
- 命名
- 主键
- 数据类型
- 序数位置
- 默认值
- 是否可为 NULL
- 自动递增属性
- 二级索引
- 存储过程
- Functions
- 触发器
- 视图
- 外键约束条件
- 持续迁移期间复制哪些更改?
-
只有 DML 更改会在迁移过程中自动更新。管理 DDL 以确保源数据库和目标数据库保持兼容是用户的责任,可通过两种方式来实现:
- 停止写入源数据库,并在源数据库和目标数据库中运行 DDL 命令。在目标数据库运行 DDL 命令之前,向进行 DDL 更改的 Cloud SQL 用户授予
alloydbexternalsync
角色。如需启用数据查询或更改,请向相关 Cloud SQL 用户授予alloydbexternalsync
角色。 使用
pglogical.replicate_ddl_command
在源数据库和目标数据库上同时运行 DDL。运行此命令的用户在源端和目标端必须使用相同的用户名,并且应为要迁移的工件(例如表、序列、视图或数据库)的超级用户或所有者。以下是使用
pglogical.replicate_ddl_command
的一些示例。如需向数据库表添加列,请运行以下命令:
select pglogical.replicate_ddl_command('ALTER TABLE [schema].[table] add column surname varchar(20)', '{default}');
如需更改数据库表的名称,请运行以下命令:
select pglogical.replicate_ddl_command('ALTER TABLE [schema].[table] RENAME TO [table_name]','{default}');
如需创建数据库表,请运行以下命令:
select pglogical.replicate_ddl_command(command := 'CREATE TABLE [schema].[table] (id INTEGER PRIMARY KEY, name VARCHAR);', replication_sets := ARRAY['default'']);
select pglogical.replication_set_add_table('default', '[schema].[table]');
- 停止写入源数据库,并在源数据库和目标数据库中运行 DDL 命令。在目标数据库运行 DDL 命令之前,向进行 DDL 更改的 Cloud SQL 用户授予
- 哪些内容不会迁移?
-
如需向 AlloyDB 目标实例添加用户,请通过 PostgreSQL 客户端添加用户。详细了解如何创建和管理 PostgreSQL 用户。
无法复制大型对象,因为 PostgreSQL 的逻辑解码功能不支持对大型对象进行解码更改。对于具有引用大型对象的 列类型 oid 的表,系统仍会同步行并复制新行。但是,尝试访问目标数据库中的大型对象(使用 lo_get 读取、使用 lo_export 导出或检查给定 oid 的清单
pg_largeobject
)会失败,并显示一条消息,提示大型对象不存在。对于没有主键的表,Database Migration Service 支持在变更数据捕获 (CDC) 阶段迁移初始快照和
INSERT
语句。您应手动迁移UPDATE
和DELETE
语句。Database Migration Service 不会迁移具体化视图中的数据,只会迁移视图架构。如需填充视图,请运行以下命令:
REFRESH MATERIALIZED VIEW view_name
。新 AlloyDB 目标位置上的
SEQUENCE
状态(例如last_value
)可能会与来源SEQUENCE
状态不同。 - 使用哪些网络方法?
- 如需在 Database Migration Service 中创建迁移,必须在源实例和 Cloud SQL 目标实例之间建立连接。支持多种方法。选择最适合特定工作负载的方案。
网络方法 说明 优点 缺点 通过云端托管式虚拟机的反向 SSH 隧道 通过安全的反向 SSH 隧道建立从目标到来源的连接。 需要在 Google Cloud 项目中有一个堡垒主机虚拟机,以及与源代码具有连接的机器(例如网络上的笔记本电脑)。Database Migration Service 会在创建迁移时收集所需信息,并自动生成用于进行设置的脚本。 - 易配置。
- 无需任何自定义防火墙配置。
- 建议用于短暂的迁移场景(POC 或小型数据库迁移)。
- 您拥有并管理堡垒虚拟机。
- 可能会产生额外费用。
通过云端托管式虚拟机的 TCP 代理 通过云端托管式虚拟机的 TCP 代理建立从目标到来源的连接。 Database Migration Service 会在创建迁移时收集所需信息,并自动生成用于进行设置的脚本。 适用于来源采用旧网络架构的 AlloyDB 迁移。 - 易配置。
- 无需任何自定义防火墙配置。
- Bastion 虚拟机由您拥有和管理,并且可能会产生额外费用。
VPC 对等互连 此方法的工作原理是配置 VPC 以便相互通信。 - 原生 Google Cloud 解决方案。
- 易配置。
- 高带宽
- 建议用于长时间运行或大批量迁移。
仅适用于源数据库和目标数据库都托管在 Google Cloud中的情况。 VPN 设置 IPsec VPN 隧道,通过公共互联网的安全连接将内部网络与 Google Cloud VPC 连接起来。使用 Google Cloud VPN 或为内部网络设置的任何 VPN 解决方案。 - 强大且可伸缩的连接解决方案。
- 中高带宽。
- 内置安全功能。
- 以 Google Cloud 解决方案的形式提供,或由其他第三方提供。
- 需要支付额外费用。
- 非琐碎的配置(除非已就位)。
Cloud Interconnect 在本地网络与 Google Cloud之间使用高可用性、低延迟的连接。 带宽最高,非常适合长时间运行的大规模迁移。 - 需要支付额外费用。
- 默认情况下,连接不安全。
- 非琐碎的配置(除非已就位)。
- 有哪些已知限制?
- 请参阅已知限制。