暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Azure 的新 Oracle 到 Postgres 迁移指南

原创 CiciLee 2022-07-12
275

我非常高兴为正在将 Oracle 工作负载迁移到我们的 Azure Database for PostgreSQL 托管数据库服务的用户推出新的(详细的)迁移指南。

异构数据库迁移,例如从 Oracle 迁移到 PostgreSQL,是困难的、多步骤的项目,尤其是对于复杂的应用程序。现在,为什么现在有这么多团队将他们的 Oracle 工作负载迁移到 Postgres? Stratoscale 的这篇文章解释了为什么对这些迁移的需求越来越大,并且是我最喜欢的文章之一。我强烈建议您通读一遍,以了解我们行业当前对该主题的立场。总而言之,团队从 Oracle 迁移到 Postgres 的一些主要原因包括:节省成本;决定过渡到开源文化;以及通过现代化工作负载和迁移到公共云来提高效率的愿望。

如果您要对整个工作负载(而不仅仅是数据库层)进行现代化改造,那么您可能希望迁移所有依赖项——前端应用程序、中间件组件等——以便获得迁移到云。根据我们的经验,这些艰巨的迁移挑战只能通过人员(特别是内部迁移专家)以及迁移前、迁移和迁移后待办事项/清单等流程和技术的组合来解决,包括自动化迁移的工具。

借助新的 Oracle 到 Azure Database for PostgreSQL 迁移指南,我们深入探讨了这个问题空间,为您提供管理数据库迁移所需的最佳实践。您还可以 360 度全方位了解从 Oracle 到 Postgres 的迁移过程中的人员、流程和工具方面。

图片.png

在这个由四部分组成的博客系列中,我们将深入探讨 Oracle 到 PostgreSQL 迁移的以下方面:

1.流程——Oracle 到 PostgreSQL 迁移的旅程图,以及它如何与这个新的迁移指南联系起来
2.存储对象——迁移数据库对象,例如表、约束、索引等。
3.代码对象——迁移数据库代码对象(存储过程、函数、触发器等)和
4.Feature Emulations – 在 PostgreSQL 中模拟各种 Oracle 功能

在深入了解迁移指南的内容并了解它如何为您提供帮助之前,让我们看一下典型的 Oracle 到 PostgreSQL 迁移中发生的情况。此外,请注意,旅程图本身适用于迁移到 Azure Database for PostgreSQL(单服务器、灵活服务器和超大规模 (Citus))提供的所有部署选项。虽然本迁移指南侧重于从 Oracle 迁移到我们在 Azure 上的托管 Postgres 服务(也称为 Azure Database for PostgreSQL),但您可能会发现本迁移指南很有用,即使您是从 Oracle 迁移到自我管理的 Postgres 部署。 (我们想要在开源中生存和呼吸)。
图片.png
图 1:描述从 Oracle 到 PostgreSQL 迁移的端到端旅程中的 8 个步骤。

Oracle 到 Postgres 迁移之旅的前 2 个步骤:评估和发现

进行这些迁移的重要第一步是了解您拥有哪些现有工作负载并评估您是否需要进行迁移。根据我们的经验,那些选择从 Oracle 迁移到 Postgres 的人这样做的原因有很多,如上所述。

在评估了要迁移的原因之后,下一步就是发现要迁移的工作负载。您可以通过工具和了解整个堆栈的人员(包括您的应用程序和数据库)来发现工作负载。鉴于迁移是针对整个堆栈完成的,了解产品组合中应用程序和数据库之间的依赖关系也很重要。发现所有可能的工作负载将帮助您:

  • 了解迁移范围
  • 评估迁移策略
  • 评估参与策略
  • 识别改进机会

此练习还将清楚地帮助您了解某些工作负载是否因各种原因需要保留在 Oracle 中。如果是这种情况,好消息是您仍然可以将 Oracle 工作负载迁移到 Azure 并在 Azure 上运行 Oracle 应用程序。

第 3 步是关于评估工作负载和规划迁移的全部内容

一旦您确定了哪些工作负载可以迁移到 PostgreSQL,并且对依赖关系有了很好的了解,接下来的合乎逻辑的步骤就是评估从 Oracle 迁移到 Postgres 的总体成本/工作量。

使用数据库迁移的成本模型对您的工作负载进行整体分析,将显示每次迁移的难易程度。您可能想知道这种成本模型将来自哪里?我承认,在某些情况下生成它并不容易,但好消息是指南中有专门的章节“迁移努力估算”。

