跟我学:用PolarDB-X搭建一个高可用系统

本文涉及的产品
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
简介: 本文整理自阿里云数据库高级技术专家吴学强,在PolarDB-X动手实践系列的分享。

跟我学:用PolarDB-X搭建一个高可用系统

摘要:本文整理自阿里云数据库高级技术专家吴学强,在PolarDB-X动手实践系列的分享。

本篇内容主要分为四个部分:

1.    动手实践系列介绍

2.    环境准备

3.    演示内容

4.    用户问答

 

一、动手实践系列介绍

image.png

PolarDB-X采用Shared-nothing与存储分离计算架构进行设计,系统由4个核心组件组成。PolarDB-X社区版围绕开源PolarDB-X,对应商业2.0版本。PolarDB-X社区版主要面向应用开发者、架构师、DBA等。

image.png

PolarDB-X是一款基于云架构理念,同时支持在线事务处理与在线分析处理,融合型分布式数据库产品。专注解决海量数据存储、超高并发吞吐、大表瓶颈以及复杂计算效率等数据库瓶颈难题,助力企业加速完成业务数字化转型。

 

二、环境准备

image.png

在搭建环境之前,用户需要确定系统是CentOS 78macOSUbuntu18以上;Windows 10以上。相关配置需要大于等于4G。搭建环境需要的软件有:Docker&K8SPolarDB-X 2.1.0PolarDB-X Operator 1.2.1PolarDB-X Monitor 1.2.1

image.png

PolarDB-X采用Shared-nothing与存储计算分离架构进行设计,系统由4个核心组件组成。主要包括:计算节点、存储节点、元数据服务以及日志节点。

计算节点是系统的入口,采用无状态设计,包括SQL解析器、优化器、执行器等模块。


存储节点负责数据的持久化,基于多数派Paxos协议提供数据高可靠、强一致保障,同时通过MVCC维护分布式事务可见性。


元数据服务负责维护全局强一致的Table/SchemaStatistics等系统Meta信息,维护账号、权限等安全信息,同时提供全局授时服务(即TSO)。


日志节点提供完全兼容MySQL Binlog格式和协议的增量订阅能力,提供兼容MySQL Replication协议的主从复制能力。

 

三、演示内容

image.png

接下来,在Sysbench OLTP场景,模拟一个应用。在Sysbench OLTP进行负载,之后数据进入PolarDB-X分布式数据库。然后,通过PrometheusGrafana相互配合,搭建一个监控链路。


目前,新版本已经将PrometheusGrafana内置到产品里。用户可以用打包的组件,对PolarDB-Xdx集群进行监控。

image.png

PolarDB-X的集群由一个cms,两个cn、两个dn和两个cdc组成的。首先,做一个端口转发,将K8S里的PolarDB-X的端口转发到本地。

image.png

为了跟MySQLversion兼容,把MySQL版本作为返回。在实例里面已经有一个库了,叫做sysbench_test

image.png

接下来,打开第三个cd class-8,把测试数据灌进去。启动灌数据的脚本,用第三方打包的sysbench_test的镜像进行操作。它会建一张表,在里面写入56万的数据。它是一个K8S的任务,完成之后,开始检查数据情况。


将官方的服务端口,从K8S集群映射到ECS本机.然后,开启另一个窗口,运行监控组件。再做一次端口转发,将ECSGrafana3000端口,转发到操作电脑。这样就可以在操作电脑的浏览器里,看到监控页面。

image.png

接下来,启动业务流量。启动之后,应用系统成功运行,它是用csssysbench_test来模拟业务流量。用PB作为数据库。由于系统是分布式的,所以它有高可用的能力。部分节点宕机之后,能够自动恢复,应用可以不受影响继续的运行。

image.png

当前的QPS2400左右。sysbench_test提供了压缩镜像,也可以将它log透出,从而看到更加及时的数据。

image.png

接下来,将一个cn删除,观察QPS的变化情况。首先,在两个cn中,随便删除一个。系统会立即开始重建,然后监控整个变化过程。用户可以在K8S的结果里,观察到cn的状态。


初期,一个cn在跑,另一个在重建。过了一会儿,第二个cn建好,系统恢复到两个cn的状况。在QPS中可以看到,经过一点波动之后,系统快速恢复到了正常状态。

image.png

通过QPS可以看到,在16:20:34秒出现下跌,在16:21分基本恢复正常。整个过程,只有不到半分钟的时间。如果系统不是高可用,用户在半夜收到报警电话,需要起床进行故障响应。如果系统是高可用的,对于组件被删除,这个系统会自动恢复。

image.png

接下来,删除一个dn节点。dn主要负责存储数据。系统当中虽然有两个dn,但每个dn对应三个port,所以一共有六个port。有一个dn是正常的,另一个dn还在恢复。QPS4500跌到了1300,然后开始爬升,最低值是1300。系统在恢复的过程中,可以看到QPS在逐步爬升。

image.png

接下来,删除一个cdc。删除cdc之前,QPS保持在4000左右。因为cdc在本次模拟中它不参与业务。所以QPScdc组件没有关系,理论上不会出现波动。当cdc也变成了1/2,即一个正常,一个不正常。QPS没有明显变化,一直在4000左右进行活动。

image.png

接下来,删除gms中的一个portgms是一个特殊角色的dn,它也是一个三副本,高可用的形态。删除之后,从QPS的数据来看,系统依然能够获取到4000上下的QPS,数据库依然正常对外提供服务。

