《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(1)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(1)

架构介绍


(一)分布式集群架构


首先介绍一下基本架构。

image.png


上图左边是PGXC的典型的架构图,PGXC是PG的一个分布式的版本,也是PG最重要的分布式版本之一,目前在国内的大型公司(如阿里、腾讯等)都是用类似的架构来做分布式。


它包含几个角色,分别是CN、DN和GTM。


CN接受用户的业务请求,包含了全局的Catalog,所以它可以根据业务请求到各个DN上去获取数据,把数据获取回来以后,它会把这个数据再返回给客户。我们虽然不是完全基于PGXC来开发我们的PolarDB分布式,但是我们会用到PGXC的很多组件和一些思想,所以可以看到上图的右边,我们的系统里面也包含了CN、DN、事物相关的、GTM相关的一些组件。


在这种情况下,整个集群的管理方面,我们采用了pgxc_ctl的组件来进行集群的管理,从运维和管理这个角度来看,我们就不需要自己来开发了。


另外,我们用pg_cron的组件来做集群的心跳的管理,所以它会定期调用pgxc_ctl进行主备切换,故障检测等类似的动作,至于底层的这种DN节点或者CN节点的控制,使用的是PG原生的initdb和pg_ctl相关的组件。为了便于用户使用,最外边我们开发了onekey这样的脚本。针对docker环境我们开发了一些脚本,便于用户更好地调用pgxc_ctl对整个集群进行控制。


虽然现在CN和DN都是存在的,但是可能后期我们会做CN、DN的合一,另外就是GTM和CN可能也会合一,因为我们的GTM使用的是逻辑时钟,它不需要像PGXC这种snapshot的方式传很多的数据,所以可能放到CN上会更合适。另外这一次我们主要是开源了DN组件,CN和GTM的很多功能是没有开源的,但是代码里面可能会少量的涉及到这部分的内容。以上就是它的一个基本架构。


(二)高可用架构(流复制、Paxos三副本、Active-Active逻辑复制)

下面讲一下高可用架构。


image.png


可以看到图中左边和右边的两个分别是三套集群,这三套集群可能部署在不同的区域。左边这套集群是有了我们的

CN、DN,首先它的CN和DN是支持主备的,而它主备的方式包含好几种,第一种就是PG原生的流复制的方式进行配置主

备。另外,我们扩展了一个Paxos三副本方式的主备,除了这个之外,尤其是不同区域的DN之间,我们可以配置双向逻

辑复制这样的主备关系。


双向逻辑复制的特点是可以在任意的节点上写请求,并把这个企业请求同步到它的复制组上的任何一个节点。当然,现在

不完善的地方可能还是在冲突情况下的检测方面,这方面可能需要客户自己来控制。另外,逻辑复制有一个更大更好的特

点是可以很容易地过滤日志,这样在跨数据中心场景下,其实不需要所有的日志都同步到其它的数据中心,比方说有些比

较不重要的,或者是一些类似于vacuum这样不是很重要的操作,其实可以不用同步其他数据中心。在这种情况下,它的

数据量会减少,所以在做跨数据中心的场景下,这种部署其实是很有意义的,现在已经开源的就是流复制和Paxos三副本

的这部分。


总结一下,现在主要DN角色里边的流复制和三副本已经开源出来了,后面会开源整个分布式集群的CN和GTM其他相关

的分布式能力。另外,高可用或其他的一些功能会陆续开源,目前CN和DN都是支持高可用的。


编译、部署


(一)代码下载、编译


1、官网地址

https://github.com/alibaba/PolarDB-for-PostgreSQL

2、代码下载

$git clone https://github.com/alibaba/PolarDB-for-PostgreSQL.git

3、源码编译

编译Release版本:

$./build.sh

编译Debug版本:

$./build.sh debug

1、官网地址

https://github.com/alibaba/PolarDB-for-PostgreSQL

4build.sh 原理

首先,大家如果要使用我们的PolarDB,可以到开源网站上看一下。


image.png


这个就是我们的PolarDB开源网站,在里边可以看到,首先是有Code的界面,点Code里边的绿色图标就可以把我们的代

码的路径给下载下来,就可以通过gitclone的方法把代码拷贝到自己的服务器上,对它进行编译和修改。


另外可以看到,界面上包含Issues和其他的部分,上面是‘star’,希望大家也都帮我们去网站打星,收藏我们的地址,以

后就可以更容易地找到我们的网站。

下面用gitclone命令加上刚才拷贝的代码路径,就可以下载这个程序了。


image.png


刚才用gitclone已经下载的code,可以看到code目录的布局是这样的。为了方便大家进行编译,这里只要调用build.sh就

可以进行源码的编译,一键式的编译让大家可以更容易地编译。


现在我们演示一下编译脚本做了什么事情。


image.png


首先可以看到它包含了Deploy、verify、debug相关的一些参数,这里面比较重要的就是它的安装路径,按照这种编译之

后,它会把我们的程序放到当前的路径下,之后这里面可以选择在build.sh后面增加Deploy、verify、debug参数,默认

是Deploy这种方式,它其实就是编译的一个Release的版本,如果大家想编译debug版本就在build后面加一个debug就

可以了。


编译的过程其实都是大家熟悉的,调用就是一个config的过程,另外就是make和cmake的过程就是进行相关的编译,另

外会有其它组件的一些编译。


编译完成后,我们切到目录下来看一看它的数据有没有更新,到这一步可以看到现在这边[enjoy coding]了。


image.png


这种情况下说明已经编译成功了。

可以看到它整个的二进制已经更新了,并且放到了我们指定的编译目录下。


image.png


《PolarDB for PostgreSQL源码与应用实战》——PolarDB for PostgreSQL 基础入门(2) https://developer.aliyun.com/article/1232840?groupCode=polardbforpg















相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
5月前
|
人工智能 关系型数据库 MySQL
基于阿里云的PolarDB MySQL版实现AI增强数据管理
本文将介绍如何利用阿里云的PolarDB MySQL版结合AI技术,实现数据管理的自动化和智能化。
337 0
|
27天前
|
数据库
|
3月前
|
关系型数据库 分布式数据库 数据库
开源云原生数据库PolarDB PostgreSQL 15兼容版本正式发布
PolarDB进行了深度的内核优化,从而实现以更低的成本提供商业数据库的性能。
|
4月前
|
SQL 关系型数据库 MySQL
linux 上源码编译安装 PolarDB-X
linux 上源码编译安装 PolarDB-X
188 6
linux 上源码编译安装 PolarDB-X
|
4月前
|
SQL 存储 关系型数据库
新手如何入门学习PostgreSQL?
新手如何入门学习PostgreSQL?
|
5月前
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版的体验评测
我有幸参与了云原生数据库PolarDB MySQL版的体验评测。在这次评测中,我主要关注了以下几个方面:产品控制台操作体验、产品文档阅读体验、产品API使用体验、控制台产品监控页面以及生态周边。
61 11
云原生数据库PolarDB MySQL版的体验评测
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
44 1
|
5月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之如何进行PostgreSQL(简称PG)的全量和增量备份管理
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之使用polardb for mysql数据库的外网地址在程序中连接经常超时,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
5月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之PolarDB MySQL版和PolarDB-X的区别是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

热门文章

最新文章

相关产品

  • 云原生数据库 PolarDB