【内含干货PPT下载】DTCC 2020 | 阿里云赵殿奎:PolarDB的Oracle平滑迁移之路

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Oracle兼容性是业务客户从Oracle生态迁移到PolarDB生态的第一步也是至关重要的一步,PolarDB通过不断沉淀支持大量实际业务的真实Oracle兼容性功能,确保客户业务可以真正做到平滑迁移。同时PolarDB带给Oracle生态客户的不仅仅是上的来的问题,PolarDB在成本、性能、可用性、扩展性等云能力方面也给用户带来更高的业务价值。在DTCC 2020大会分布式数据库实践专场上,阿里巴巴高级数据库专家赵殿奎为大家介绍阿里巴巴电PolarDB的Oracle平滑迁移之路。

摘要:Oracle兼容性是业务客户从Oracle生态迁移到PolarDB生态的第一步也是至关重要的一步,PolarDB通过不断沉淀支持大量实际业务的真实Oracle兼容性功能,确保客户业务可以真正做到平滑迁移。同时PolarDB带给Oracle生态客户的不仅仅是上的来的问题,PolarDB在成本、性能、可用性、扩展性等云能力方面也给用户带来更高的业务价值。在DTCC 2020大会分布式数据库实践专场上,阿里巴巴高级数据库专家赵殿奎为大家介绍阿里巴巴电PolarDB的Oracle平滑迁移之路。

演讲嘉宾简介:赵殿奎,阿里巴巴高级数据库专家,从事OLTP数据库和OLAP数据库产品的研发工作10余年,现为阿里云PolarDB数据库内核北京研发负责人。
HU8B8956.JPG

以下内容根据演讲视频以及PPT整理而成。

本次分享主要围绕以下四个方面:
一、PolarDB架构
二、PolarDB兼容性
三、PolarDB增强
四、PolarDB迁移

一、PolarDB架构

PolarDB架构组件 —— CM

PolarDB架构是基于共享存储的架构,下图是PolarDB整体架构视图,其中CM主要负责的工作包括整个Polar集群的管理,Top管理,高层管理、备份管理及审计管理。CM是一个管控链路的核心组件,这意味着CM组件本身对于PolarDB的整个数据的可用性没有任何影响,PolarDB的可用性完全独立于整个数据链路。由于PolarDB会面向大量的用户来使用,因此对整个架构的设计中需要把可用性放在第一位,因此每一个组件的设计也都要满足PolarDB高可用性要求。

PolarDB架构组件 —— Agent

下图中另一个比较重要的组件是Agent,Agent主要做什么?很多常见数据库会将部分功能都集成到数据库内核里面。但PolarDB是将很多功能放在Agent中,例如审计、数据采集、监控、备份数据发送等等。相当于将一部分辅助性功能独立出来,做成一个核心的组件,同时放在数据管控链路里面。

其余的还有Proxy,是读写路由的组件。PFSD是阿里云的分布式文件系统。

PolarDB既可以运行在裸机上面,就是传统的物理机,还可以跑在国产的芯片,国产的操作系统,以及原生的 k8s上。此外阿里云基于 k8s做了很多的增强,PolarDB同样可以运行。这几种形态上PolarDB都是支持的。
图片 1.png

二、PolarDB兼容性

下图列出了在阿里巴巴很多业务场景中,用户的用例中使用较多的功能上的兼容性,目前PolarDB的研发上也是在重点支持这些功能的兼容性。
2.png

PolarDB兼容性 —— 接口兼容

