从 Oracle 到 Azure Postgres 的全面端到端迁移需要仔细执行几个关键步骤和迁移阶段。 这些里程碑都与完整且成功的迁移密切相关,至关重要。
Discovery
大多数客户已经熟悉其 Oracle 数据库实例的数量和位置(尤其是其相关的许可成本),但为了完整起见,我们将这一阶段作为迁移的一个重要起点。 发现阶段是确定迁移工作的适当范围的理想阶段。 您是否拥有一个 Oracle 数据库服务器场环境,需要迁移数十、数百甚至数千个数据库? 是否考虑采用“迁移工厂”方法进行大规模迁移? 相反,在迁移到迁移列表中的下一个数据库之前,环境是否更适合单一数据库的端到端迁移以及所有连接的客户端的并行现代化? 无论哪种情况,最新且全面的清单都是一项关键的先决条件,而发现阶段可确保您为成功做好充分准备。
评估
评估封装了许多不同类型的基于估计的探索性操作,这些操作由它们的独特特征单独定义。 一些评估旨在根据对象数量(甚至可能探索代码行数)等因素来估算和分类数据库对象迁移所涉及的工作量和资源的复杂性,这需要主题专家的注意。 或者,其他类型的评估会探索基础数据的结构和大小,并提供有关将数据完全迁移到目标环境所需的时间的指导。 另一种评估类型经过专门设计,以确保目标 Azure Postgres 资源得到合理扩缩容,从而满足支撑数据工作负载所需的计算、内存、IOPS 和网络配置要求。 为确保迁移成功,必须纳入的一项重要评估是:全面审查并综合考量所有已连接的客户端,以及所有依赖应用程序所涵盖的范围。 总之,在准备迁移评估时,请确保评估数据库迁移的所有方面,包括:
- 数据库架构/代码转换数量和复杂性
- 数据库大小和规模
- 数据库资源操作要求
- 客户端应用程序代码迁移
评估准确性将与执行和完成后续迁移步骤所涉及的特定基础工具和服务平台紧密关联。 因此,请务必考虑一些因素可能会影响这些评估估计的准确性,并且报告的结果与迁移评估中利用的基础工具直接相关。 在查看评估输出并将其合并到迁移计划中时,必须注意避免内插不同或组合工具的估计输出。
有关详细信息,请参阅我们的 Oracle Azure Postgres 迁移 Playbook
数据库架构迁移
结构化数据定义是事务数据库引擎的标志之一,也是设计良好的数据平台的基本基础。 确保唯一的 Oracle 数据结构和数据类型定义将正确映射到 Azure Postgres 中的各自表,这是迁移中总体成功的关键要求。 尽管所有事务数据库共享许多相似之处,但数据表和列数据类型差异确实存在,但必须小心,以确保数据不会因数据定义不匹配而意外丢失、截断或混乱。 数值数据类型、日期/时间数据类型和基于文本的数据类型只是在为迁移开发相应的数据映射时必须仔细检查的区域的一些示例。
有关 Oracle 和 Postgres 数据类型差异的其他信息和示例,请参阅我们的 Oracle Azure Postgres 迁移 Playbook
数据库代码迁移
数据库代码迁移是指转换为 Oracle 编写的数据库代码以与 Postgres 数据库引擎兼容的过程,同时维护原始功能和现有性能特征。 此过程需要将 Oracle PL/SQL 查询、存储过程、函数、触发器和其他数据库对象转换为符合 Postgres PL/pgSQL。 幸运的是,Oracle 的 PL/SQL 和 Postgres 的 PL/pgSQL 过程语言方言有许多相似之处,这通常是许多组织选择 Postgres 作为最适合 Oracle 数据库迁移时识别的初始因素。 但是,必须考虑两种数据库语言之间的一些独特差异和区别。 关注领域包括:特定于数据库的关键字和语法、异常处理、内置函数、数据类型和顺序递增。
在许多情况下,Postgres 扩展生态系统可能是一个强大的盟友,有助于简化代码迁移过程。 例如,扩展“Oracle Functions for PostgreSQL”(orafce)提供了一组内置的 Oracle 兼容性函数和包,可减少重写依赖和引用这些 Oracle 函数的代码库部分的需求。 在将 Oracle 代码迁移到 PostgreSQL 期间使用此基于兼容性的方法,可以通过维护源数据库定义的原始逻辑和功能,确保结果的一致性,并提高开发人员工作效率,从而显著降低迁移过程的复杂性、时间和成本。 所有这些优势都加起来,实现了简化且更高效的代码迁移到 PostgreSQL。
有关 Oracle 与 Postgres 内置函数和逻辑运算符之间的差异的其他信息和示例,请参阅我们的 Oracle Azure Postgres 迁移 Playbook
数据迁移
在当今的数据驱动环境中,数据可以说是你最有价值的资产。 数据资源越来越多地影响知情的业务运营和战略决策的各个方面。 因此,数据迁移管道高效快捷地运行、完全一致且可验证,并最终成功完成,这一点尤其重要。
应仔细考虑数据迁移策略,以确定“脱机”或“实时”方法是否适用于你的环境。 每个数据迁移策略都有自己的优势和注意事项,“脱机”和“实时”操作之间的选择取决于环境的特定要求和约束。 例如,与“实时”迁移相比,“脱机”迁移可能更为简单且不太复杂,但是,“脱机”迁移涉及将数据完全迁移到目标数据库所需的时间内停机。 “实时”迁移提供最少的停机时间,但它们涉及更复杂的基础结构,以监督初始回填数据加载以及自数据迁移开始以来可能发生的更改的后续数据同步。 仔细规划、彻底评估业务需求,并考虑团队的特定关键因素,确保能够完全符合数据迁移需求做出明智的决策。
应用程序代码迁移
虽然外部应用程序在技术上可能被视为数据库团队迁移职责的域之外,但更新和现代化与客户端应用程序的数据库连接是数据库迁移旅程总体成功的一个基本且密切相关的阶段。 与迁移的其他阶段一样,修正客户端应用程序平台兼容性所涉及的相关工作和复杂性取决于环境的独特情况。 客户端应用程序是由第三方开发的吗? 如果是这样,请务必确保其软件产品经过认证以支持 Postgres 数据库平台。 内部应用程序是否使用对象关系映射技术,例如 Hibernate 或 Entity Framework? 在某些情况下,对配置或文件做一点小改动可能就是所需的全部改动。 相反,如果代码中嵌入了大量数据库查询和语句,则可能需要分配更多时间来适当查看、修改和验证代码更改。
或者,有合作伙伴解决方案提供商提供能够实时转换旧客户端数据库操作的新方法。 这些代理服务通过数据库层提供抽象,从而有效地将应用程序与任何特定于数据库的语言依赖项分离。
在许多情况下,你的决定可能会合并多个策略和混合方法的组合,这些策略和混合方法共同用于各自的优势和组合功能。 部署实时数据库转换层可以使团队能够快速重新部署客户端应用程序,同时为软件工程师和开发人员提供适当的时间和资源规划,以重构数据库特定的依赖项以支持 Postgres 本机操作。
重要
这些选择各自都伴随着特定的注意事项和优势,因此,你的团队必须认真评估这些方法中的每一种,以确定理想的战略前进路径。
迁移验证
从 Oracle 迁移到 PostgreSQL 时,确保数据完整性和逻辑一致性都至关重要。 迁移验证在此过程中起着关键作用,因为它涉及验证从源 Oracle 数据库传输的数据是否准确且在目标 PostgreSQL 系统中完成。 此步骤不仅对维护数据的可信度至关重要,而且对于确认迁移过程未引入任何错误或差异至关重要。 验证检查可以包括比较表计数、验证数据类型和结构、比较行级列值,并确保复杂的查询在两个数据库中产生一致的结果。 此外,在处理两个数据库系统如何管理数据方面的差异时,必须特别注意,例如日期和时间格式的变化、字符编码和 null 值的处理。
这通常涉及设置自动化验证脚本,以比较两个数据库中的数据集并突出显示任何异常。 可以利用专为数据比较设计的工具和框架来简化此过程。 迁移后验证应该是一个迭代过程,在迁移的各个阶段进行多个检查,以尽早捕获问题,并最大程度地降低数据损坏的风险。 通过确定数据验证的优先级,组织可以自信地从 Oracle 过渡到 PostgreSQL,知道其数据仍然可靠且可操作。
性能调优
性能通常被视为确定平台感知和可用性的最有形和最重要的特征之一。 确保迁移既准确又高性能,对于实现成功至关重要,并且不能被忽视。 更具体地说,查询性能通常被视为最佳数据库配置的最关键指标,通常由用户用作试金石测试,以确定环境的运行状况。
幸运的是,Azure 平台原生提供了所需的工具和功能,能够从多个指标维度监控性能表现,包括扩展性、效率,以及也许最重要的速度。 这些智能性能功能与 Postgres 监控资源紧密配合,可简化您的调优过程,并且在许多情况下还能自动执行这些步骤,以根据需要自动适配和调整。 以下Azure工具可确保数据库系统在其最佳级别运行。
查询存储
Azure Postgres 的查询存储充当监视功能的基础。 查询存储跟踪 Postgres 数据库中的统计信息和操作指标,包括查询、关联的说明计划、资源利用率和工作负荷计时。 这些数据点可以发现长时间运行的查询、消耗资源最多的查询、最常运行的查询、过多的表膨胀以及数据库的更多操作方面。 此信息可帮助你通过快速识别需要注意的任何操作或区域来减少故障排除时间。 查询存储 通过识别以下内容,提供有关整体工作负载性能的全面视图:
- 长时间运行的查询及其随时间的变化情况。
- 影响这些查询的等待类型。
- 有关按调用次数(执行计数)、数据使用、IOPS 和临时文件使用情况的关键数据库查询的详细信息(这些可能是潜在的性能优化调优候选项)。
- 向下钻取查询的详细信息,以查看资源利用率的查询 ID 和历史记录。
- 深入洞察数据库整体资源消耗。
索引优化
索引优化是Azure Database for PostgreSQL灵活服务器的一项功能,可以通过分析跟踪的查询并提供索引建议来自动提高工作负荷的性能。 它原生内置于 Azure Database for PostgreSQL 灵活服务器中,并以 查询存储 功能为基础。 索引优化可分析查询存储跟踪的工作负荷,并生成索引建议,以提高已分析工作负荷的性能,或者删除重复索引或未使用的索引。 这是通过三种独特的方式实现的:
- 确定哪些索引有利于创建,因为它们可以显著改善在索引优化会话期间分析的查询。
- 确定确切重复项的索引,并可以消除这些索引,以减少其存在和维护对系统整体性能的影响。
- 识别在可配置时间段内未使用的索引,这些索引可能是可考虑删除的候选对象。
智能优化
智能优化是一个持续监视和分析过程,不仅了解工作负荷的特征,而且还跟踪当前负载和资源使用情况,例如 CPU 或 IOPS。 它不会干扰应用程序工作负载的正常操作。 此进程通过识别实例上的当前膨胀率、写入性能和检查点,让数据库动态调整工作负载。 借助这些见解,智能优化会部署优化操作,以增强工作负荷的性能并避免潜在的陷阱。 此功能包含两项自动优化功能:
- Autovacuum 调优: 该函数会跟踪膨胀率,并据此调整 Autovacuum 设置。 它会同时考虑当前和预测的资源使用情况,预防工作负载中断。
- 写入调优: 此功能会监控写入操作的数量和模式,并调整影响写入性能的参数。 这些调整可增强系统性能和可靠性,从而主动避免潜在的复杂情况。
小窍门
详细了解如何应用 Intelligent Performance 以最大化 Azure Postgres 平台。
云优化
对您的全新 Azure Postgres 数据库环境进行优化,标志着您的团队一路走到这一关键节点所付出的所有卓越努力与辛勤工作的圆满收官。 云优化可能会成为一项新的职责,尤其是对于从本地部署或传统数据库环境转向云环境的人来说。 Azure 云平台推出了一套全新且增强的高价值先进可扩展性功能,使您的团队能够精准调整资源配置、功能选择和成本效益,以契合组织当前的需求,并在未来很长一段时间内持续满足这些需求。 云优化是一个持续进行、不断完善环境的过程,需要从与 Microsoft Well-Architected Framework 相关的最佳实践视角来审视环境,这些视角包括:成本优化、运营卓越、性能效率、可靠性和安全性。
成本优化 是适当调整资源大小、应用成本管理策略和高效资源利用率的组合。
卓越运营 包括采用用于部署、监视和缩放的自动化,并减少错误,同时提高效率。
性能效率 可确保你选择适当的资源来满足要求,而无需过度预配,同时应用可伸缩性的最佳做法,以便在高峰运行期间高效处理各种负载。
可靠性 指导你设计具有冗余和故障转移机制的高可用性容错系统,以最大程度地减少停机时间,以及实现可靠恢复计划(包括备份和还原过程)的灾难恢复策略。
安全性 强调强标识协议和访问管理做法的重要性,例如最低特权访问、无密码身份验证和基于角色的访问控制。 数据保护和加密可确保敏感数据在静态和传输过程中受到保护。 安全性还包括威胁检测的工具和最佳做法,以及针对安全事件的自动响应。 合规性可确保环境符合行业标准和法规。