你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用迁移服务从 AWS RDS PostgreSQL 迁移到 Azure Database for PostgreSQL

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

本教程介绍如何使用 Azure 门户和 Azure CLI 将 PostgreSQL 实例从 AWS RDS 迁移到 Azure Database for a PostgreSQL 灵活服务器。

Azure Database for PostgreSQL 中的迁移服务是集成到 Azure 门户和 Azure CLI 中的完全托管服务。 它旨在简化迁移到 Azure Database for PostgreSQL 灵活服务器的迁移过程。

  • 配置你的 Azure Database for PostgreSQL 灵活服务器
  • 配置迁移任务
  • 监视迁移
  • 取消迁移
  • 迁移之后

先决条件(脱机)

在使用 Azure Database for PostgreSQL 中的迁移服务开始迁移之前,必须满足适用于脱机迁移方案的以下先决条件。

验证源版本

源 PostgreSQL 版本应该为 >= 9.5。 如果源 PostgreSQL 版本低于 9.5,请在迁移之前将源 PostgreSQL 版本升级到 9.5 或更高版本。

目标设置

  • 迁移之前,必须在 Azure 中设置 Azure Database for PostgreSQL。

  • 为 Azure Database for PostgreSQL 选择的 SKU 应与源数据库的规范相对应,以确保兼容性和足够的性能。

  • 有关创建新 Azure Database for PostgreSQL 的详细说明,请参阅以下链接:快速入门:创建服务器

网络设置

正确的网络设置对于确保迁移期间源和目标之间的成功连接至关重要。 以下指南可帮助你为不同的方案建立网络连接:

迁移的网络要求:

  • ExpressRoute/IPsec VPN/VPN 隧道:将本地/AWS 源连接到 Azure 时,可能需要设置 ExpressRoute、IPsec VPN 或 VPN 隧道,以促进安全的数据传输。

  • VNET 对等互连:在两个不同的 VNet 之间建立虚拟网络对等互连,以实现直接网络连接,这是在 Azure VM 与 Azure Database for PostgreSQL 之间进行迁移的先决条件。

连接方案:

下表可以帮助设置源和目标之间的网络。

Source 目标 连接提示
公用 公用 如果源已列入目标防火墙规则的允许列表,则无需执行其他操作。
专用 公用 不支持此配置;请使用 pg_dump/pg_restore 进行数据传输。
公用 专用 如果源已列入目标防火墙规则的允许列表,则无需执行其他操作。
Private Private 在源与目标之间建立 ExpressRoute、IPsec VPN、VPN 隧道或虚拟网络对等互连。
Private 专用终结点 不支持此配置;请联系 Microsoft 支持部门

其他网络注意事项:

  • pg_hba.conf 配置:为了促进源与目标 PostgreSQL 实例之间的连接,必须验证并可能需要修改 pg_hba.conf 文件。 此文件包括客户端身份验证,必须配置为允许目标 PostgreSQL 连接到源。 对 pg_hba.conf 文件的更改通常需要重启源 PostgreSQL 实例才能生效。

注意

pg_hba.conf 文件位于 PostgreSQL 安装的数据目录中。 如果源数据库是本地 PostgreSQL 服务器或 Azure VM 上托管的 PostgreSQL 服务器,则应检查并配置此文件。 对于 AWS RDS 或类似托管服务上的 PostgreSQL 实例,pg_hba.conf 文件不可直接访问或适用, 而是会通过服务提供的安全性和网络访问配置来控制访问。

有关网络设置的详细信息,请访问 Azure Database for PostgreSQL 灵活服务器中的迁移服务网络指南

扩展

扩展是可以添加到 PostgreSQL 以增强其功能的额外功能。 Azure Database for PostgreSQL 支持扩展,但必须手动启用扩展。 若要启用扩展,请执行以下步骤:

  • 在源中使用 select 命令列出所有正在使用的扩展 - select extname,extversion from pg_extension;

  • 在 Azure Database for PostgreSQL 的“服务器参数”页面上搜索 azure.extensions 服务器参数。 启用在 PostgreSQL 内的源中找到的扩展。

  • 保存参数更改并重启 Azure Database for PostgreSQL 以应用新配置(如果需要)。

    扩展的屏幕截图。

  • 检查列表中是否包含以下任一扩展:

    • PG_CRON
    • PG_HINT_PLAN
    • PG_PARTMAN_BGW
    • PG_PREWARM
    • PG_STAT_STATEMENTS
    • PG_AUDIT
    • PGLOGICAL
    • WAL2JSON

如果是,请在服务器参数页面中搜索 shared_preload_libraries 参数。 此参数指示在服务器重启时预加载的扩展库集。

用户和角色

