使用迁移服务从 Amazon Aurora PostgreSQL 服务器联机迁移到 Azure Database for PostgreSQL

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

本文介绍如何以联机模式将 PostgreSQL 实例从本地或 Azure 虚拟机(VM)迁移到 Azure Database for PostgreSQL 灵活服务器。

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

  • 先决条件
  • 执行迁移
  • 监视迁移
  • 启动直接转换
  • 完成后检查迁移过程

先决条件

如要开始迁移,需满足以下先决条件:

在使用 Azure Database for PostgreSQL 中的迁移服务开始迁移之前,务必满足以下先决条件。 这些先决条件是专门为在线迁移场景设计的。

验证源版本

源 PostgreSQL 服务器版本必须为 9.5 或更高。 如果源 PostgreSQL 版本低于 9.5,请在开始迁移之前将该版本升级到 9.5 或更高版本。

安装 test_decoding 进行源设置

  • test_decoding 插件通过逻辑解码机制接收预写日志记录 (WAL)。 该插件将 WAL 解码为执行的操作的文本表示形式。
  • 在 Amazon RDS for PostgreSQL 中,test_decoding 插件已预先安装并随时可用于逻辑复制。 你可以轻松设置逻辑复制槽并流式传输 WAL 更改,以实现变更数据捕获 (CDC) 或将数据复制到外部系统等目的。

有关 test_decoding 插件的详细信息,请参阅 PostgreSQL 文档

配置目标设置

迁移之前,必须在 Azure 中创建 Azure Database for PostgreSQL 的实例。 为 Azure Database for PostgreSQL 灵活服务器预配的 SKU 应与源匹配。

有关详细信息,请参阅 创建 Azure Database for PostgreSQL 灵活服务器

启用 CDC 作为源

  • test_decoding 逻辑解码插件从源捕获已更改的记录。

  • 若要允许迁移用户访问复制权限,请执行以下命令:

    GRANT rds_replication TO <username>;
    
  • 在源 PostgreSQL 实例中,通过创建新的参数组来修改数据库群集参数组中的以下参数:

    • rds.logical_replication 设置为 1
    • max_replication_slots 设置为大于 1 的值。 该值应大于选择进行迁移的数据库的数量。
    • max_wal_senders 设置为大于 1 的值。 该值至少应与 max_replication_slots 的值相同,加上实例中已使用的发送器的数量。
    • wal_sender_timeout 参数会结束持续时间超过指定毫秒数的非活动复制连接。 Amazon Aurora PostgreSQL 实例的默认值为 30000 milliseconds (30 seconds)。 将该值设置为 0 (zero) 会禁用超时机制,这也是迁移的有效设置。
  • 在目标灵活服务器中,为了防止联机迁移过程中日志存储空间不足,请使用预配的托管磁盘确保表空间中有足够的存储空间。 在迁移期间禁用服务器参数 azure.enable_temp_tablespaces_on_local_ssd。 在迁移后将参数还原至原始状态。

配置网络设置

网络设置对于迁移服务正常运行至关重要。 确保源 PostgreSQL 服务器可与 Azure Database for PostgreSQL 中的目标服务器通信。

有关网络设置的信息,请参阅迁移服务的网络方案

启用扩展

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

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

有关详细信息,请参阅 扩展

检查服务器参数

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

  • 将源 PostgreSQL 数据库中的服务器参数值与 Azure Database for PostgreSQL 实例进行匹配。 在 Azure 门户中,转到“服务器参数”并手动更新值。

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

检查用户和角色

迁移到 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,而不会有与超级用户限制相关的问题。

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

务必在启动迁移之前禁用目标环境中的高可用性(可靠性)和只读副本。 只有在迁移完成后才能启用这些功能。

执行迁移

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

本文介绍如何使用 Azure 门户将 PostgreSQL 数据库从 Amazon Aurora PostgreSQL 服务器迁移到 Azure Database for PostgreSQL。 你可以使用 Azure 门户执行各种任务,包括数据库迁移。 可以按照本教程中所述的步骤将数据库无缝转移到 Azure,并利用其强大功能和可伸缩性。

配置迁移任务

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

