- 什么是 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、16、17
- Amazon Aurora 10.11+、11.6+、12.4+、13.3+、14、15、16、17
- 自行管理的 PostgreSQL(在本地或由您完全控制的任何云虚拟机上)9.4、9.5、9.6、10、11、12、13、14、15、16、17
- Cloud SQL 9.6、10、11、12、13、14、15、16、17
- 支持哪些目标?
-
- AlloyDB for PostgreSQL 14、15、16、17、18
- 是否支持跨版本?
- Database Migration Service 支持从任何受支持的源数据库版本进行 PostgreSQL 到 AlloyDB 的迁移。
- 哪些数据、架构和元数据组件会迁移?
- Database Migration Service 会将架构、数据和元数据从来源迁移到目标。以下所有数据、架构和元数据组件都会作为数据库迁移的一部分进行迁移:
数据迁移
- 所选数据库中的所有架构和所有表。
- 命名
- 主键
- 数据类型
- 序号位置
- 默认值
- 是否可为 null
- 自动递增属性
- 二级索引
- 存储过程
- 函数
- 触发器
- 视图
- 外键限制条件
- 持续迁移期间会复制哪些更改?
-
只有 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 导出或检查 目录
pg_largeobject以获取给定 oid)会失败,并显示一条消息,指出该大型 对象不存在。对于没有主键的表,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 collects the required information at migration creation time, and auto-generates the script for setting it up. - 易配置。
- 不需要任何自定义防火墙配置。
- 建议用于短期迁移场景(概念验证或小型数据库迁移)。
- 您拥有并管理堡垒虚拟机。
- 可能会产生额外费用。
通过云托管式虚拟机的 TCP 代理 通过云托管式虚拟机的 TCP 代理建立从目标到来源的连接。 Database Migration Service 会在创建迁移时收集所需的信息,并自动生成用于设置该信息的脚本。 适用于来源采用旧网络架构的 AlloyDB 迁移。 - 易配置。
- 不需要任何自定义防火墙配置。
- 堡垒虚拟机由您拥有和管理,可能会产生额外费用。
VPC 对等互连 此方法通过配置 VPC 来相互通信。 - 原生 Google Cloud 解决方案。
- 易配置。
- 高带宽
- 建议用于长时间运行或大容量迁移。
仅当来源数据库和目标数据库都托管在 Google Cloud时适用。 VPN 设置 IPSec VPN 隧道,通过公共互联网上的 安全连接将内部网络和 Google Cloud VPC 连接起来。使用 Google Cloud VPN 或为内部网络设置的任何 VPN 解决方案。 - 稳健且可伸缩的连接解决方案。
- 中高带宽。
- 内置安全性。
- 由解决方案或来自其他第三方提供。 Google Cloud
- 额外费用。
- 配置不简单(除非已就位)。
Cloud Interconnect 在本地网络和 Google Cloud之间使用高可用性、低延迟时间连接。 带宽最高,非常适合长时间运行的大容量迁移。 - 额外费用。
- 默认情况下,连接不安全。
- 配置不简单(除非已就位)。
- 有哪些已知限制?
- 请参阅已知限制。