迁移到 Azure Database for PostgreSQL 时,必须单独解决用户和角色的迁移问题,因为它们需要手动干预:

  • 手动迁移用户和角色:用户及其关联的角色必须以手动方式迁移到 Azure Database for PostgreSQL。 为了方便此过程,可以将 pg_dumpall 实用工具与 --globals-only 标志一起使用,以导出角色和用户帐户等全局对象。 请执行以下命令,但要将 <<username>> 替换为实际的用户名,并将 <<filename>> 替换为所需的输出文件名:

    pg_dumpall --globals-only -U <<username>> -f <<filename>>.sql
    
  • 对超级用户角色的限制:Azure Database for PostgreSQL 不支持超级用户角色。 因此,具有超级用户权限的用户必须在迁移之前移除这些权限。 请确保相应地调整权限和角色。

通过执行这些步骤,可以确保用户帐户和角色正确迁移到 Azure Database for PostgreSQL,而不会遇到与超级用户限制相关的问题。

服务器参数

这些参数不会自动迁移到目标环境,必须手动进行配置。

  • 通过访问 Microsoft Azure 门户中的“服务器参数”部分并相应地手动更新相关值,将源 PostgreSQL 数据库中的服务器参数值与 Azure Database for PostgreSQL 相匹配。

  • 保存参数更改并重启 Azure Database for PostgreSQL 以应用新配置(如果需要)。

在目标中禁用高可用性(可靠性)和只读副本

  • 在目标环境中禁用高可用性(可靠性)和只读副本至关重要。 只有在迁移完成后才能启用这些功能。

  • 遵循这些准则有助于避免因 HA 和只读副本而引入更多变量,确保迁移过程顺利进行。 迁移完成并且数据库稳定后,可以继续启用这些功能,以提高 Azure 中数据库环境的可用性和可伸缩性。

你可以使用 Azure 门户进行迁移。

配置迁移任务

该迁移服务在 Microsoft Azure 门户中提供了一种基于向导的简单体验。

  1. 打开 Web 浏览器并转到门户。 输入凭据登录。 默认视图是服务仪表板。

  2. 转到 Azure Database for PostgreSQL 灵活服务器。

  3. 在灵活服务器“概述”选项卡的左侧菜单上,向下滚动到“迁移”并将其选中。

    屏幕截图显示了迁移选择。

  4. 选择“创建”按钮,以从 AWS RDS 迁移到灵活服务器。

    注意

    第一次使用迁移服务时,将显示一个空网格,并提示你开始第一次迁移。

    如果已创建向灵活服务器目标的迁移,则该网格中当下会包含有关尝试的迁移的信息。

  5. 选择“创建”按钮,以通过基于向导的一系列选项卡来执行迁移。

    屏幕截图显示了“创建”迁移页面。

安装

第一个选项卡是“设置”选项卡。

用户需要提供与迁移相关的多个详细信息,例如迁移名称、源服务器类型、选项和模式。

  • “迁移名称”是每个到此灵活服务器目标的迁移的唯一标识符。 此字段仅接受字母数字字符,不接受除连字符 (-) 之外的任何特殊字符。 名称不能以连字符开头,并且对于目标服务器应是唯一的。 到同一灵活服务器目标的两个迁移不能同名。

  • 源服务器类型 - 根据 PostgreSQL 源,可以选择“AWS RDS for PostgreSQL”。

  • 迁移选项 - 允许在触发迁移之前执行验证。 可以选择以下任一选项

    • 验证 - 检查服务器和数据库就绪情况,以便迁移到目标。
    • 迁移 - 跳过验证并开始迁移。
    • 验证并迁移 - 在触发迁移之前执行验证。 如果未发生验证失败,则会触发迁移。
      • 在运行迁移之前,选择“验证”或“验证并迁移”选项始终是执行预迁移验证的良好做法。

若要了解有关预迁移验证的详细信息,请访问预迁移

  • “迁移模式”允许选择迁移的模式。 “脱机”是默认选项。

选择“下一步: 连接到源”按钮。

屏幕截图显示了“设置”迁移页面。

连接到源

“连接到源”选项卡会提示你提供与“设置”选项卡中选择的源相关的详细信息,该源是数据库的源。

  • 服务器名称 - 提供源 PostgreSQL 实例的主机名或 IP 地址

  • 端口 - 源服务器的端口号

  • 服务器管理员登录名 - 源 PostgreSQL 服务器的用户名

  • 密码 - 源 PostgreSQL 服务器的密码

  • SSL 模式 - 支持的值是首选值,也是必需值。 当源 PostgreSQL 服务器上的 SSL 为“关”时,请使用 SSLMODE=prefer。 如果源服务器上的 SSL 为“开”,请使用 SSLMODE=require。 SSL 值可以在 postgresql.conf 文件中确定。

  • 测试连接 - 执行目标与源之间的连接测试。 连接成功后,用户可以继续执行下一步操作;他们需要确定目标与源之间的网络问题,并验证源的用户名/密码。 测试连接需要几分钟时间才能在目标与源之间建立连接。

测试连接成功后,选择“下一步: 选择迁移目标”按钮。

屏幕截图显示了“连接到源”页面。

连接到目标

