Oracle到PostgreSQL的不停机数据库迁移

2024-05-07 13:52

本文主要是介绍Oracle到PostgreSQL的不停机数据库迁移,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1970 年,数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文,该论文为往后的关系型数据库的发展奠定了基础。1979 年,基于关系模型理论的数据库产品 Oracle 2 首次亮相,并在过去的三四十年时间里,横扫全球数据库市场。

时间到了 1989 年,Oracle 进军中国市场,场面几乎也是 Oracle 一家独大,大部分大型企业都被 Oracle 占领。Oracle 功能强大,运行稳定的背后,是其高额的授权费用。尽管如此,由于 Oracle 的黏性实在太强,在没有替代方案的情况下,接下来的相当长一段年月里,企业也都只能乖乖掏钱。

时至今日,情况已经发生了翻天覆地的变化,替代方案层出不穷,PostgreSQL 作为其中的一员,除了兼具多样功能和强大性能之外,还具备非常优秀的可扩展性,可以较好地兼容 Oracle,企业也可以从长期活跃的开源社区中得到丰富的资源和技术支持,最重要的是,PostgreSQL 是开源软件,无需支付高昂的授权费用,这可以为企业省下不小的支出。因此,Oracle 到 PostgreSQL 的迁移成了众多企业的首选。

然而,Oracle 到 PostgreSQL 的迁移并不是说迁就能迁的,有很多不得不解决的问题。

Oracle 迁移到 PostgreSQL 不得不解决的问题

业务的可用性:迁移必须在不影响业务的前提下进行,换句话说,迁移时不能停机,那需要考虑的事情就非常多了:存量和增量数据如何完整迁移?如何处理迁移时的性能波动?如何实现应用程序的平滑切换?等等。

表的初始化:在同步数据之前,需要手动在 PostgreSQL 端创建和源端一致的表结构,然后才能从源端接收数据。当源端有大量表且表结构很复杂的情况下,工作量非常大。

数据结构的映射:两者数据结构不同,怎么确保数据从源端同步过来后的完整性?除非你对两者的数据模型的理解非常极致,且保证绝对不出错,才能达到理想的结果。

源端 DDL 语句的联动:如何保证源端的数据结构发生变化时,同步链路不中断?那就需要实时捕获源端 Oracle 的 DDL 变更,并及时在目标端的 PostgreSQL 中同步执行。

这些问题如果可以顺利解决,迁移工作将会相当丝滑。那么如何解决呢?方法自然是有的。对于上述 4 个问题,NineData 有绝对的发言权,我们先来看看它是如何解决这些问题的:

迁移过程不停机:在不影响源端业务的情况下,进行全量和增量数据的迁移,保证源和目标的一致性,并在迁移完成后实施无缝切换。

结构复制:基于目标端数据源的特性,自动高效地完成表的创建、数据结构的映射等工作。

复制性能:基于动态攒批、并行复制、Stream Load 等技术,复制性能轻松达到 200 MB/S。

DDL 捕获与执行:实时检测源端中的 DDL 操作,并同步在目标端中执行,保证其他业务变更能够稳定地进行。

轻松解决且非常愉快,下面来看看怎么操作。

步骤一:录入源和目标数据源

登录 NineData 控制台,单击数据源管理>数据源,然后在页面中单击创建数据源,选择需要录入的数据源。

根据页面提示进行配置,然后单击创建数据源完成创建。

步骤二:配置同步链路

登录 NineData 控制台,单击数据复制>数据复制,然后单击创建复制。

根据页面提示配置复制任务,由于我们需要不停机迁移,需要在复制类型处勾选增量复制。

配置完成后启动任务,针对您配置的所有迁移对象,NineData 会先对所有的存量数据进行全量迁移,接下来就是实时同步 Oracle 中新增的增量数据,所有新写入的数据都将一条不漏地同步到 PostgreSQL,每当目标端的增量数据追平源端时,任务面板中会显示延迟 0 秒,如下图所示。

步骤三(可选):校验目标端同步数据的完整性

除了同步功能以外,NineData 还提供了同步后源端和目标端同步数据的对比功能,以确保目标端数据的完整性。

登录 NineData 控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

单击数据对比页签,并单击开启数据对比(如果步骤二的任务配置中已勾选开启数据一致性对比,则此处直接展示对比结果)。

提示

开启后,系统将自动对比源端和目标端的同步对象,并给出对比结果。

您可以在一段时间后,单击页面中的重新对比,校验最新增量数据的结果。

步骤四(可选):配置任务异常告警

由于是增量迁移任务,您可能需要系统实时监控任务状态,在任务有异常时即刻通知您。

登录 NineData 控制台,单击数据复制>数据复制,然后单击步骤二中创建的复制任务 ID。

单击右上角的配置告警。

输入策略名称,单击保存配置即可。您可以直接使用内置的默认规则,在任务运行失败,或复制延迟大于等于 10 分钟的时候,发送短信提醒您。您也可以自定义创建规则,根据您的需求来进行通知。

最后

在 NineData 将所有数据迁移到 PostgreSQL 之后(延迟为 0),最后一步是在业务低峰期,将业务流量切换至 PostgreSQL,即可完成整个 Oracle 到 PostgreSQL 的迁移。这个切换过程是非常关键,需要谨慎规划执行。

这篇关于Oracle到PostgreSQL的不停机数据库迁移的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/967534

相关文章

Oracle查询表结构建表语句索引等方式

《Oracle查询表结构建表语句索引等方式》使用USER_TAB_COLUMNS查询表结构可避免系统隐藏字段(如LISTUSER的CLOB与VARCHAR2同名字段),这些字段可能为dbms_lob.... 目录oracle查询表结构建表语句索引1.用“USER_TAB_COLUMNS”查询表结构2.用“a

Oracle数据库定时备份脚本方式(Linux)

《Oracle数据库定时备份脚本方式(Linux)》文章介绍Oracle数据库自动备份方案,包含主机备份传输与备机解压导入流程,强调需提前全量删除原库数据避免报错,并需配置无密传输、定时任务及验证脚本... 目录说明主机脚本备机上自动导库脚本整个自动备份oracle数据库的过程(建议全程用root用户)总结

postgresql使用UUID函数的方法

《postgresql使用UUID函数的方法》本文给大家介绍postgresql使用UUID函数的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录PostgreSQL有两种生成uuid的方法。可以先通过sql查看是否已安装扩展函数,和可以安装的扩展函数

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MySQL 迁移至 Doris 最佳实践方案(最新整理)

《MySQL迁移至Doris最佳实践方案(最新整理)》本文将深入剖析三种经过实践验证的MySQL迁移至Doris的最佳方案,涵盖全量迁移、增量同步、混合迁移以及基于CDC(ChangeData... 目录一、China编程JDBC Catalog 联邦查询方案(适合跨库实时查询)1. 方案概述2. 环境要求3.

PostgreSQL中rank()窗口函数实用指南与示例

《PostgreSQL中rank()窗口函数实用指南与示例》在数据分析和数据库管理中,经常需要对数据进行排名操作,PostgreSQL提供了强大的窗口函数rank(),可以方便地对结果集中的行进行排名... 目录一、rank()函数简介二、基础示例:部门内员工薪资排名示例数据排名查询三、高级应用示例1. 每

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys