将 PostgreSQL 数据库用作来源的已知限制包括:
pglogical
扩展程序不支持 PostgreSQL 12 及更高版本的生成列复制。表结构 (DDL) 的更改不会通过标准 DDL 命令复制,而只能通过使用用于复制的
pglogical
扩展程序执行的命令复制。例如,
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
语句配置了触发器,并且触发器状态设置为“副本”或“始终”,则它们会在复制期间在副本上触发。具有安全定义器的函数将由 AlloyDB 主副本中的
alloydbexternalsync
创建。当任何用户执行该脚本时,都会使用具有alloydbsuperuser
和alloydbreplica
角色的alloydbexternalsync
的权限来执行该脚本。最好将安全定义器函数的使用限制为仅限部分用户。为此,用户应撤消默认的 PUBLIC 权限,然后选择性地授予执行权限。
迁移到现有目标集群的限制
- 现有目标集群必须为空,或者仅包含系统配置数据。不支持迁移到包含用户数据(例如表)的现有目标集群。
- 每个目标集群只能配置一个迁移作业。
- 不支持迁移到包含次要集群的集群。
- 支持迁移到包含读取池实例的集群。
如需详细了解 AlloyDB for PostgreSQL 集群和实例,请参阅 AlloyDB for PostgreSQL 概览。
配额
- 在任何给定时间,最多可以存在 2000 个连接配置文件和 1000 个迁移作业。如需为更多任务腾出空间,可以删除一些迁移作业(包括已完成的作业)和连接配置文件。