PolarDB-X集群运维1:升降配、扩缩容_与备份恢复(二)|学习笔记

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
性能测试 PTS,5000VUM额度
简介: 快速学习PolarDB-X集群运维1:升降配、扩缩容_与备份恢复(二)

开发者学堂课程【PolarDB-X 开源系列课程:PolarDB-X集群运维1:升降配、扩缩容_与备份恢复(二)】学习笔记与课程紧密联系,让用户快速学习知识

课程地址https://developer.aliyun.com/learning/course/1032/detail/15145


PolarDB-X集群运维1:升降配、扩缩容_与备份恢复(二)

三、升降配

1、技术细节

(1)分区迁移。将老dn的数据迁移到新的dn,由于polarDB-x是一款分布式数据库,存储的数据量往往较大,迁移的数据量比较大,因此在迁移的过程中尽可能采用并行的策略来提高迁移效率,迁移过程中比较消耗CPU以及io资源,如果迁移的速度过快,也会对正常的业务业务请求造成一定的影响。

因此polarDB-x支持自适应的流控策略,一方面能够允许用户自定义控制迁移任务的启停以及迁移速率的上限,另一方面也会根据实际节点的资源情况来自适应控制迁移的速率。从而能够既保障迁移效率,也能够减少对业务的影响。

image.png

(2)切换过程。当完成数据迁移,需要从旧的dn切换到新的dn访问时,由于polarDB-x是一款分布式节点,会有多个cn节点存在。直接切流方式,由于polarDB-x有多个Cn,不可能同时切流,可能会有一前一后的延迟,假如需要将老的cn1上的数据迁移到cn2,数据迁移完成发起切换。

这时cn2完成切换过程,对新的分配数据发起删除操作,将数据删除,但是cn1的流量还没有切换到cn2,这时有select的请求过来,仍然会读到原来cn1上的这条数据,这时候便会出现数据的不一致。

简单解法是直接通知所有的cn停写进行切换,切换完成后,再把写入流量放开。但由于是分布式数据库,需要保证所有的cn节点都能被通知到,假如某一个cn节点发生异常或是有网络延迟,便会有协调开销。长时间的停写也会对业务造成一定的影响。

image.png

(3)针对上述两种问题,polarDB-x采用透明切换方式,将切换过程看成是ddl操作,将新dn2上的数据看成主表的数据,将DN2上的数据看成是主表的索引表。

切流操作就是将索引表的数据进行下线,有了抽象之后,参考GOOGLE的那篇papper,将整个切换过程分成四个步骤。

可以理解成do流量,insert流量还有delete,update流量以及剩下的所有的流量,在这个过程中保证任意一个时刻,所有的cn节点只会出现相邻的两个状态。

举个例子,在一开始切流后需要通知cn节点,这时只会出现部分节点ready public,读写请求还在访问老的cn节点,同时数据同步还在保持,部分节点只会将读请求切换到新的cn,写请求还在老的cn上,只会出现这一种状态。

等所有的cn节点全部达到step7即only状态后,才会发起向step8状态切换的步骤,直到所有的cn全部到step8后才会发起向step9切换的操作,通过这种方式能够保证不会出现数据的不一致,同时也没有长时间浪费,减少对业务的影响。

2、操作

(1)ecs提前通过kubectl安装好k84集群。这是由四个节点构成的minikube集群,polarDB-X的实例已经创建好。它由gms,cn,dn和cdc组成,通过命令拿到登录密码。

polarDB-X实例的密码会放到k84的cicol对象里,通过拿到对象里面相应密码的字段,将其进行贝斯六十四的解码,就可以拿到密码。把密码输出出来,将polarDB-X的端口转发到设备上,即可从本地进行登录。

image.png

(2)将3306端口转发到本地,接下来通过命令行的方式登录。在my cercle上登录后,已经提前创建好数据库,开启压测流量,对polarDB-X进行操作,观察过程中的变化。

(3)数据库的数据导入十六行的数据,接下来将对实例开启压测流量。压测流量的脚本是yaml文件,有几个关键的部分。使用的容器是目前公开的容器。在二次部分配置pxC实例的用户名密码以及网络的连接串。主要的区别是使用二十五个连接来进行压测,压测时使用的是slect场景。