image.png

kubernetes operator是封装、部署和管理Kubernetes应用的方法,可以扩展kubernetes API的功能,创建、配置和管理复杂应用的实例。


它基于基本Kubernetes资源和控制器概念构建,但又涵盖了特定于域或应用的知识,用于实现其所管理软件的整个生命周期的自动化。

image.png

PolarDB-X集群是K8S的一个集群。它有四个组件组成.其中cncdc是标准的资源。gmsdn是定制化资源。因为cncdc它是无状态的,所以恢复相对较快速,也容易处理的。gmsdn是有状态的,恢复相对较慢。

image.png

在最新PolarDB-X开源版本中,开源了Paxos的能力。PolarDB-X面向用户的使用,可以完全和单机的事务模型保持一致。Paxosdn从原来的单节点变成了现在的三副本、高可用模式。


用户可以把一个dn看成三个MySQL进程。cn会将所有读写的流量,打在leader节点。通过日志,Paxos和强一致同步的协议,将变更日志同步到其他两个节点,也就是这里的Followerlogger。从而保证系统的高可用。

 

四、用户问答


问:生产环境会不会出现节点缺失的问题?

答:刚才出现的问题,发生在获取镜像的过程。如果是生产环境,用户通常会选择一共靠谱的端口容器的镜像。为了避免这种情况,可以在生产环境里,做一个自己的镜像仓库。

 

问:可以对比各种类似的产品吗?他们各有什么特色?

答:每个产品都有自己的特点,尤其是分布式数据库。国内有好几家友商在做。如果进行比较客观的对比,由第三方会更合适。阿里也会在后续的文章中,把相关产品的能力、性能等参数发布出来,大家可以在同样的环境下,进行对比。

问:是不是可以理解为像MySQL一样使用PolarDB-X?但它具备了灵活的计算以及存储的扩展能力。

答:是的。简单来说,在应用的视角,可以这么理解。

 

问:PolarDB-X完全兼容了阿里SQL限流、绑定、索引的特性吗?

答:在应用的视角,PolarDB-X提供原生的限流的能力。应用跟cn直接交互,所以需要在cn侧,重新实现限流能力。在绑定、索引方面,PolarDB-X会提供跟阿里SQL不一样的语法。

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
2月前
|
存储 Cloud Native 关系型数据库
PolarDB 高可用架构设计与实践
【8月更文第27天】 在现代互联网应用中,数据库作为核心的数据存储层,其稳定性和可靠性尤为重要。阿里云的 PolarDB 作为一款云原生的关系型数据库服务,提供了高可用、高性能和自动化的特性,适用于各种规模的应用。本文将详细介绍 PolarDB 的高可用架构设计,并探讨其实现数据安全性和业务连续性的关键技术。
75 0
|
3月前
|
SQL 自然语言处理 关系型数据库
PolarDB上实现一个自然语言查询系统
PolarDB上实现一个自然语言查询系统
|
14天前
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
64 5
|
24天前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
32 2
|
1月前
|
并行计算 关系型数据库 分布式数据库
朗坤智慧科技「LiEMS企业管理信息系统」通过PolarDB产品生态集成认证!
近日,朗坤智慧科技股份有限公司「LiEMS企业管理信息系统软件」通过PolarDB产品生态集成认证!
|
3月前
|
人工智能 关系型数据库 分布式数据库
PolarDB产品使用问题之如何将自有BI系统接入NL2BI的Web前端
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
Oracle 关系型数据库 分布式数据库
PolarDB助力欧派家居核心系统去O上云,每秒处理万次事务
欧派家居选择阿里云PolarDB-PG数据库,因其顺应云趋势,提供稳定服务,提升扩容和运维效率。欧派运维负责人表示,PolarDB-PG云上运行优于自建Oracle,云运维响应更快,解决问题效率更高。
|
5月前
|
存储 Kubernetes 关系型数据库
使用开源ProxySQL构建PolarDB-X标准版高可用路由服务
本文将指导如何快速搭建和配置PolarDB-X标准版与ProxySQL,并提供验证高可用路由服务验证测试。
|
5月前
|
存储 关系型数据库 分布式数据库
【PolarDB开源】PolarDB高可用架构解析:确保业务连续性的关键设计
【5月更文挑战第22天】阿里云PolarDB是一款高可用、高性能的云原生数据库,采用分布式共享存储架构实现计算与存储分离。通过主从复制保证数据实时同步,当主节点故障时,从节点能快速接管。此外,PolarDB提供自动故障转移和数据备份恢复功能,确保业务连续性和数据安全性。一个简单的Python SDK使用示例展示了查询数据的过程。总之,PolarDB通过多种机制保障了企业在异常情况下的服务稳定和数据完整性。
259 5
|
5月前
|
监控 关系型数据库 分布式数据库
【PolarDB开源】PolarDB监控与报警系统构建:确保数据库健康运行
【5月更文挑战第23天】阿里云PolarDB因其存储计算分离、高兼容性等特性受企业青睐。为了确保其稳定运行,文章介绍了构建PolarDB监控与报警系统的做法。通过阿里云云监控服务开启和自定义监控视图,关注CPU、内存等关键指标,并设置告警规则。此外,通过自定义脚本与开源工具集成,满足特殊监控需求,实现全面、精准的监控报警,保障数据库健康运行。
295 2

相关产品

  • 云原生数据库 PolarDB