将 PostgreSQL 数据库用作来源的已知限制包括:
对于 PostgreSQL 12 及更高版本,
pglogical
扩展程序不支持复制生成列。表结构 (DDL) 的更改不会通过标准 DDL 命令进行复制,而只会通过使用用于复制的
pglogical
扩展程序执行的命令进行复制。这包括 对enum
类型的更改。例如,
pglogical
提供了一个函数pglogical.replicate_ddl_command
,可允许 DDL 在源数据库和副本上同时运行。在源上运行此命令的用户必须已存在于副本上。如需复制新表的数据,您必须使用
pglogical.replication_set_add_table
命令将新表添加到现有复制集中。如需详细了解迁移进行期间的 DDL 复制,请参阅迁移保真度部分。
对于没有主键的表,Database Migration Service 支持在变更数据捕获 (CDC) 阶段迁移初始快照和
INSERT
语句。您应手动迁移UPDATE
和DELETE
语句。Database Migration Service 不会迁移具体化视图中的数据,只会迁移视图架构。如需填充视图,请运行以下命令:
REFRESH MATERIALIZED VIEW view_name
。新 AlloyDB 目标位置上的
SEQUENCE
状态(例如last_value
)可能与来源SEQUENCE
状态不同。UNLOGGED
和TEMPORARY
表不会复制,也无法复制。不支持大型对象数据类型。如需了解详情,请参阅迁移保真度部分。
- 只有 AlloyDB 支持的 PostgreSQL 扩展程序和过程语言才能迁移。
Database Migration Service 不支持从处于恢复模式的只读副本进行迁移。
Database Migration Service 不支持应用了 AWS SCT 扩展包的 Amazon RDS 源。
- 以 C 语言编写的用户定义的函数无法迁移,但在安装 AlloyDB 支持的扩展程序时安装在 PostgreSQL 数据库中的函数除外。
如果源数据库中存在其他扩展程序和过程语言,或者它们的版本不受支持,那么当您测试或开始迁移作业时,该作业将会失败。
在迁移作业启动后添加的数据库不会迁移。
- 使用 Database Migration Service 进行迁移时,您无法选择特定表或架构。
Database Migration Service 会迁移所有表和架构,但以下项除外:
- 信息架构 (
information_schema
)。 - 以
pg
开头的任何表,例如pg_catalog
。如需查看以pg
开头的 PostgreSQL 目录的完整列表,请参阅 PostgreSQL 文档中的 PostgreSQL 系统目录。 - 有关用户和用户角色的信息不会迁移。
- 信息架构 (
如果加密数据库需要客户管理的加密密钥才能解密,而 Database Migration Service 无法访问这些密钥,则无法迁移这些数据库。
不过,如果客户数据通过
pgcrypto
扩展程序加密,则可以使用 Database Migration Service 迁移数据(因为 AlloyDB 支持该扩展程序)。Database Migration Service 还支持从加密的 Amazon Aurora 或 Amazon RDS 数据库迁移数据,因为这些数据库会在其服务中以透明方式处理解密。如需了解详情,请参阅加密 Amazon Aurora 资源和加密 Amazon RDS 资源。
在迁移期间,目标 AlloyDB 数据库可写入,以便在需要时应用 DDL 更改。请注意,不要对数据库配置或表结构进行任何可能会导致迁移过程中断或影响数据完整性的更改。
触发器的行为取决于其配置方式。默认情况下,它们不会触发,但如果使用
ALTER EVENT TRIGGER
或ALTER TABLE
语句配置了它们,并且触发器状态设置为 replica 或 always,那么它们将在复制期间在副本上触发。具有安全定义者的函数将由 AlloyDB 主节点中的
alloydbexternalsync
创建。当任何用户执行该过程时,该过程将以alloydbexternalsync
的权限执行,而alloydbexternalsync
具有alloydbsuperuser
和alloydbreplica
角色。最好将安全定义者函数的使用限制为仅限部分用户。为此,用户应撤消默认的 PUBLIC 权限,然后有选择地授予执行权限。Private Service Connect 接口连接方法仅支持迁移到现有目标实例。如果您想使用专用 IP 连接并迁移到新的目标实例,请使用 VPC 对等互连。
迁移到现有目标集群的限制
- 现有目标集群必须为空或仅包含系统配置数据。不支持迁移到包含用户数据(例如表)的现有目标集群。
- 每个目标集群只能配置一个迁移作业。
- 不支持迁移到包含次要集群的集群。
- 支持迁移到包含读取池实例的集群。
如需详细了解 AlloyDB for PostgreSQL 集群和实例,请参阅 AlloyDB for PostgreSQL 概览。
配额
- 在任何给定时间,最多可以存在 2000 个连接配置文件和 1000 个迁移作业。如需为更多任务腾出空间,可以删除一些迁移作业(包括已完成的作业)和连接配置文件。