您创建的成本模型将帮助您决定开始迁移哪些工作负载,或者至少决定首先迁移哪些工作负载。此时,您在之前的评估步骤中收集的所有详细信息将帮助您评估:

  • Fit——如果你的工作负载真的可以在 Postgres 中运行
  • 自动化——用于端到端数据库迁移的工具
  • 执行 - 选择您是想自己进行迁移,还是与我们的一些出色的合作伙伴合作,他们日复一日地进行这些 Oracle 到 Postgres 的迁移

总体而言,此规划过程使您走上了成功迁移到云中 PostgreSQL 的道路。它使您的团队能够在整个迁移过程中保持高效,并在完成后轻松操作。

第 4 步开始转换过程并在 Postgres 中创建目标环境

虽然您的开发人员、数据库管理员和 PM 可能会参与初始评估和规划阶段,但转换过程是技术团队合作全面展开的地方。对于从 Oracle 到 Azure Database for PostgreSQL 的异构数据库迁移,您需要:

  • 转换架构和对象:将您的源数据库架构和数据库代码对象(例如视图、存储过程、函数、索引等)转换为与 Postgres 兼容的格式。
  • 转换 SQL:如果没有使用 ORM 库(如 Hibernate、Doctrine 等),则需要扫描应用程序源代码以查找嵌入式 SQL 语句,并将其转换为与 Postgres 兼容的格式。
  • 了解异常:了解数据库源和应用程序代码中的哪些对象无法解析和转换。
  • 跟踪所有更改:集中跟踪所有转换、模拟或替换,以便在当前和将来从 Oracle 迁移到 PostgreSQL 的所有工作负载中重复使用它们。

转换过程完成后,第 5 步开始:验证和测试。您需要确保应用程序或数据库中的转换对象经过全面测试,以确保新 Postgres 环境中的功能正确性。您还需要确保新的 Postgres 环境端到端满足工作负载的性能和 SLA 要求。

第 6 步是迁移数据,在第 7 步中验证完整的工作负载堆栈

当您在 Oracle 到 Postgres 迁移中达到此阶段时,您将拥有一个可以迁移到的经过转换和测试的 Postgres 环境。您的技术团队了解当前使用的数据库的不同方面,为数据迁移做准备。您的团队将努力了解其他要求,例如停机时间,并将计划特殊考虑因素,例如双向复制的需求,并确定迁移数据的工具/服务。

通常,要迁移数据,您将使用 Oracle 中的逻辑复制功能将初始数据和正在进行的更改移动到 Postgres。逻辑复制是执行异构迁移的唯一方法之一。你还可以通过在给定时间点获取新 Postgres 数据库的实例(从 Azure Database for PostgreSQL 时间点快照还原)来验证数据并测试完整堆栈。为 Postgres 目标数据库拍摄此时间点快照后,您可以在恢复的快照上运行应用程序实例,以检查性能问题和数据有效性。此测试过程可确保从功能正确性到性能要求基线的所有内容都准备就绪,并且可以安排切换。

第 8 步是切换工作负载以使用 Postgres

在切换日,对于单向复制方案,来自应用程序的写入将停止。停止写入是为了让 Postgres 数据库完全赶上,直到从 Oracle 到 Postgres 的整体逻辑复制延迟为零。一旦完全赶上并验证了目标,您的所有迁移作业都会停止。

对于与 ORM 层交互的应用程序,Oracle 数据库连接字符串将更改为指向新的 Postgres 数据库,并恢复写入以完成切换。对于重新架构的应用程序,应用程序的新实例现在占用指向新 Postgres 数据库的生产流量。在此步骤中需要遵循云中的所有代码部署最佳实践。回滚基础设施也应该到位,并附有关于回滚步骤和标准的明确说明。在切换完成之前,您的团队应该训练有素并准备好在新的基础架构上运行。

正如你所看到的,这个过程非常复杂,需要适当的计划来利用人 + 过程 + 工具的组合来取得成功。

尽管为进行这些艰难的迁移付出了努力,但我想再次强调,将 Oracle 工作负载迁移到云中的 Postgres 有很多好处。鉴于这些数据库迁移的重要性以及我们帮助你们中的许多人驾驭这一领域的经验,我们希望回馈社区,因此 Oracle 到 Azure Database for PostgreSQL 迁移指南背后的想法诞生了。