驱动接口中使用比较多的是OIC,JDBC以及ProC,基本上可以占据99%以上。Java的是JDBC,但是可能很少碰到ProC,尤其在公共云上的用户可能比较少见。但线下的传统的客户中,如金融类的客户会大量的使用ProC进行开发的业务程序。PolarDB基本上都可以兼容OCI里面的接口。ECPG里面包含Oracle的ProC代码的兼容。ECPG兼容最重要的并不是在于对ProC的支持,而在于C的代码的兼容。为什么?因为Oracle里面ProC所支持的各种C语言的标准是无法获取到的。大量的SQL92,SQL2008的标准,以及目前还在不停的更新的标准都在增加对C代码语法的支持。PolarDB投入了很多人力做这件事情。XA C接口与ECPG中的Proc接口是结合起来使用的。目前很多PolarDB线下的客户大量使用了基于XA C、ProC、Oracle Tuxedo结合的方式。下图罗列了XA C接口的一些功能,目前PolarDB基本上都可以支持。其中最难的是tpsuspend,目前已经解决了。
3.png

PolarDB兼容性 —— 语法兼容性

语法的兼容性中包括数据类型、系统函数、伪列、PL/SQL、系统图以及系统包是比较常用的。但用户最常用的是空串,每一个使用Oracle数据库的业务应用都会用到这个特点,但是这个特点往往是很多的数据库产品并没有支持到的,导致这些数据库产品往往可能会在业务的运行的过程中出现很多数据性的问题。到目前为止,Oracle里面的 PL/SQL,PolarDB大概已经接入了80%多。在Oracle整个的迁移的过程中,大量的业务对 PL/SQL的代码几乎是一行都不需要更改。这意味着是PolarDB对于 Oracle PL/SQ的兼容性已经非常精准,可以满足大多数的业务场景。系统函数、视图和系统包,PolarDB大概可以支持30多个,这基本上足够了,下图中还列出来比较常用的伪列。
4.png

PolarDB兼容性 —— 功能兼容性

功能兼容性中分区非常常用。主要的一些分区功能PolarDB都是支持的。对于大规模用户来说,较为常用的是多层次查询,大家可能以为层次查询支持起来比较简单,但后来发现这往往是用户非常关心的特性,因此对性能要求非常高。很多数据库产品层次查询的实践方法基本一致,通过WITH语句的迭代,递归来实现,但这种方法的性能往往比较差。因此PolarDB在层次查询功能的实现上从算子层面做了大量的工作。表函数也是用户使用的特别多的功能,类似于一个pipeline,一个表的输出作为另一个表的输入。用户在DBLINK功能上的使用特别多。公有云产品和线下打通之后,发现反而在安全性的保障上难度难道非常大。线上和线下,公有云和混合云之间能够做到数据相互访问,最大的一个困难就在于安全。资源管理,Oracle里面有一个Resource Manager,PolarDB也在逐步的完善这个功能,PolarDB现在能够做到CPU和内存的隔离,同时可以做到数据库级别、甚至到用户级别的资源的隔离和限制。DBLINK方面,现在可以支持与Oracle DBLINK, 与PG的DBLINK,与阿里云 PolarDB DBLINK,以及公云上的PolarDB和PolarDB之间的DBLINK,可以支持线上的PolarDB与线下的Oracle之间的DBLINK。
5.png

PolarDB兼容性 —— 生态兼容性

生态兼容性 —— AWR

2020年上半年阿里云花了很多人力在PolarDB生态兼容性上。目前公有云的性能监控已经可以做到秒级,为什么还需要做AWR?AWR其实相当于是两次状态之间的快照,用户可以查看中间的Workload是什么样子的。阿里云在走访了很多的客户之后发现用户在进行大量业务迁移的时候,很多的运维同学和DBA同学对AWR需求非常强烈。由于线下用户对业务以及整个的迁移运行过程中稳定性要求非常高,因此他们很少会开细粒度的监控。而且也不允许监控的数据能够对外展示。这时就需要利用AWR将两个时间差之间负载数据拿到,根据整体负载情况判断系统的健康情况。如果客户的生产系统之前使用的是Oracle,那么也会在Oracle上跑AWR上,与PolarDB上的AWR进行对比,分析数据库性能在迁移之前和之后的差异。AWR中可以看到内存、CPU、IO的负载情况,甚至还有IO的吞吐、磁盘占用、IOPS、网络等资源数据。数据收集上来之后进行分析,哪些负载较高,分析负载高的原因。基于负载情况分析SQL状态,是否有慢查询,连接状态中是否有空载。目前大多数数据库性能数据都可以通过AWR展示出来。之后,基于AWR数据,比如慢查询,会给用户提供优化的建议。目前这部分功能还在迭代,通过整个运行的过程中所发生的事件,展示到AWR,分析是否有HA切换,或者出现硬件故障,以及网络延迟。同时在AWR中展示硬件、主机的信息。
6.png

