使用迁移服务进行扩展迁移

适用于: Azure Database for PostgreSQL 灵活型服务器

PostgreSQL 扩展通过添加新功能(如高级索引、时序管理、空间数据处理和外部数据包装器)来增强数据库功能。 扩展提供了更多功能,例如性能优化、数据转换和与外部系统的集成。 扩展可以包括新的数据类型、函数、运算符、索引类型等。 它们无需修改核心数据库系统即可扩展 PostgreSQL 的功能。

Azure Database for PostgreSQL 的迁移服务支持迁移 Azure Database for PostgreSQL 灵活服务器中提供的所有扩展。 若要确保使用迁移服务成功迁移,建议验证源 PostgreSQL 实例中使用的扩展。 扩展提供应用程序可能需要的基本功能,并在迁移前对其进行验证有助于确保平稳过渡。

迁移扩展的步骤

要确保使用 Azure Database for PostgreSQL 中的迁移服务成功进行迁移,可能需要验证源 PostgreSQL 实例的扩展。 扩展提供了应用程序可能需要的功能和特征。 在启动迁移过程之前,请确保验证源 PostgreSQL 实例上的扩展。

在目标 Azure Database for PostgreSQL 灵活服务器中,启用源 PostgreSQL 实例中标识的受支持扩展。

有关详细信息,请参阅 “允许扩展”。 此外,必须在shared_preload_libraries中添加一些扩展。 请参阅 加载库

注释

只要更改 shared_preload_libraries 参数,就需要重启。

扩展中的配置表

某些 PostgreSQL 扩展定义配置表,这些表存储扩展功能所需的元数据或设置。 这些表允许用户根据特定的数据要求修改配置。 迁移服务支持迁移以下扩展的配置表:

  • TimescaleDB
  • postgis_topology
  • postgis_tiger_geocoder
  • pg_partman
  • postgres_fdw

如果配置表列在 extconfig 系统目录表的 pg_extension 列中,迁移服务会考虑对其进行迁移。 这些表包含扩展功能所需的关键设置或元数据。 此行为符合管理扩展配置表的方式 pg_dump ,确保迁移过程中的一致性。 有关详细信息,请参阅 PostgreSQL 文档:pg_dump extend-extensions

注释

由于 Azure Database for PostgreSQL 灵活服务器中所需的超级用户特权,某些配置表迁移可能会失败

重要

未在 extconfig 系统目录表的 pg_extension 列中引用的表不会迁移到目标。 在 CDC 期间,请确保不会引用这些表,因为它们不会加载任何数据。

有关postgres_fdw迁移的注意事项

迁移服务不支持在以下方案中迁移postgres_fdw扩展:

  • 当使用以下迁移服务器参数时,用户/角色迁移会被禁用:azure.migration_skip_role_user = on
  • 当源 PostgreSQL 版本大于 15 时。
  • 当源数据库来自 AWS、本地、GCP 或 Azure VM 时(不包括 Azure Database for PostgreSQL - 单一服务器)。

有关 pg_partman 迁移的注意事项

pg_partman (PG 分区管理器)是一个扩展,可自动执行基于时间和基于序列的表分区的分区管理。 它通过管理分区的创建、保留和维护来简化分区处理。

  • 中断性变更:由于扩展配置表中的重大结构更改,从版本 4.* 迁移到 5.* 失败。
  • 基于触发器的分区:pg_partman 5.x 不支持基于触发器的分区。 在迁移之前,用户必须从基于触发器的分区过渡到本机 PostgreSQL 分区。
  • 预迁移注意事项:用户必须确保在迁移过程中没有运行任何重建分区的后台作业(例如 cron、BGP)。

PostGIS 迁移的注意事项

多个 PostGIS 的版本之间存在重大变更,可能会影响迁移。 客户应查看 官方 PostGIS 发行说明 以了解潜在问题。

  • 在迁移过程中,topology_id_seq 序列不会被重置。 在创建新拓扑之前,用户必须手动重置它。
  • 某些函数已被删除或架构更改,例如 ST_QuantileST_ApproxQuantileMULTIPOINT。 这些更改可能会导致迁移失败。

TimescaleDB 迁移

TimescaleDB 扩展是一个时序数据库,已作为 PostgreSQL 的扩展打包。 它为时序工作负载提供面向时间的分析功能,并对 PostgreSQL 进行优化和扩展。 详细了解 TimescaleDB,它是 Timescale Inc. 的注册商标。Azure Database for PostgreSQL 灵活服务器提供 TimescaleDB Apache-2 版本,并且迁移服务也支持该版本。

注释

只有 脱机 迁移才能用于时序数据库。

通过在迁移之前确保扩展的正确验证和配置,可以使用适用于 Azure Database for PostgreSQL 的迁移服务无缝过渡到 Azure Database for PostgreSQL 灵活服务器。