PolarDB for PostgreSQL 开源必读手册-共享存储原理与实践(中)

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核8GB 50GB
简介: PolarDB for PostgreSQL 开源必读手册-

接上篇:https://developer.aliyun.com/article/1223073?spm=a2c6h.13148508.setting.29.44ec4f0eNvAByn

二、 PolarFS共享存储系统的搭建

 

image.png

 

首先,从github下载源代码,进行编译、安装代码。

 

源码地址

https://github.com/ApsaraDB/PolarDB-FileSystem

 

 

 

文档地址

https://github.com/ApsaraDB/PolarDB-FileSystem/blob/master/Readme-CN.md

 

image.png

 

安装后,系统即存在PFS对应的工具。执行PFS命令可查看PFS支持的命令行。

 

image.png

 

使用文件系统的第一步是对文件系统进行格式化,需要sudo的权限,因为需要进行磁盘的格式化。命令中的-C disk指的是针对块设备,因为PolarFS支持不同的存储形态,除了块设备之外,也支持阿里内部自研的分布式共享存储PolarStore。

 

mkfs命令下的提供了多种选项,比如指定的logsize大小,number users用于控制并发的实例编号。如果对以上选项不了解,采用默认值即可。

 

image.png

 

通过上述语句进行格式化。如果文件系统之前曾被格式化,本次格式化则需要加上-f,意为强制格式化。对于单节点,块设备直接只用本地磁盘即可。PFS除了支持共享存储,也支持单机硬盘,但是单机硬盘无法实现跨节点的数据访问。日常开发可以使用单机模式进行格式。

 

image.png

 

格式化成功之后,通过ls命令查看文件系统下的文件。

 

image.png

 

可以通过mkdir命令创建目录,执行后没有报错则意味着创建成功。

 

通过ls命令查看,结果显示nvme6n1文件下已经存在testDir目录。

 

image.png

 

PolarDB使用多个进程进行数据通信。主进程进行新的请求时,会fork一个work子进程,每个进程下面都会引入PolarFS的客户端,包含了read、write等常见操作,并负责调用客户端的接口,与后台的pfsdaemon进程进行通讯。

 

用户态共享内存作为PolarFS的通信信道,最大的优点在于可以减少数据的拷贝。比如客户端要写buffer,将数据存入共享内存,PID文件系统可以直接将数据取出,间接实现了零拷贝的操作。

 

image.png

 

上图为此前默认安装的pfsdaemon。通过start_pfsd.sh-p命令即可调用。-p指定文件系统的盘符。

 

image.png

 

Fuse类似于文件系统访问的中间层,对上兼容标准的文件系统的语义操作,对下可对接不同的文件系统。通过标准的命令,可直接访问到底层的PolarFS。

 

比如此前查看PolarFS的目录需要通过PFS工具,但是接入fuse之后,直接使用fuse Linux的原生命令makeDir即可创建目录到PFS。

 

image.png

 

首先安装Fuse,具体安装步骤可参考github上的安装文档。安装完成后,将fuse挂载到PFS上,系统默认提供了现成的脚本进行挂在操作(如上图所示),脚本在安装时已经部署在机器上。脚本下需要提供三个参数,diskname指定块设备的名称;RW和RO参数代表启动读写实例和只读实例的意思,因为需要创建文件和创建目录等写操作,此处启动读写实例;mount_dir指fuse的挂载目录。

 

image.png

 

挂载成功后,可进入fuse目录访问。执行ll操作,结果可直接显示PFS的testDir。

 

image.png

 

可直接通过原生的Linux的命令创建dir和文件。

 

image.png

 

可以看到创建的目录和文件都已经同步到PFS的文件系统,说明通过fuse成功访问了PFS文件系统。

 

Fuse最大的作用为简化文件系统的操作,用原生命令即可达到访问PFS文件系统的目的。用完之后,可通过mount_dir接触Fuse挂载。

 

image.png

 

PolarFS文件系统支持不同的挂载形态和存储介质,其中PolarStore是阿里云数据库内部自研的分布式共享文件系统,通过RDMA在存储层进行数据的多副本机制的通信以及复制。

 

当前,阿里云官网在售的PolarDB产品均基于PolarStore形态实现,支持PolarDB-MySQL的5.6、5.7、8.0版本,PolarDB-PostgreSQL11以及PolarDB-Oracle兼容版本。

 