生态兼容 —— DataMax(ADG)

生态兼容DataMax类似于Oracle的ADG。这个功能已经在线下的大量的公共云上都发布完成。目前公有云的主备已经做得很好了,那PolarDB为什么还要做DataMax?而且是类似于Oracle的ADG?事实上PolarDB关注的Oracle的ADG中的Far Sync能力,它可以极大地降低对主库的读写负载。Far Sync可以首先将数据同步到 DataMax。因此可用性可以比原来的主备模式更高。DataMax这个节点变成了一个非常特殊的节点,DataMax节点只有日志没有数据,而且日志只负责转发。DataMax计算非常简单,只需要将日志进行解析,然后转发出去,因此可以做到更高的可用性,DataMax工作非常轻量,因此延迟较低,可以做到更高的RTO,同时又可以提高性能。DataMax可以同时挂很多Replication节点。可以发现,目前PolarDB很多工作一直在围绕几件事情,一个是提高兼容性,第二个是可用性,提高PolarDB整个系统的可用性,使得RPO接近零。
7.png

生态兼容 —— DTS(OGG)

DTS是数据同步工具,DTS支持数据数据全量迁移、数据增量同步、数据订阅SDK以及多种主流异构数据库,如MySQL,SQL Server、云上、云下、自建数据库。目前数据同步也支持双向的数据同步。用户生产系统同步的时候,并不是一次性同步过来的,而是一部分一次,一点一点同步。因此数据同步也是双向的,可以将一部分业务数据写到PolarDB,一部分业务写到Oracle。用户从Oracle数据同步到PolarDB,还有PolarDB的数据同步到Oracle上面,这类用户非常多。他们的数据同步可以通过DTS来完成。
9.png

生态兼容 —— DBS(RMAN)

DBS类似于Oracle RMAN,备份管理工具。DBS支持全量备份,增量备份,差异备份。基于DBS能力可以做到源端重删、本地缓存、存储驱动。DBS具备自己的指纹库,从而提升数据备份的安全性。备份的数据可以存到DBS支持的源端,包括NAS、磁带库,OSS。很多线下大b和大g的客户经常使用磁带库,这是在做大量的线下客户的支持的过程中发现的。
10.png

生态兼容 —— PolarPlus(SQLPlus)

PolarPlus与SQL Plus非常相似。感兴趣的同学可以参考PolarDB的官方文档。
11.png

生态兼容 —— 开发工具(DBNavigator)

开发工具主要是通过DBNavigator做的。目前开发工具用户使用的比较多,尤其是PG生态同学。当然还有很多其它的工具,但是DBNavigator好处在于集成了驱动之后,可以与DBMS_Debug的包连起来,支持 PL/SQL的Debug,使用起来非常方便。
12.png
上面总体上介绍了PolarDB在兼容性方面做的工作,包括接口、语法、功能以及生态方面。尤其在生态兼容方面PolarDB做了支持数据库健康状态监控的AWR工具、DataMax数据节点、DTS数据同步工具、DBS备份管理工具、DBNavigator开发工具等。那么在Oracle的兼容性之上,PolarDB还做了哪些增强?

三、PolarDB增强

1. PolarDB增强 —— 性能优化CSN