欢迎使用新的 Oracle 到 Azure Database for PostgreSQL 迁移指南

根据我们与已经完成 Oracle 到 Postgres 迁移(特别是迁移到我们的 Azure Database for PostgreSQL 托管服务)的合作的经验,人们将整个迁移项目的 60% 以上用于转换(步骤 4)和迁移(步骤 6) 上述旅程地图中描述的阶段。

您可能已经知道,Postgres 社区中已经有一些出色的开源工具,例如 Ora2Pg。这些工具有助于大规模规划、转换和执行这些迁移。但是,某些 Oracle 功能仍需要手动干预以确保转换按预期完成。为了帮助您应对这一挑战,我们根据 Azure 团队的经验创建了此 Oracle 到 Postgres 指南,帮助团队将 Oracle 工作负载迁移到 Azure Database for PostgreSQL。

我们新的迁移指南中提供的详细信息完全适用于迁移到自我管理的 Postgres 以及我们用于 Azure Database for PostgreSQL 的单服务器/灵活服务器部署选项。本指南中讨论的部分最佳实践也适用于将 Oracle 迁移到我们的超大规模 (Citus) 部署选项。如果您想深入了解超大规模 (Citus) 作为 Oracle 工作负载的潜在目标平台的具体细节,请随时与我们联系以讨论具体细节。

我们创建此 Oracle 到 Postgres 迁移指南的目标是为您提供:

  • 首选的权威资源:将所有想法、陷阱和最佳实践记录在一个地方。
  • 最佳实践:了解设置基础架构以实现大规模迁移的最佳实践。
  • 逐个特性的指导:对于 Oracle 中的每个特性,提供它们在 Oracle 中使用的最佳实践示例(带有代码片段)以及关于该特性如何在 PostgreSQL 中工作的指导。
  • Postgres 版本比较:展示 PostgreSQL 是如何发展的,并展示 PostgreSQL 11 与 12 与 13 之间的比较,以帮助您从迁移的角度做出正确的决策。
  • 对 Ora2pg 的期望:通过 Ora2pg 自动化功能深入了解每个 Oracle 特性的一般迁移复杂性,这样您就知道在使用 Ora2pg 计划迁移时会发生什么。

给大家一个合理的警告: 所有这些工作产生了一个 300 多页的指南,引导您了解 Oracle 到 PostgreSQL 转换和迁移的多个方面。

我知道,这听起来很糟糕。 然而,好消息是我们对 Oracle 到 Postgres 迁移指南的结构进行了很多思考,以使其易于查找和导航。 您无需通读所有页面即可从指南中获取价值。 根据您在迁移过程中所处的位置,您可以轻松导航到指南中的特定章节,获取所需信息,然后继续下一步。

以下是 Oracle 到 Postgres 迁移指南不同部分的一些屏幕截图,可让您直观地了解内容 -
图片.png
图 2:迁移指南汇总表
图片.png
图 3:使用内容并返回汇总表进行下一次查找。

您准备好从 Oracle 迁移到 Postgres 了吗?

现在您已经对整个旅程有了很好的了解,请继续阅读我们的 Oracle 到 Postgres 迁移指南。 如果您想与我们讨论迁移到 PostgreSQL 的一般性问题,或者对我们的 PostgreSQL 托管服务有疑问,您可以随时通过 Ask AzureDB for PostgreSQL 的电子邮件联系我们的产品团队。 我也喜欢我们 Twitter 句柄 (@AzureDBPostgres) 上的所有更新,并建议关注我们以获取更多 Postgres 新闻和更新。 我们很想听到您的声音。 快乐学习。

原文标题:New Oracle to Postgres Migration Guide for Azure
原文作者:Arun Kumar Thiagarajan
原文地址:https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/new-oracle-to-postgres-migration-guide-for-azure/ba-p/2055303

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

目录
  • Oracle 到 Postgres 迁移之旅的前 2 个步骤:评估和发现
  • 第 3 步是关于评估工作负载和规划迁移的全部内容
  • 第 4 步开始转换过程并在 Postgres 中创建目标环境
  • 第 6 步是迁移数据,在第 7 步中验证完整的工作负载堆栈
  • 第 8 步是切换工作负载以使用 Postgres
  • 欢迎使用新的 Oracle 到 Azure Database for PostgreSQL 迁移指南
  • 您准备好从 Oracle 迁移到 Postgres 了吗?