PolarDB Stack管控最佳实践

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介: 在阿里云开源的趋势下,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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
3月前
|
SQL canal 算法
PolarDB-X最佳实践:如何设计一张订单表
本文主要内容是如何使用全局索引与CO_HASH分区算法(CO_HASH),实现高效的多维度查询。
|
3月前
|
关系型数据库 分布式数据库 数据处理
报名预约|PolarDB产品易用性创新与最佳实践在线直播
在线体验PolarDB产品易用性创新,练习阿里云数据库NL2SQL、无感切换实操技能,探索数据处理提速与学习成本降低实践
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB-X最佳实践系列(三):如何实现高效的分页查询
分页查询是数据库中常见的操作。本文将介绍,如何在数据库中(无论是单机还是分布式)高效的进行翻页操作。
112409 10
|
6月前
|
安全 关系型数据库 数据库
《确保安全:PostgreSQL安全配置与最佳实践》
《确保安全:PostgreSQL安全配置与最佳实践》
234 0
|
6月前
|
存储 关系型数据库 Go
《PostgreSQL备份与恢复:步骤与最佳实践》
《PostgreSQL备份与恢复:步骤与最佳实践》
354 0
|
8月前
|
Cloud Native 关系型数据库 分布式数据库
客户说|PolarDB最佳实践:工期缩短2/3,揭秘极氪APP分布式改造效率神器
极氪APP引入阿里云PolarDB,21天完成数据库分布式改造
|
存储 监控 负载均衡
乘数科技 × PolarDB开源云管控解决方案:如何用CLup管理PolarDB
本文介绍了乘数科技自主研发的PostgresSQL数据库管理平台CLup,以及如何使用CLup创建和管理PolarDB。
|
存储 SQL JSON
PolarDB MySQL 5.6/MySQL 5.6升级PolarDB MySQL 8.0最佳实践
升级概述为什么选择升级到PolarDB MySQL 8.0?PolarDB MySQL 8.0.1 (基于官方MySQL 8.0.13内核版本)发布于2019-12-03和PolarDB MySQL 8.0.2(基于官方MySQL 8.0.18内核版本)发布于2020-07-22*,增强了诸多卓越的架构增强和内核能力,为业务提供更灵活的技术解决方案和强大收益的性能提升,主要包括:Serverles
466 0
|
存储 SQL JSON
PolarDB MySQL 5.7/RDS 5.7升级到PolarDB MySQL 8.0最佳实践
升级概述PolarDB MySQL 5.7/RDS 5.7 向 8.0 升级过程中,经常遇到的问题主要是性能问题、语法兼容性问题,以及周边组件是否的支持,查询的性能问题一般是由于优化器升级导致执 行计划有变,此类问题需要对性能低下的语句进行针对性的性能优化,但性能问题基本不会引发业务报错以及代码的改写问题,此类问题不在本文讨论范围之内。本文主要讨论真实的兼容性问题,此类问题需要在数据库升级过程中,
925 0