PolarDB Stack管控最佳实践

本文涉及的产品
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 在阿里云开源的趋势下,PolarDB Stack运行使用很便捷。

分享人:蟾兔   阿里云数据库云原生领域专家

正文:本文详细介绍了PolarDB Stack的最佳实践。


1、什么是 PolarDB Stack


image.png

什么是PolarDB Stack?它最初是面向线下数据库市场的轻量级的软件,它是基于共享存储的一写多读版的PolarDB 数据库服务,一写多读版是我们主打,线下有两个版本,一个是纯软版本,另一个是软硬一体版本,现在开源的是纯软版本,在开源的版本和线下的版本基本上是相同的。

我们版本能够在自有的硬件上部署,也支持混合部署和单独部署两种方案,管控节点和计算节点是要放一起部署还是分开部署,我们都提供相应的能力支持。

根据数据库PolarDB特别定制和深度优化了数据库生命周期管理,包括网络、存储方面的优化,API是基于k8s的标准API,方便大家集成和二次开发。

我们线下场景也是用这套API,又开发了控制台,可以用这个控制台去管控各个数据库的实例,也欢迎大家用我们的API去做自己的控制台,现在代码都是开源的,大家可以去自由的开发。

我们提供企业级的功能、稳定性、部署灵活性都是经过线下大量的客户验证的。


2、为什么使用 PolarDB Stack


image.png

部署是非常复杂的,通过stack可以一键把你数据库集群拉起来,就是在k8s的环境里拉起完整的数据库集群,拉起来后也就几分钟的时间就可以使用了。

API是标准个k8s API,如果有 k8s的经验就会使用PolarDB stack了,它的学习成本还是比较低的。

它提供了弹性伸缩的能力,我们stack只需要改一个k8s的参数,就可以自动的增减节点了,比如业务量大时只需改一个参数,马上就就能增加几台机器。

最重要的是高可用的能力。如果自己部署数据库,DB比较麻烦或者比较难做,故障方面比如说像存储掉了网络的问题、节点网络连不通、操作系统的问题、主机宕机,它是自动化的完全不需要自去做事情了。运维方面的工作比如像DB要升级、操作系统要打补丁、硬件主机需要维护,这些不需要中断你的服务的。

管控组件,包括存储manager、operator、 cm异常不影响DB实力。用了PolarDB Stack会让业务更稳定,不会对业务造成困扰。

最后一个不可控因素也能去预防,比如断电断网,都是经过严格的测试和线下的验证的,可以保证在异常的场景下能够自动把DB恢复起来。


3、PolarDB Stack 架构图


image.png

stack是基于k8s的架构,ETCD作为k8s的原数据存储,需要原数据库来存储业务中自己的数据,现在是存储模块在用原数据库的能力,核心工程是中间的operator,主要有三大模块:作为主控制器管理DB的生命周期和组件的健康状况。网络模块主要负责节点和各个节点的健康状。存储主要负责底层的共享存储设备交互,做对存储的底层细节的屏蔽,像共享存储需要支持支持两种协议,我们去做的屏蔽、PFS的初始化、格式化也在存储模块里,还负责创建逻辑卷的工作。


4、PolarDB Stack 故障迁移模型

 

image.png

这是故障迁移模型,一旦发生故障了,有cluster manager定期检测我们的故障场景,像DB引擎是否还正常。决策的策略在发现RW节点有问题时,会做读写的切换,保证业务是不会发生问题的,可以看到cluster manager会通知存储模块,存储模块对底层存储设备做加锁和释放的读写切换操作。


5、安装 PolarDB Stack 环境


image.png

首先把Stack的环境装起来,我提供了一个一键安装的脚本,由于时间有限,我们只支持了一些特定的场景,前置要求只支持centos系统,需要安装好docker和kubernetes,自己的原数据库保证数据库的可用性和连通性,后面需要配置在一键安装脚本里,有了闲置要求后,在工程里运行install,我们这个环境就装好了

image.png

这是手工安装的地址,这个文档非常详细的把安装过程中细节写的很清楚。

一键安装是把这个文档脚本化了。


6、部署 PolarDB Stack 集群


image.png

假设环境已经装好了,接下来创建数据库集群,第一步要创建一个PVC,首先创建一个KYS的PVC和共享存储盘相对应,让DB知道要用哪块存储。

首先去调用http的接口,这是需要去封装的,接口看起来好像很复杂,但是线下场景是用控制台给封装的,最简单的使用方法是调用命令创建一下。只要改几个数据:一个是IP,就存储服务机器的IP,一个是名字,就是你PVC的名称,还有volume_id是共享存储的wwid。

示例调用后有个返回,表示正常的创建成功了,去检查这块PVC,如果没有异常的话就表示存储创建成功了。


7、部署 PolarDB Stack 集群


image.png

这是完整创建集群的Yaml,所有字段都在里面。这里follower number表示是RO节点数量,刚才提到的弹性扩容就是通过控制这个参数进行操作的。字段classInfo是数据库实例的规格,安装文件里提供很多系列的规格,有默认的,也可以自己去改,根据参数会创建相应的资源数据库。VersionCfg表示镜像版本,包括DB、PFS、cluster manager等,它用哪个版本的镜像就在哪个文件里配置,Port是数据库服务端口,是PVC的源信息,diskQuota是磁盘,是数据库可以使用的磁盘大小,如果要扩容的话需要改这个参数。

这个截图,五分钟左右集群会创建成功,集群状态标志running说明已经创建好了,进到容器里面试一下PG是不是好的,如果是好的就没有问题了。

image.pngimage.png

image.png