性能优化方面PolarDB做了CSN快照,对PG社区关注的比较多的话,会看到在2012年的时候,PG社区就提出要做CSN快照。什么是快照?PolarDB快照获取方式是比较特殊。与MySQL相似,叫做XID快照,既获取当前系统的活跃事务链表,加上XMIN、XMAX,构造成一个快照,判断哪些数据是可见的,哪些是不可见的。PolarDB CSN快照同理,CSN快照是在CSN上加了一个XMINXMAX。CSN快照可以提供更高的性能。在高并发情况下,活跃事务特别多,快照的动作非常慢,因为需要做内存拷贝。内存拷贝的动作有一个锁,这会造成整个业务系统并发的冲突问题。通过测试发现,在没有使用CSN快照之前,大概最多到40万TPMC,再往上增加规格时,获取事务的表的冲突非常严重。通过CSN快照,目前在32c之上,一直到128c,大概基本上可以做到线性。用户在公有云上在业务系统变化越来越大的情况下,可以通过升级用户业务的规格,为他们带来性能上的收益。

那么PG社区自从2012年提出来,到现在还没做出来,技术上难点在什么地方?其实在于CSN的设计非常复杂,它涉及到事务、存储、日志等。但阿里大概花费了一年的时间就做出来了,这是因为可以将CSN快照与差异快照结合起来,所有与生态相关、或影响生态的功能继续保留,那么最大的技术难点在于如何找到CSN快照与差异快照的映射关系。这是阿里做成CSN快照的主要原因。但之后再继续设计的时候还是会遇到很多的问题,如做成插件或者工具的话,插件或者工具的兼容问题如何解决,与生态的兼容性问题如何解决,备份恢复如何处理?
13.png

PolarDB增强 —— DMA高可用

DMA高可用,既基于Raft三节点做的高可用的提升。Raft三节点可以做到RPO等于0,Follower副本只读,支持容器化部署,兼容主备高可用,CM一体化架构,同城三节点达到同城可能性。
14.png

PolarDB增强 —— Ganos

Ganos是一款包含管理,空间几何数据、时空轨迹、专题栅格、遥感影像的时空大数据引擎系统。系统内置了高效的时空索引算法、空间拓扑几何算法、遥感影像处理算法等。广泛应用于空间、时空、遥感大数据存储。Ganos系统在很多的实际场景中被投入使用,如高德地图。

18.png

PolarDB增强 —— Performance Insight

大家在公有云上使用PolarDB的时候会发现性能指标非常完整,大量的性能指标通过图表的形式非常清晰的展示给用户,包括连接Connections、CPU使用率、内存使用率、IOPS负载等数据。目前这些性能数据在线上和线下,公有云和混合云上都是同步的。
19.png

四、PolarDB迁移

PolarDB迁移 —— ADAM

数据库和应用迁移(Advanced Database & Application Migration, 以下简称ADAM)。目前PolarDB的迁移过程中,用户几乎不需要修改代码,迁移的时间越来越短的主要的原因是ADAM。ADAM是阿里云结合阿里巴巴多年内部业务系统数据库和应用异构迁移的经验,自主研发的、迁移Oracle数据库和应用上云的企业级迁云产品和解决方案,能帮助企业最大限度降低Oracle数据库和应用迁移上云的风险、技术难度和实施周期。ADAM可以做到线上,线下的用户直接部署到自己的用户端,通过对用户端的代码进行扫描,采集用户数据,分析用户代码中Oracle的部分哪些是兼容的,哪些是不兼容的,分析如何改进。ADAM还可以自动的对不兼容的代码进行改写,包括SQL翻译、数据库改造、应用改造、PL/SQL改写成JAVA。ADAM在用户迁移到PolarDB的过程中,采集了大量的用户的特征,当然用户已经授权了,分析用户在迁移过程中哪些功能PolarDB不支持。通过近两年的不断的对Oracle功能的兼容性迭代,PolarDB基本已经支持调研的Top 100以内的功能。这使得大多数业务系统迁移到PolarDB越来越快,越来越方便。
20.png

PolarDB迁移周期