image.png

 

阿里云的ESSD是标准的分布式块设备共享存储,可在阿里云上直接购买。部署方式与单机较类似,区别为ESSD在底层是分布式的共享存储,通过ESSD也可以达到一写多读进行数据共享以及数据同步一致性的效果。

接下篇:https://developer.aliyun.com/article/1223070?groupCode=polardbforpg

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍如何基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
2月前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
2月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
5月前
|
存储 关系型数据库 测试技术
拯救海量数据:PostgreSQL分区表性能优化实战手册(附压测对比)
本文深入解析PostgreSQL分区表的核心原理与优化策略,涵盖性能痛点、实战案例及压测对比。首先阐述分区表作为继承表+路由规则的逻辑封装,分析分区裁剪失效、全局索引膨胀和VACUUM堆积三大性能杀手,并通过电商订单表崩溃事件说明旧分区维护的重要性。接着提出四维设计法优化分区策略,包括时间范围分区黄金法则与自动化维护体系。同时对比局部索引与全局索引性能,展示后者在特定场景下的优势。进一步探讨并行查询优化、冷热数据分层存储及故障复盘,解决分区锁竞争问题。
551 2
|
12月前
|
存储 关系型数据库 数据库
【赵渝强老师】PostgreSQL的逻辑存储结构
PostgreSQL的逻辑存储结构包括数据库集群、数据库、表空间、段、区、块等。每个对象都有唯一的对象标识符OID,并存储于相应的系统目录表中。集群由单个服务器实例管理,包含多个数据库、用户及对象。表空间是数据库的逻辑存储单元,用于组织逻辑相关的数据结构。段是分配给表、索引等逻辑结构的空间集合,区是段的基本组成单位,而块则是最小的逻辑存储单位。
248 2
【赵渝强老师】PostgreSQL的逻辑存储结构
|
9月前
|
关系型数据库 分布式数据库 PolarDB
通过 PolarDB for PostgreSQL 实现一体化的 HTAP 能力
阿里云 PolarDB for PostgreSQL作为一款领先的云原生关系型数据库,利用向量化引擎+列存索引等技术实现了 OLTP 和 OLAP 的一体化。本方案为您展示如何通过 PolarDB for PostgreSQL 来实现一体化的 HTAP 能力。
通过 PolarDB for PostgreSQL 实现一体化的 HTAP 能力
|
9月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB开源数据库进阶课1 搭建共享存储集群
在笔记本上构建PolarDB RAC环境,本文介绍了一种适用于Windows、macOS和Linux的方法:通过将宿主机上的文件模拟为块设备,并在多个Docker容器中使用loop设备共享该文件。此方法解决了macOS不支持直接挂载块设备的问题。
238 2
|
9月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课3 共享存储在线扩容
本文继续探讨穷鬼玩PolarDB RAC一写多读集群系列,介绍如何在线扩容共享存储。实验环境依赖《在Docker容器中用loop设备模拟共享存储》搭建。主要步骤包括:1) 扩容虚拟磁盘;2) 刷新loop设备容量;3) 使用PFS工具进行文件系统扩容;4) 更新数据库实例以识别新空间。通过这些步骤,成功将共享存储从20GB扩容至30GB,并确保所有节点都能使用新的存储空间。
165 1
|
10月前
|
JSON 关系型数据库 PostgreSQL
PostgreSQL 9种索引的原理和应用场景
PostgreSQL 支持九种主要索引类型,包括 B-Tree、Hash、GiST、SP-GiST、GIN、BRIN、Bitmap、Partial 和 Unique 索引。每种索引适用于不同场景,如 B-Tree 适合范围查询和排序,Hash 仅用于等值查询,GiST 支持全文搜索和几何数据查询,GIN 适用于多值列和 JSON 数据,BRIN 适合非常大的表,Bitmap 适用于低基数列,Partial 只对部分数据创建索引,Unique 确保列值唯一。
|
11月前
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的物理存储结构
PostgreSQL在初始化时通过环境变量$PGDATA指定的目录下生成各类文件,构成其物理存储结构,包括数据文件、日志文件(如运行日志、WAL预写日志、事务日志和服务器日志)、控制文件及参数文件等,确保数据库的高效运行与数据安全。
272 1
|
12月前
|
数据库

相关产品

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

    更多
    下一篇
    开通oss服务