(4)用kubecrl apply方式创建job。有一个叫   的pall正在运行,日志流量基本上稳定下来,实例按现在的资源规格,kps是三千多,接下来进行扩容。

(5)进行申配,通过yaml文件进行编辑,将cn的CPU的limite改成2,dn的CPU的limite也改成2,保存文件。apply对象,成功后观察polarDB-X的状态,已经进入upgreating。

image.png

qPS已经上来,最初三千多,现在已经到五六千。申配过程还在继续。

(6)sisbench的流量跌到0有几个因素,在申配过程中,CN需要进行申配,中间必然会有老cn下线和新cn上线的过程,会导致切换。

由于压测流量,sisbench的流量和polarDB-X在ecs上做模拟,两个进程之间的资源会有一定的互相影响就会导致这种现象,如果单独在k84集群使用的话不会有这个问题,闪断不会这么慢。

3、原理

(1)升降配可以看成两个部分,第一个是cn、cdc这种无状态的组件,升降配其实就是把节点的资源,例如CPU内存资源更改,需要用新的pod替换老的pod。

image.png

为了保证相对的平衡,会选rolling up great的方式,按要求配置的新的CN节点,创建好节点,举个例子,三个cn的CPU限制都是1,现在需要改成2,就会创建三个CPU limite是2的节点,创建完成后会将老的pod下线,替换原来的cn节点。

(2)对于dn这样有状态的过程,给出每一个dn内部的状态,分别是leader、FOLLOWer和logger,在这个过程中,leader对外提供请求,响应请求,follower和logger主要做数据迁移之后的保障。

因此,会首先对FOLLOWer和logger进行升降配更改配置,换成新的pod,完成后将原来的leader切换到follower,由原来已经升配完的follower做leader,对老的leader进行升降配来达到最终的升配过程,这是轮转的过程,可以尽量减少对业务的影响。中间有一次流量的切换,就是主备的切换。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
23天前
|
存储 运维 监控
实时计算Flink版在稳定性、性能、开发运维、安全能力等等跟其他引擎及自建Flink集群比较。
实时计算Flink版在稳定性、性能、开发运维和安全能力等方面表现出色。其自研的高性能状态存储引擎GeminiStateBackend显著提升了作业稳定性,状态管理优化使性能提升40%以上。核心性能较开源Flink提升2-3倍,资源利用率提高100%。提供一站式开发管理、自动化运维和丰富的监控告警功能,支持多语言开发和智能调优。安全方面,具备访问控制、高可用保障和全链路容错能力,确保企业级应用的安全与稳定。
33 0
|
3月前
|
运维 Oracle 前端开发
Oracle 11g RAC集群日常运维命令总结
Oracle 11g RAC集群日常运维命令总结
81 2
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之原PolarDB-X集群无法连接且Docker容器已经被删除,如何恢复数据
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之如何查看并进入您的PolarDB-X 2.0集群
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
3月前
|
Kubernetes Cloud Native 关系型数据库
k8s 部署polardb-x集群
k8s 部署polardb-x集群
157 0
|
6月前
|
存储 Kubernetes 分布式数据库
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
利用Helm在K8S上部署 PolarDB-X 集群(详细步骤--亲测!!!)
269 0
|
6月前
|
消息中间件 运维 应用服务中间件
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
881 1
|
存储 运维 关系型数据库
直播预告 | PolarDB-PG架构简介及日常运维浅析
本次分享将先从架构、特性、开源等三个维度解读PolarDB-PG的整体架构。在大家对架构有一定深入理解后,将继续从备份恢复、存储层、计算层扩容、只读节点提升、高可用等五个维度,对PolarDB-PG的日常运维进行深入浅出的介绍,为“唯手熟尔”的运维打好理论基础。
|
域名解析 运维 负载均衡
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
383 1
|
域名解析 缓存 运维
【运维知识进阶篇】集群架构-Nginx性能优化 (二)
【运维知识进阶篇】集群架构-Nginx性能优化 (二)
153 0