使用 Azure 门户

  1. 选择您的“Azure Database for PostgreSQL”灵活服务器。

  2. 在资源菜单中,选择 “迁移”。

    “迁移”页的屏幕截图。

  3. 选择 “创建 ”以浏览基于向导的一系列选项卡,以便从本地或 Azure VM 迁移到灵活服务器。

    备注

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

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

    在“迁移”页中选择“创建”后显示的“设置”选项卡的屏幕截图。

设置

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

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

  • 源服务器类型 - 根据 PostgreSQL 源,可以选择 Azure 虚拟机本地服务器

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

    • 验证 - 检查服务器和数据库就绪情况,以便迁移到目标。
    • 验证和迁移 - 在触发迁移之前执行验证。 如果没有验证失败,则会启动迁移。

在运行迁移之前,选择 “验证 ”或“ 验证并迁移 ”选项始终是执行预迁移验证的好做法。

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

  • “迁移模式”允许选择迁移的模式。 脱机 是默认选项。 在这种情况下,我们将将其更改为 “联机”。

选择 “下一步:运行时服务器”。

提供必要详细信息后“设置”选项卡的屏幕截图。

运行时服务器

迁移运行时服务器是 Azure Database for PostgreSQL 中的迁移服务中的专用功能,旨在充当迁移过程中的中介服务器。 它是一个单独的 Azure Database for PostgreSQL 灵活服务器实例,不是目标服务器,但用于促进从只能通过专用网络访问的源环境迁移数据库。

运行时服务器选项卡的屏幕截图。

有关运行时服务器的详细信息,请访问 迁移运行时服务器

源服务器

“源服务器”选项卡会提示你提供与“设置”选项卡中选择的源(数据库源)相关的详细信息。

  • 服务器名称 - 提供源 PostgreSQL 服务器的主机或 IP 地址的名称。
  • 端口 - 源服务器的端口号。
  • 管理员登录 名 - 源 PostgreSQL 服务器的管理员用户的名称。
  • 密码 - 提供用于连接到源 PostgreSQL 服务器的管理员登录名的密码。
  • SSL 模式 - 支持的值为 preferredrequired。 源 PostgreSQL 服务器上的 OFFSSL 时,请使用 prefer。 如果源服务器上的 SSL 为 ,则使用 < / 0>。 可以在源服务器的 postgresql.conf 文件中确定 SSL 值。
  • 测试连接 - 执行目标与源之间的连接测试。 连接成功后,可以转到下一个选项卡。这些测试旨在识别目标服务器和源服务器之间可能存在的任何连接问题,包括使用提供的凭据验证身份验证。 建立测试连接需要几秒钟的时间。

成功测试连接后,选择“ 下一步:目标服务器”。

“源服务器迁移”选项卡的屏幕截图。

目标服务器

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

  • 管理员登录 名 - 目标 PostgreSQL 服务器的管理员用户的名称。
  • 密码 - 提供用于连接到目标 PostgreSQL 服务器的管理员登录名的密码。
  • 自定义 FQDN 或 IP 地址:自定义 FQDN 或 IP 地址字段是可选的,可以在目标位于自定义 DNS 服务器后面或具有自定义 DNS 命名空间时使用,使其只能通过特定的 FQDN 或 IP 地址进行访问。 例如,可能包含像 production-flexible-server.example.com198.1.0.2 或 PostgreSQL FQDN(如 production-flexible-server.postgres.database.chinacloudapi.cn)这样的条目,如果自定义 DNS 服务器包含 DNS 区域postgres.database.chinacloudapi.cn,或者将该区域的查询转发给168.63.129.16,其中 FQDN 在 Azure 公共或专用 DNS 区域中解析。
  • 测试连接 - 在源和目标之间执行连接测试。 连接成功后,可以转到下一个选项卡。这些测试旨在识别源服务器和目标服务器之间可能存在的任何连接问题,包括使用提供的凭据验证身份验证。 建立测试连接需要几秒钟的时间。

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

“目标服务器迁移”选项卡的屏幕截图。

要验证或迁移的数据库

在“ 要验证或迁移的数据库 ”选项卡下,可以选择要从源 PostgreSQL 服务器迁移的用户数据库列表。

