教程:使用迁移服务从 Azure Database for PostgreSQL 单一服务器迁移到灵活服务器

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

使用 Azure 门户,你可以将 Azure Database for PostgreSQL 单一服务器的实例迁移到 Azure Database for PostgreSQL 灵活服务器。 在本教程中,我们将使用 Azure 门户将示例数据库从 Azure Database for PostgreSQL 单一服务器迁移到 PostgreSQL 灵活服务器。

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

使用 Azure 门户进行迁移。

先决条件(脱机)

在使用 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 的详细说明,请参阅以下链接:快速入门:创建服务器

网络设置

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

有关网络设置的信息,请访问迁移服务的网络指南

启用扩展

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

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

有关详细信息,请参阅 Azure Database for PostgreSQL 中的扩展

注意

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

检查服务器参数

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

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

  • 保存参数更改,如果需要,重启 Azure Database for PostgreSQL 灵活服务器以应用新配置。

重要

在开始迁移之前,将灵活服务器上的 password_encryption 服务器参数从 SCRAM-SHA-256 更改为 MD5。 要使单一服务器上的现有凭据在灵活服务器上工作,这至关重要。

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

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

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

配置你的 Azure Database for PostgreSQL 灵活服务器

  • 创建目标灵活服务器。 有关引导式步骤,请参阅快速入门使用门户创建 Azure Database for PostgreSQL 灵活服务器

  • 允许列表扩展,其库必须在服务器启动时加载。 在启动迁移之前,扩展必须位于允许列表上。

  • 检查数据库的表之间的数据分布是否存在倾斜,大部分数据是否存在于单个(或少数)表中。 如果发生倾斜,迁移速度可能会比预期要慢。 在这种情况下,可以通过并行迁移大型表来提高迁移速度。

配置迁移任务

该迁移服务在 Microsoft Azure 门户中提供了一种基于向导的简单体验。 下面介绍如何开始:

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

  2. 转到你的 Azure Database for PostgreSQL 灵活服务器目标。

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

    灵活“概述”页的屏幕截图。

  4. 选择“创建”按钮,以开始从单一服务器迁移到灵活服务器。 第一次使用迁移服务时,将会显示一个空网格,并提示你开始第一次迁移。

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

    如果已经创建向灵活服务器目标的迁移,则网格会包含有关已尝试从单一服务器迁移到此目标的相关信息。

  5. 你通过一系列基于向导的选项卡来创建从不同可能的源到此灵活服务器目标的迁移。 默认情况下,“源服务器类型”设置为“Azure Database for PostgreSQL 单一服务器”,这就是我们对于此应用场景有意使用的服务器类型。

或者,也可以从 Azure Database for PostgreSQL 单一服务器启动迁移过程。

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

  2. 选择单一服务器后,可以在“概述”选项卡中看到与迁移相关的横幅。选择“立即迁移”以开始。

    启动从单一服务器迁移选项卡的屏幕截图。

  3. 你转到包含两个选项的页面。 如果已创建灵活服务器,并且要将其用作目标,请选择“选择现有”,然后选择相应的“订阅”、“资源组”和“服务器名称”详细信息。 选择完成后,选择“转到迁移向导”,并按照“设置”部分下的说明操作。

    显示如何选择现有灵活服务器选项的屏幕截图。

  4. 如果选择创建新的灵活服务器,请选择“新建”,然后选择“转到创建向导”。 此操作引导你完成灵活服务器的创建过程并部署灵活服务器。

    选择新的灵活服务器选项的屏幕截图。

部署灵活服务器后,请按照配置迁移任务中的步骤 3 到 5 进行操作。

安装

第一个选项卡是“设置”。 如果错过了,请在启动迁移之前,将所需的扩展列入允许列表,如配置 Azure Database for PostgreSQL 灵活服务器中所述。

属于脱机设置选项卡的详细信息的屏幕截图。