下图是用户业务系统从开始准备迁移,到最后迁移完成会经历的过程以及会使用到的PolarDB生态中的工具。最开始使用ADAM接入,在业务系统上运行,获取到兼容性指标、用户数据库中各项性能指标负载情况、评估技术可行性;然后在新的Polar上通过Benchmark做测试;满足用户性能要求之后,通过DTS数据全量和增量迁移,完成双向的数据同步;再通过DMS&Console完成数据库的管理,包括备份、审计等;使用Performance Insight监控用户的在PolarDB上性能指标;随着用户业务量的增加,平滑的支持业务需求。整个过程可以确保客户业务真正做到平滑迁移。
21.png

点击这里下载本场演讲PPT

相关阅读

DTCC 2020 | 阿里云李飞飞:云原生分布式数据库与数据仓库系统点亮数据上云之路
https://developer.aliyun.com/article/781040

【内含干货PPT下载】DTCC 2020 | 阿里云叶正盛:数据库2025
https://developer.aliyun.com/article/780725

【内含干货PPT下载】DTCC 2020 | 阿里云朱洁:NoSQL最新技术发展趋势
https://developer.aliyun.com/article/780746

【内含干货PPT下载】DTCC 2020 | 阿里云王涛:阿里巴巴电商数据库上云实践
https://developer.aliyun.com/article/781001

【内含干货PPT下载】DTCC 2020 | 阿里云张鑫:阿里云云原生异地多活解决方案
https://developer.aliyun.com/article/781031

DTCC 2020 | 阿里云梁高中:DAS之基于Workload的全局自动优化实践
https://developer.aliyun.com/article/781036

【内含干货PPT下载】DTCC 2020 | 阿里云程实:云原生时代的数据库管理
https://developer.aliyun.com/article/780992

【内含干货PPT下载】DTCC 2020 | 阿里云吉剑南:在线分析进入Fast Data时代的关键技术解读
https://developer.aliyun.com/article/780747

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
SQL 关系型数据库 MySQL
在使用阿里云PolarDB MySQL进行深度测评时
在使用阿里云PolarDB MySQL进行深度测评时
|
4月前
|
人工智能 关系型数据库 MySQL
基于阿里云的PolarDB MySQL版实现AI增强数据管理
本文将介绍如何利用阿里云的PolarDB MySQL版结合AI技术,实现数据管理的自动化和智能化。
314 0
|
28天前
|
Cloud Native 关系型数据库 分布式数据库
|
1月前
|
人工智能 Cloud Native 关系型数据库
阿里云关系型数据库连续五年蝉联榜首
全球领先的IT市场研究和咨询公司IDC发布了《2023年下半年中国关系型数据库软件市场跟踪报告》,2023年阿里云整体市场份额(公有云+本地部署模式)稳居第一,其中公有云市场份额高达39.2%,自2019年起连续5年蝉联榜首。
|
1月前
|
存储 关系型数据库 MySQL
阿里云PolarDB解决游戏行业全球部署高并发问题
阿里云PolarDB解决游戏行业全球部署高并发问题
|
3月前
|
Cloud Native 数据库 开发者
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
|
3月前
|
Cloud Native 关系型数据库 分布式数据库
国内首批|阿里云PolarDB通过国家标准GB18030-2022最高级别认证
阿里云瑶池旗下的云原生数据库PolarDB完成了强制性国家标准GB 18030-2022《信息技术 中文编码字符集》标准测评,通过了该标准的最高级别3级认证,成为首批通过该测评认证的关系型数据库管理软件。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之备份下载链接有效时间如何延长
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 PolarDB
顶会最高奖+1 !阿里云PolarDB再获SIGMOD最佳论文奖
顶会最高奖+1 !阿里云PolarDB再获SIGMOD最佳论文奖
41 1
|
4月前
|
SQL Oracle 关系型数据库
关系型数据库Oracle结束 RMAN 会话:
【7月更文挑战第25天】
84 1

相关产品

  • 云原生数据库 PolarDB
  • 推荐镜像

    更多
    下一篇
    无影云桌面