“选择迁移目标”选项卡显示灵活服务器目标的元数据,例如订阅名称、资源组、服务器名称、位置和 PostgreSQL 版本。

  • 管理员用户名 - 目标 PostgreSQL 服务器的管理员用户名

  • 密码 - 目标 PostgreSQL 服务器的密码

  • 测试连接 - 执行目标与源之间的连接测试。 连接成功后,用户可以继续执行下一步操作。 否则,我们需要确定目标与源之间的网络问题,并验证目标的用户名/密码。 测试连接需要几分钟时间才能在目标与源之间建立连接

测试连接成功后,选择“下一步: 选择要迁移的数据库”

屏幕截图显示了连接目标的迁移页面。

选择要迁移的数据库

在“选择要迁移的数据库”选项卡下,可以选择要从源 PostgreSQL 服务器迁移的一系列用户数据库。
选择这些数据库后,选择“下一步: 摘要”

屏幕截图显示了“fetchDB”迁移页面。

总结

“摘要”选项卡汇总了用于创建验证或迁移的所有源和目标详细信息。 查看详细信息,然后选择“开始验证和迁移”按钮。

屏幕截图显示了“摘要”迁移页面。

监视迁移

选择“开始验证和迁移”按钮后,几秒钟内会显示一条通知,指出验证或迁移创建成功。 系统会自动重定向到灵活服务器的“迁移”页面。 该条目处于“InProgress”状态和“PerformingPreRequisiteSteps”子状态。 该工作流需要 2-3 分钟来设置迁移基础结构和检查网络连接。

屏幕截图显示了监视迁移页面。

显示迁移的网格将包含以下列:“名称”、“状态”、“迁移模式”、“迁移类型”、“源服务器”、“源服务器类型”、“数据库”、“持续时间”和“开始时间”。 条目按开始时间降序显示,最新条目位于顶部。 你可以使用“刷新”按钮刷新验证或迁移运行的状态。

迁移详细信息

在网格中选择迁移名称以查看关联的详细信息。

在“设置”选项卡中,我们已经选择了迁移选项“验证和迁移”。 在这种情况下,将先执行验证,然后再执行迁移。 “PerformingPreRequisiteSteps”子状态完成后,工作流将进入“Validation in Progress”子状态。

  • 如果验证出现错误,迁移将进入“失败”状态。

  • 如果验证完成且未出现任何错误,迁移会开始,并且工作流将进入“Migrating Data”子状态。

系统会在实例和数据库级别提供验证详细信息。

  • 实例级别的验证

    • 包含与连接性检查、源版本(即 PostgreSQL 版本 >= 9.5)、服务器参数检查(即是否在 Azure Database for PostgreSQL 灵活服务器的服务器参数中启用了扩展)相关的验证。
  • 数据库级别的验证

    • 它包含与 Azure Database for PostgreSQL 灵活服务器中的扩展和排序规则支持相关的对单个数据库的验证。

可以在迁移详细信息页面下查看验证和迁移状态。

屏幕截图显示了有关验证和迁移的详细信息。

可能的迁移状态包括:

  • 进行中:正在设置迁移基础结构,或者正在进行实际数据迁移。
  • 已取消:迁移已被取消或删除。
  • Failed:迁移失败。
  • 验证失败:验证失败。
  • Succeeded:迁移成功并已完成。
  • WaitingForUserAction:仅适用于联机迁移。 等待用户操作以执行直接转换。

可能的迁移子状态包括:

  • PerformingPreRequisiteSteps:正在设置基础结构以进行数据迁移。
  • 正在进行验证:验证正在进行。
  • 正在迁移数据:数据迁移正在进行中。
  • CompletingMigration:迁移处于完成的最后阶段。
  • Completed:迁移已完成。
  • Failed:迁移失败。

可能的验证子状态包括:

  • Failed:验证失败。
  • Succeeded:验证成功。
  • Warning:验证处于“警告”状态。 警告是规划迁移时必须记住的信息性消息。

使用门户取消迁移

可以取消任何正在进行的验证或迁移。 工作流必须处于 InProgress 状态才能取消。 无法取消处于“成功”或“失败”状态的验证或迁移。

  • 取消验证会停止进一步的验证活动,验证会进入“已取消”状态。
  • 取消迁移会停止目标服务器上的进一步迁移活动,并进入“已取消”状态。 取消操作会回滚迁移服务在目标服务器上所做的所有更改。

迁移之后

完成数据库后,需要人工在源和目标之间验证数据,并确认目标数据库中的所有对象都已成功创建。

迁移后,可以执行以下任务:

  • 验证灵活服务器上的数据,并确保它是源实例的确切副本。

  • 验证后,根据需要在灵活服务器上启用高可用性选项。

  • 根据应用程序的需求更改灵活服务器的 SKU。 需要重启数据库服务器才能使此更改生效。

  • 如果更改了源实例中任何服务器参数的默认值,请将这些服务器参数值复制到灵活服务器中。

  • 将标记、警报和防火墙规则(如果适用)等其他服务器设置从源实例复制到灵活服务器。

  • 更改应用程序以将连接字符串指向灵活服务器。

  • 密切监视数据库性能,以查看是否需要进行性能优化。