选择数据库后,选择“ 下一步:摘要”。

用于验证或迁移的数据库选项卡的屏幕截图。

总结

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

“摘要迁移”选项卡的屏幕截图。

取消验证或迁移

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

取消验证会停止任何进一步的验证活动,验证将变为 “已取消” 状态。

取消迁移会停止目标服务器上的进一步迁移活动,并移动到 “已取消” 状态。 此操作不会删除或回滚目标服务器上的任何更改。 请确保删除取消迁移所涉及的目标服务器上的数据库。

监视迁移

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

显示器迁移页面的屏幕截图。

显示迁移的网格具有以下列: 名称状态迁移模式迁移类型源服务器源服务器类型数据库持续时间开始时间。 这些条目按开始 时间 按降序排序,顶部是最新的条目。 可以使用工具栏中的 “刷新 ”按钮刷新验证或迁移运行的状态。

迁移详细信息

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

请记住,在前面的步骤中,创建此迁移时,会将迁移选项配置为 “验证并迁移”。 在此方案中,首先在迁移开始之前执行验证。 完成执行先决条件步骤子状态后,工作流将进入正在进行的验证子状态。

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

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

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

  • 实例的验证详细信息
    • 包含与连接检查、源版本(即 PostgreSQL 版本 >= 9.5)和服务器参数检查相关的验证,这些扩展是否在 Azure Database for PostgreSQL 灵活服务器的服务器参数中启用。
  • 数据库的验证和迁移详细信息
    • 它包含验证与 Azure Database for PostgreSQL 灵活服务器中的扩展和排序规则支持相关的单个数据库。

可以在“迁移详细信息”页下看到 “验证状态 ”和 “迁移状态 ”。

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

一些可能的迁移状态:

迁移状态

状态 说明
正在进行 正在设置迁移基础结构,或者正在进行实际数据迁移。
已取消 迁移已被取消或删除。
已失败 迁移失败。
验证失败 验证失败。
成功 迁移成功并已完成。
等待用户作 等待用户操作以执行直接转换。

迁移详细信息

Substatus 说明
执行先决条件步骤 正在设置基础结构以进行数据迁移。
正在进行验证 正在进行验证。
删除目标上的数据库 删除目标服务器上的现有数据库。
迁移数据 数据迁移正在进行中。
完成迁移 迁移处于完成的最后阶段。
已完成 迁移已完成。
已失败 迁移失败。

验证子统计信息

Substatus 说明
已失败 验证失败。
成功 验证成功。
警告 验证处于警告状态。

启动直接转换

可以使用 Azure 门户或 Azure CLI 启动直接转换。

对于 “验证和迁移 ”选项,完成联机迁移需要用户完成一个附加步骤,即触发直接转换作。 在基本数据复制或克隆完成后,迁移将移动到 Waiting for user action 状态和 Waiting for cutover trigger 子状态。 在此状态中,用户可以通过选择迁移来触发门户的直接转换。

在启动切换之前,请务必确保:

  • 已停止写入源 - latency 值为 0 或接近 0。 可以从迁移详细信息屏幕中获取 latency 信息,如下所示:
  • latency 值减小为 0 或接近 0
  • latency 值表示目标上次与源同步的时间。 此时,可以停止写入源并启动直接转换。 如果源中存在大量流量,建议先停止写入,以便 latency 可以接近 0,然后启动直接转换。

直接转换作将所有挂起的更改从源服务器应用到目标服务器,并完成迁移。 如果触发直接转换(即使非零 latency),复制将停止到该时间点。 直接转换点之前的所有源数据都将应用至目标。 如果在直接转换点遇到 15 分钟的延迟,则过去 15 分钟内对数据所做的所有更改将应用于目标。

所需时间取决于过去 15 分钟内发生的更改积压工作。 因此,建议在触发直接转换之前延迟为零或接近零。

  • 当子状态或直接转换(联机迁移中)成功完成时Migrating data,迁移将移动到Succeeded状态。 如果子状态出现问题 Migrating data ,迁移将进入 Failed 状态。

完成后检查迁移过程

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

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

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

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

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

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

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

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

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