创建好后去看下pod,是一个RW节点和两个RO节点,这个是刚刚配置的,可以在cluster实例状态里看到集群信息,下边这张图有一个status,它里面会标注哪个节点是RW节点,哪个节点是RO节点,可以根据这个了解集群节点的状况。


8、运维 PolarDB Stack 集群-引擎小版本升级


image.png

比如遇到内核小版本需要升级的场景,先找到这个配置,它大概是Yaml的结构,配置Engine, PFS的镜像版本,再复制一份,改成需要升级的镜像版本,改个新名字保存后去apply,新配置生成后,把dbcluster里字段versionCfgModifyTo.新配置名称填进去,再保存一下,几分钟后就完成了。

我们可以看到upgrade version变成了running的状态,就完成了升级,如果自己有环境的话可以试一下。


9、运维 PolarDB Stack 集群-RO节点弹性伸缩


image.png

比如要增加一个RO节点,在集群的文件里把followerNum改成二,保存后集群的状态变成了running,这个伸缩就完成了,再验证pod,可以看到多出了一个节点,整个过程都是自动完成的。


10、运维 PolarDB Stack 集群-存储扩容


image.png

自己的存储设备已经扩容后,需要告诉DB引擎已经扩容了,要在cluster里面把diskQuota改成扩容后数值,单位是兆,文档里面有详细的描述。再去设置扩容的标志onnotation,告诉它要扩容,集群会自动完成扩容的操作,完成后可以去验证数值是否变了,如果变了就表示成功了。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
4天前
|
人工智能 关系型数据库 分布式数据库
PolarDB-PG AI最佳实践3 :PolarDB AI多模态相似性搜索最佳实践
本文介绍了如何利用PolarDB结合多模态大模型(如CLIP)实现数据库内的多模态数据分析和查询。通过POLAR_AI插件,可以直接在数据库中调用AI模型服务,无需移动数据或额外的工具,简化了多模态数据的处理流程。具体应用场景包括图像识别与分类、图像到文本检索和基于文本的图像检索。文章详细说明了技术实现、配置建议、实战步骤及多模态检索示例,展示了如何在PolarDB中创建模型、生成embedding并进行相似性检索
|
4天前
|
SQL 人工智能 关系型数据库
PolarDB-PG AI最佳实践 2 :PolarDB AI X EAS实现自定义库内模型推理最佳实践
PolarDB通过POLAR_AI插件支持使用SQL调用AI/ML模型,无需专业AI知识或额外部署环境。结合阿里云EAS在线模型服务,可轻松部署自定义模型,在SQL中实现如文本翻译等功能。
|
4月前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
1月前
|
SQL 人工智能 自然语言处理
PolarDB-PG AI最佳实践 1:基础能力实践
Polar_AI 是 PolarDB 数据库的 AI 扩展,集成了先进的人工智能模型和算法,使数据库能够执行机器学习和自然语言处理任务。它支持 PostgreSQL 及 Oracle 兼容版本,通过标准 SQL 轻松调用 AI 模型,具备简单易用、灵活可定制、无缝数据融合、数据安全和高性能等优势。用户可以通过 SQL 快速实现文本转向量、情感分类等功能,并能自定义扩展 AI 模型。
|
3月前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了一种结合知识图谱与大型语言模型(LLM)的GraphRAG系统,利用PolarDB、通义千问及LangChain实现。知识图谱通过结构化信息、语义理解和推理等功能,增强了信息检索与自然语言处理效果。PolarDB具备图引擎与向量检索能力,适配知识图谱存储与查询。通义千问处理自然语言,LangChain则整合模型与应用。实战步骤包括环境准备、数据库配置与数据导入,并通过实例展示了图谱与向量联合检索的优越性,提升了问答系统的准确性和实用性。
|
5月前
|
监控 关系型数据库 分布式数据库
PolarDB 读写分离的最佳实践
【8月更文第27天】PolarDB 是阿里云推出的一款高度兼容 MySQL、PostgreSQL 和 Oracle 的云原生数据库服务。它支持读写分离,能够显著提高应用的性能和响应速度。本文将详细介绍如何在 PolarDB 中实施读写分离策略,并通过示例代码演示具体的配置步骤。
169 1
|
8月前
|
SQL canal 算法
PolarDB-X最佳实践:如何设计一张订单表
本文主要内容是如何使用全局索引与CO_HASH分区算法(CO_HASH),实现高效的多维度查询。
|
8月前
|
Kubernetes 关系型数据库 分布式数据库
【PolarDB开源】PolarDB与Kubernetes集成:容器化部署的最佳实践
【5月更文挑战第21天】本文介绍了将阿里云的高性能数据库PolarDB与容器编排工具Kubernetes集成的步骤。首先,需准备Kubernetes集群和PolarDB Docker镜像,安装Helm。然后,通过Helm部署PolarDB,设置存储类和副本数。接着,应用配置PolarDB连接信息,打包成Docker镜像并在K8s集群中部署。此外,调整PolarDB参数以优化性能,并使用Prometheus和Grafana监控。本文为PolarDB在Kubernetes中的最佳实践提供了指导。
213 4
|
8月前
|
存储 关系型数据库 分布式数据库
PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据
我们在测试数据库性能的过程中,通常需要生成一批测试数据。 以前,一般要写一段程序或者脚本来完成这项工作,但现在是2024年啦!时代变了!
PolarDB-X最佳实践系列(五):使用通义千问和存储过程快速生成测试数据
|
8月前
|
关系型数据库 MySQL 分布式数据库
PolarDB-X最佳实践系列(三):如何实现高效的分页查询
分页查询是数据库中常见的操作。本文将介绍,如何在数据库中(无论是单机还是分布式)高效的进行翻页操作。
112960 10
PolarDB-X最佳实践系列(三):如何实现高效的分页查询