金融实战演练:从Oracle迁移到PG的技术实现

余小娜 2021-12-04 10:13:00

本文根据余小娜老师在〖deeplus直播:金融业数据库转型与国产化改造〗线上分享演讲内容整理而成。(文末有回放的方式,不要错过)


今年国庆前我在dbaplus社群给小伙伴们演示了Oracle迁移到PostgreSQL的技术实现。 如果你想重温学到的知识,可以阅读这篇文章。

 

图片

 

一、开源+云

 

开源和云现在非常流行。

 

通过摒弃商业化且通常昂贵的数据库技术,我们可以显著降低整体IT支出。数据库软件许可证通常是总体IT成本中的最大份额之一。想象一下,如果能够主要依靠免许可和开源数据库技术,例如PostgreSQL或者MySQL,这既会减少整体IT支出,也会为其他更有影响力的IT计划腾出预算,这些计划可以帮助我们整个组织受益。

 

通过围绕云原生技术对数据库进行现代化改造,例如,使用基于PostgreSQL或MySQL的 Google Cloud SQL, Amazon Aurora, 或者Microsoft Azure DB, 我们可以获得许多优势,包括提高高可用,灾难恢复,安全性,可扩展性和性能。这些功能优势使我们能够为我们的应用程序选择一种能够轻松适应不断变化的工作负载和需求的高级数据库技术。

 

图片

 

二、数据库转型

 

图片

 

让我们一起看一下DB-Engines Ranking这个网站上2021年10月份的数据库排名,排在第一名的商业数据库Oracle,接下来是开源数据库MySQL,然后是商业数据库Microsoft SQL Server,  接下来的很显眼的橙色曲线是受欢迎程度不断增加的开源数据库PostgreSQL.

 

图片

 

一部分的PostgreSQL用户选择本地部署数据库,大部分的PostgreSQL用户选择云数据库来支持其应用程序和集群。

 

图片

 

图片

 

三、Oracle迁移到PostgreSQL

 

简短的介绍之后,接下来是Oracle迁移到PostgreSQL的演示。让我们了解一下主要步骤,这些步骤是数据库转型项目的核心。它们是评估,模式转换和数据迁移。在对数据库进行转型时,还有其他步骤会起作用,但这三个步骤通常是主要步骤。

 

图片

 

四、使用SCT

 

首先,让我们使用AWS Schema Conversion Tool来演示第一个步骤和第二个步骤。另一个迁移工具AWS Database Migration Service可以用来实现第三个步骤,会在本文结尾再提起它。

 

图片

 

使用SCT进行第一个步骤,评估。

 

图片

 

接着进行第二个步骤,模式转换。


 

五、Ora2PG的演示

 

接着到了我们的Ora2PG的演示时间。Ora2PG是一个开源工具。

 

图片

 

使用Ora2PG进行第一个步骤,评估。现在我们先准备一个配置文件Ora2PG_schema.conf。

 

图片

 

接着我们就可以执行Ora2PG来进行评估了。



 

使用Ora2PG进行第二个步骤,模式转换。我使用第一个步骤的配置文件。

 

图片

 

在PostgreSQL数据库中建好table之后,就可以使用Ora2PG进行第三个步骤,数据迁移。配置文件需要稍作改动,把TYPE改成COPY。

 

图片

 

图片

 

六、使用Python的例子

 

最后,到了使用Python的例子。Ora2PG使用的是Perl语言,让我们自己试一下使用Python语言来做数据迁移。

 

图片



 

对于简单的迁移,我们使用Python,Java或者Shell Script都可以轻松实现。我们再来学习一个简单又有用的例子。我们把Oracle的性能数据从Oracle复制到了PostgreSQL, 并用Grafana背后的查询度量分析,最后用图展示出来,从而实现未雨绸缪的监控功能。

 

图片

 

从这个例子中,我们看到我们把一个SQL的执行时间从19毫秒降到了0.06毫秒。这个SQL一个小时最高时消耗了5.7%的系统CPU资源,现在只用了非常少的CPU资源。

 

SQL的性能非常重要,不管你使用Oracle还是PostgreSQL, 你都需要学会优化你的SQL。DBA需要具备一定的研发能力对数据库的各种维度进行自动化度量分析,并用简单易懂的方式展示。

 

图片

 

六、使用数据实时复制

 

当不允许停机时间的时候,我们需要用到数据实时复制,它也属于我们数据库转型的第三个步骤。可以使用的工具非常多,当然你也可以自己来写脚本。

 

图片

 

↓点这里回看本期直播
阅读原文

最新评论
访客 2021年09月03日

有没有1000多张表

访客 2021年08月28日

metrics =》 metrix 错误

访客 2021年08月25日

只看到如何避免,如何减少书写慢 sql

访客 2021年08月25日

没看到如何治理呀

访客 2021年07月23日

果然k8s不是神!

活动预告