“迁移名称”是每个到此灵活服务器目标的迁移的唯一标识符。 此字段仅接受字母数字字符,不接受除下划线 (_) 和连字符 (-) 之外的任何特殊字符。 名称必须以字母数字字符开头。 对于目标服务器,该名称也必须是唯一的,因为指向同一灵活服务器目标的两个迁移不能使用相同名称。

“源服务器类型”指示源。 在本例中,它是 Azure Database for PostgreSQL 单一服务器

借助迁移选项,可以在触发迁移之前执行验证。 可以选择以下任一选项。

  • 验证 - 检查服务器和数据库就绪情况,以便迁移到目标。
  • 迁移 - 跳过验证并开始迁移。
  • 验证并迁移 - 在触发迁移之前执行验证。 仅当未发生验证失败时,才会触发迁移。

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

对于迁移模式,你可以在联机迁移和脱机迁移之间进行选择,在本例中,必须将其设置为“脱机”

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

运行时服务器

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

“迁移运行时服务器”页面的屏幕截图。

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

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

连接到源

“源”部分会提示你提供与作为数据库源的单一服务器相关的详细信息。

完成“订阅”和“资源组”的选择后,服务器名称下拉列表将显示不同区域中该资源组下的单一服务器。 选择要从中迁移数据库的源。

选择单一服务器源后,“位置”和“PostgreSQL 版本”框会自动填充。 请确保提供管理员角色的凭据,因为迁移服务需要该凭据才能成功迁移数据库。

自定义 FQDN/IP 字段是可选的,可在资源位于自定义 DNS 服务器后面或具有自定义 DNS 命名空间时使用,这使得它只能通过特定的 FQDN 或 IP 地址进行访问。 例如,如果自定义 DNS 服务器包含 DNS 区域 postgres.database.chinacloudapi.cn 或将此区域的查询转发到 168.63.129.16(在 Azure 公共或私有 DNS 区域中解析 FQDN),则这可能包括 singleserver.example.com198.1.0.2 或 PostgreSQL FQDN(如 singleserver.postgres.database.chinacloudapi.cn)之类的条目。

填写所有字段后,选择“连接到源”链接。 这将验证输入的源服务器详细信息是否正确,以及源服务器是否可访问。

源数据库服务器详细信息的屏幕截图。

选择“下一步: 选择迁移目标”按钮继续。

选择迁移目标

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

自定义 FQDN/IP 字段是可选的,可在目标位于自定义 DNS 服务器后面或具有自定义 DNS 命名空间时使用,这使得它只能通过特定的 FQDN 或 IP 地址进行访问。 例如,如果自定义 DNS 服务器包含 DNS 区域 postgres.database.chinacloudapi.cn 或将此区域的查询转发到 168.63.129.16(在 Azure 公共或私有 DNS 区域中解析 FQDN),则这可能包括 flexibleserver.example.com198.1.0.2 或 PostgreSQL FQDN(如 flexibleserver.postgres.database.chinacloudapi.cn)之类的条目。

目标数据库服务器详细信息的屏幕截图。

确保提供的标识是目标服务器中管理员用户的标识。 填写所有所需的信息后,选择“连接到目标”链接。 这将验证输入的目标服务器详细信息是否正确以及目标服务器是否可访问。

选择“下一步: 选择要迁移的数据库”按钮以选择要迁移的数据库。

选择要迁移的数据库

在此选项卡下,有一个列表显示单一服务器中的用户数据库。 可以在一次迁移尝试中选择和迁移最多 8 个数据库。 如果用户数据库超过 8 个,则会在源服务器和目标服务器之间针对下一组数据库重复迁移过程。 覆盖目标服务器上具有相同名称的选定数据库。

要迁移的数据库的屏幕截图。

选择“下一步: 摘要”按钮以查看详细信息。

总结

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

用于查看迁移的详细信息的屏幕截图。

监视迁移门户

开始迁移后,会显示一条通知,指示验证或迁移创建已成功。 系统会将你自动重定向到灵活服务器的“迁移”页面。 这是最近创建的验证或迁移的新条目。

最近创建的迁移详细信息的屏幕截图。

显示迁移的网格包含以下列:“名称”、“状态”、“迁移模式”、“迁移类型”、“源服务器”、“源服务器类型”、“数据库”、“开始时间”和“持续时间”。 条目按开始时间的降序显示,最近的条目位于顶部。

可以使用“刷新”按钮刷新验证或迁移的状态

还可以在网格中选择一个特定迁移的名称来查看关联的详细信息。

创建验证或迁移后,它会进入“InProgress”状态和“PerformingPreRequisiteSteps”子状态。 该工作流需要 2-3 分钟来设置迁移基础结构和网络连接。

我们来看一看如何监视每个迁移选项的迁移。

验证

PerformingPreRequisiteSteps 子状态完成后,验证将进入“正在进行验证”子状态,在此状态下,将对源和目标服务器进行检查以评估迁移就绪状态。

如果所有验证都处于“成功”或“警告”状态,则验证将进入“成功”状态。

验证网格的屏幕截图。

验证网格包含以下信息:

  • “实例的验证详细信息”和“数据库的验证详细信息”部分,表示用于检查迁移就绪情况的验证规则。
  • 验证名称 - 每个特定验证规则的名称。
  • 验证状态 - 表示每个规则的结果,可以是三个值中的任意一个:
    • 成功 - 如果未发现错误。
    • 失败 - 如果存在验证错误。
    • 警告 - 如果存在验证警告。
  • 持续时间 - 验证操作所使用的时间。
  • 开始时间 (UTC) 和结束时间 (UTC) - 验证操作的开始时间和结束时间 (UTC)。

如果验证中出现任何错误,“验证状态”将进入“失败”状态。 选择已失败验证的“验证名称”或“数据库名称”,扇出窗格提供了详细信息以及为避免此错误而应采取的纠正措施。

显示失败状态的验证网格的屏幕截图。

Migrate

“PerformingPreRequisiteSteps”子状态完成后,迁移将转到“Migrating Data”子状态,此时会执行数据库的克隆/复制。 迁移完成时间取决于要迁移的数据库大小和形状。 如果数据大部分均匀分布在所有表中,则迁移速度会很快。 不均衡的表大小需要相对较长的时间。

选择正在迁移的任何数据库时,将显示扇出窗格。 它还包含所有表计数(已复制、已排队、正在复制和错误)以及数据库迁移状态。

包含所有 DB 详细信息的迁移网格的屏幕截图。

“正在迁移数据”状态成功完成后,迁移将会进入“成功”状态。 如果 Migrating Data 状态出现问题,迁移将进入 Failed 状态。

迁移结果的屏幕截图。

迁移进入“成功”状态后,将会完成架构和数据从单一服务器到灵活服务器目标的迁移。 可以刷新页面查看进度。

已完成的迁移的屏幕截图。

验证和迁移

如果使用此选项,将先执行验证,然后再执行迁移。 完成“PerformingPreRequisiteSteps”子状态后,工作流将进入“正在进行验证”子状态。

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

操作完成后,可以看到“验证和迁移”的结果。

显示“验证”选项卡的详细信息页的屏幕截图。

使用门户取消迁移

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

取消验证会停止任何进一步的验证活动,并且验证会进入“已取消”状态。

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

完成后检查迁移

成功迁移后,请确保使用与单一服务器上相同的凭据登录到灵活服务器。 如果从单一服务器迁移后在灵活服务器上遇到身份验证错误,原因可能是灵活服务器的 VM 所使用的密码加密算法 (SCRAM-SHA-256) 与单一服务器 MD5 加密不同。 若要减少此错误,请执行以下步骤:

  1. 灵活服务器上的 password_encryption 服务器参数从 SCRAM-SHA-256 更改为 MD5。
  2. 重新启动从单一服务器到灵活服务器的迁移。
  3. 如果身份验证问题仍然存在,请删除现有的灵活服务器,并预配新的灵活服务器。 重复步骤 1-2 来解决问题。

这应该会解决身份验证错误。

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

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

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

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

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

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

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

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