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