[PolarDB实操课] 05.通过源码部署PolarDB-X标准版

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 本课程介绍如何通过源码部署PolarDB-X标准版,涵盖基于Paxos的MySQL三副本工作原理和技术特点。主要内容包括:1. **Paxos三副本工作原理**:讲解Leader和Follower节点的角色及数据同步机制。2. **技术特点**:强调高性能、数据不丢失(RPO=0)和自动HA切换。3. **源码部署步骤**:详细演示从编译生成RPM包到启动DN节点的过程,包括配置my.cnf文件和初始化数据库。4. **高可用体验**:通过三台机器模拟三副本集群,展示Leader选举和故障转移机制,确保数据一致性和服务可用性。

[PolarDB实操课] 05.通过源码部署PolarDB-X标准版


内容介绍:

一、基于Paxos的MySQL三副本工作原理

二、基于Paxos的MySQL三副本技术特点

三、通过源码部署PolarDB-X的标准版

 

本节课学习如何通过源码来部署PolarDB-X的标准版

ebccc8c4f90018be7d3fa33a668d473.png

 

一、基于Paxos的MySQL三副本工作原理

介绍基于Paxos的MySQL三副本Paxos是一个基于多数派原理的共识协议基于Paxos的三副本的工作原理图可以看到集群里面有一个Leader节点,同时还有两个Follower节点

1. 在同一个时刻,整个集群当中,最多会有一个Leader节点来承担数据写入的任务,然后其余的节点作为Follower节点来参与多数派的投票还有数据同步的工作

2. Paxos的协议日志是Consensus Log,它是全面的融合了MySQL里面原有的binlog的内容,在Leader主节点上会在binlog协议中新增Consensus相关binlog event,同时在Follower节点上替换传统的Relay Log库会通过SQL Thread进行Relay 日志内容到数据文件里可以把它简单的理解为在PolarDB-X标准版里面的Paxos Consensus log类似于MySQL数据库里面的binlog。

3. 基于Paxos的多数派自选主机制里面,通过心跳机制,还有election timeout机制来监听Leader节点的变化,心跳机制可以简单的理解为这个节点是否还在活跃会去自动的监听节点的活跃状态。当Leader节点不可用时,监听到heart beat有问题时,Follower节点就会自动的去完成切主,也就是会把Leader节点切换成新的Leader节点,新的Leader节点会去提供服务,在提供服务之前需要通过SQL Thread完成存量日志的Replay,从而确保新选出来的Leader节点会有最新的数据,从而保证集群的数据的可用性

0e1e4ac0443e8e577a19c2dd6d34ffe.png

 

二、基于Paxos的MySQL三副本技术特点

基于Paxos的MySQL三副本的集群有一个技术特点

1. 实现了高性能,它是采用单Leader的模式,可以提供类比于MySQL semi-sync模式的性能。它的性能比较好

2. 可以保证数据不丢失,RPO等于0Paxos协议会全面的融合MySQL里面原有的binlog的内容,然后基于多数派投票的机制去同步数据,从而保这种数据不丢

3. 自动HA,HA是一个高可用的切换,基于Paxos的选举心跳机制,当它监测到Leader节点的服务不可用时,MySQL会去自动的完成一个节点探活,会去实时的监测。并且当监测到Leader的节点不可用时,会迅速的完成HA的高可用切换,从而选出新的Leader节点来确保数据不丢。

  36463c5a92e9ba8b34e1849f982a8da.png

 

三、通过源码部署PolarDB-X的标准版

现在学习如何通过源码编译来部署PolarDB-X的标准版,在编译的时候,需要用名为RPM的软件包管理器,可以下载RPM的安装包来安装。也可以通过编译的方式生成依赖演示如何通过编译的方式安装RPM。首先需要安装一些必要的工具,例如git等工具,依次的执行相关命令就可以创建一个目录,然后安装其他的一些工具。

8459a5f948282895fdcfeb6406e98de.png

然后去编译生成RPM。首先拉取Polardbx-engine的代码,Polardbx-engine对应的是DN节点,标准版只有一个DN节点,代码拉取完成之后编译生成RPM。进入Polardbx-engine目录,然后编译生成RPM,编译的过程需要一些时间。RPM包编译成功检查是否编译成功编译生成的这个RPM包会默认出现在/root/rpmbuild/RPMS/x86_64/目录下,检查是否编译成功,执行ls/root/rpmbuild/RPMS/x86_64/命令,看RPM包是否存在.看到目录下有RPM文件,基于安装包去快速的安装,需要把安装的地址改成RPM包所在的地址,也就是在/root/rpmbuild/RPMS/x86_64/目录下面的t-polardbx-engine-2.3.0-2c1b76d.e17.x86_64.rpm。现在安装RPM。安装完成进行检查,安装完RPM之后会生成一个二进制文件叫mysqld,这个文件会出在/opt/polardbx-engine/bin目录当中,查看二进制文件是否存在,查看是否安装成功。执行ls/opt/polardbx-engine/bin命令查看是否生成二进制文件,看到已经生成二进制文件说明安装成功

441f9c4e3272160376e972242417b22.png

接下来启动DN节点,DN节点可以理解为标准版里面单机MySQL,首先需要创建polarx用户,然后创建密码。现在已经切换到polarx用户,然后创建必要的目录,创建polardbx-engine目录,并且创建一些文件夹之后需要配置my.cnf文件,my.cnf文件是配置文件,在文件里面放入关于数据库的配置信息。

通过vim命令打开文本编辑器,然后配置文件,教程里面提供my.cnf文件的简单模板,可以直接把模板里面的代码复制到配置文件里面检查粘贴的时候可能有些错误,所以需要进行修改,确保配置文件正确,粘贴的时候漏掉第一行mysqld声明,然后第二行的单词粘贴错误,需要改正,然后保存退出vim文件,回到命令终端,继续做下面命令的操作,准备好my.cnf文件之后进行初始化的操作,复制/opt/polardbx_engine/bin/mysqld--defaults-file=my.cnf--initialize-insecure去初始化。初始化成功继续执行/opt/polardbx_engine/bin/mysqld_safe--defaults-file=my.cnf &来启动数据库,启动登录数据库来验证状态,统一通过mysql-h127.0.0.1-P4886-uroot来登录数据库,显示登录成功然后来执SELECT*FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL来查看这台机器的paxos角色。可以看到这台机器的角色是Leader。目前配置文件里面只配置了单机模式,所以只有一台机器,只有一个Leader,没有Follower。

507ced47b13f4cd34da05cac9a8e649.png

221a77e25c885105a91e9f5b7efb999.png

8646133fbd4cfd22ec4fbafc85ce314.png

接下来体验基于Paxos的三副本高可用,体验三副本的高可用部署,需要准备三台机器。本次课程准备三台云服务器,第一台服务器的ip地址是172.26.151.122。第二台是172.26.151.123,第三台是172.26.151.124,使用这三台机器做一个演示,ip地址已经写。然后在这三台机器上需要做一些设置,在设置之前需要按照前面的步骤,通过下载或者是通过源码编译的方式来安装RPM。

并且要准备my.cnf文件和目录,需要注意的是,这三台机器所使用的my.cnf文件是一致的,统一使用准备的简单模板,完成之后,分别在三台机器上去做一些配置需要改三台机器的cluster information集群信息,需要把三台机器的ip地址以及它的端口号配置进去,按照主机1端口1,主机2端口2,主机3端口3的格式配置进去,然后通过idx来区分这三台机器,第一台机器的idx是1,第二台机器idx是2第三台机器的idx是3

通过这样的方式来区分三台机器,分别三台机器上做一个设置,首先第一台机器122上做一个配置。初始化完成后,做启动的配置,这个进程已经存在,然后再第二个机器上做一个配置,第二个是123第三台机器124上做配置,然后启动第三台。之前已经启动,所以MySQL进程已经存在,如果第一次启动这三台机器,会提示连接成功

7e35073d4360d84fa3417e07c5ddc42.png

f759317298eabd24568e265072d51cf.png

48032190962985ffd6a2766a7459651.png

启动完之后做三副本的启动,通过SELECT*FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL验证数据库集群的状态,可能有一些错误。首先通过统一的命令三台数据库。三台机器登录成功后验证集群的状态,执行SELECT*FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL验证集群的状态。输入\G命令,把状态打印出来,然后看到122这台机器在集群里面角色是Follower,123这台机器角色也是Follower,124这台机器的角色是Leader,说明它是一个主节点,三副本的集群部署成功其中有两台机器是Follower的角色,其中一台是Leader的角色,他们有角色的分配。这三台机器成功启动.

136f0932f740513d62c62c448db8103.png

然后体验高可用的切换,通过kill-9命令去结束其中一台机器的进程,集群如何重新的分配LeaderFollower,如何去保证数据是高可用的。如何保证数据服务不停,首先做一个演示,在Leader上建一个表,然后插入一些数据,Leader是第三台机器,现在Leader上插入一些数据,然后在Leader还有Follower上把数据查出来,然后在Leader上面查询集群的状态,现在执行SELECT SERVER_ID, IP_PORT, MATCH_INDEX, ROLE, APPLIED_INDEX FROMINFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL命令,Leader上查询数据,三台机器是联通的,有角色的分配,第三台是Leader,前两台是Follower们的APPLIED_INDEX都是6APPLIED_INDEX都是6说明三台机器的数据完全一致,三台机器是联通的,保证了集群的高可用,对其中的Leader节点做进程的结束,然后让集群重新选出新的Leader。

执行命令,回到linux的终端后,执行kill-9$(pgrep -x mysqid)结束进程的命令,进程结束后查询状态,重新执行命令查询集群的状态,首先在Follower上查询状态,看到刚才的Follower节点已经变成Leader节点,说明第三台机器原来的Leader结束进程之后群重新选出一个Leader。

123数据库还是Follower。因为集群已经把Leader权限分配给122机器,所以123机器还是Follower。124机器需要重新登录数据库才能看到它的状态,执行命令登录数据库。登录成功后重新执行查询状态的命令,查询124的状态。124现在的状态应该是Follower。

因为集群已经有新的Leader出现,所以它只能当Follower,通过这样的方式体验基于Paxos的高可用部署通过刚才的演示看到当原来的Leader节点结束进程之后,也就是模拟一个容灾的过程,原来的Leader节点如果出现问题,它的服务停掉之后高可用集群会自动切换Leader节点,可以在剩余的节点当中重新选择一个节点当Leader,然后保证服务不停,保证数据的高可用。

1736844002897.jpg

1736844020132.jpg

总结内容

1. polarDB-X的标准版

2. 学习标准版里面基于Paxos的三副本的工作原理技术特点。

3. 通过实际演示的方式体验如何通过源码来部署PolarDB-X的标准版。

(1)先体验单机模式,体验如何启动DN节点

(2)体验三副本高可用的部署,准备三台机器,并且在三台机器上做简单的配置,然后通过设置拉起这三台机器,体验如何通过命令来结束其中的Leader节点的进程,从而使集群自动选举出新的Leader节点,完成HA的切换,保证数据的一致性,保证数据不丢。

1736844040075.jpg

相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
1天前
|
关系型数据库 编译器 分布式数据库
PolarDB实操课] 04.通过源码部署PolarDB-X企业版
本次课程由PolarDB开源架构师王江颖分享,详细介绍了通过源码部署PolarDB-X企业版的全过程。主要内容包括: 1. **编译基础** 2. **使用源码编译部署PolarDB-X企业版** 3. **演示实例**:通过阿里云ECS进行实际操作演示,从创建用户、赋予权限到最终启动并连接PolarDB-X数据库,展示了完整的部署过程。 4. **总结**
|
8月前
|
安全 druid Java
Seata 1.8.0 正式发布,支持达梦和 PolarDB-X 数据库
Seata 1.8.0 正式发布,支持达梦和 PolarDB-X 数据库
657 12
Seata 1.8.0 正式发布,支持达梦和 PolarDB-X 数据库
|
8月前
|
存储 DataWorks 监控
DataWorks,一个 polar db 有上万个数据库,解决方案
DataWorks,一个 polar db 有上万个数据库,解决方案
|
SQL 存储 Web App开发
PolarDB-X 分布式数据库中的外键
外键是关系型数据库中非常便利的一种功能,它通过一个或多个列为两张表建立连接,从而允许跨表交叉引用相关数据。外键通过约束来保持数据的一致性,通过级联来同步数据在多表间的更新和删除。在关系数据库系统中,大多数表都遵循外键的概念。
|
6月前
|
缓存 运维 关系型数据库
数据库容灾 | MySQL MGR与阿里云PolarDB-X Paxos的深度对比
经过深入的技术剖析与性能对比,PolarDB-X DN凭借其自研的X-Paxos协议和一系列优化设计,在性能、正确性、可用性及资源开销等方面展现出对MySQL MGR的多项优势,但MGR在MySQL生态体系内也占据重要地位,但需要考虑备库宕机抖动、跨机房容灾性能波动、稳定性等各种情况,因此如果想用好MGR,必须配备专业的技术和运维团队的支持。 在面对大规模、高并发、高可用性需求时,PolarDB-X存储引擎以其独特的技术优势和优异的性能表现,相比于MGR在开箱即用的场景下,PolarDB-X基于DN的集中式(标准版)在功能和性能都做到了很好的平衡,成为了极具竞争力的数据库解决方案。
|
5月前
|
存储 缓存 负载均衡
【PolarDB-X 技术揭秘】Lizard B+tree:揭秘分布式数据库索引优化的终极奥秘!
【8月更文挑战第25天】PolarDB-X是阿里云的一款分布式数据库产品,其核心组件Lizard B+tree针对分布式环境优化,解决了传统B+tree面临的数据分片与跨节点查询等问题。Lizard B+tree通过一致性哈希实现数据分片,确保分布式一致性;智能分区实现了负载均衡;高效的搜索算法与缓存机制降低了查询延迟;副本机制确保了系统的高可用性。此外,PolarDB-X通过自适应分支因子、缓存优化、异步写入、数据压缩和智能分片等策略进一步提升了Lizard B+tree的性能,使其能够在分布式环境下提供高性能的索引服务。这些优化不仅提高了查询速度,还确保了系统的稳定性和可靠性。
119 5
|
5月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
122 1
|
5月前
|
C# UED 定位技术
WPF控件大全:初学者必读,掌握控件使用技巧,让你的应用程序更上一层楼!
【8月更文挑战第31天】在WPF应用程序开发中,控件是实现用户界面交互的关键元素。WPF提供了丰富的控件库,包括基础控件(如`Button`、`TextBox`)、布局控件(如`StackPanel`、`Grid`)、数据绑定控件(如`ListBox`、`DataGrid`)等。本文将介绍这些控件的基本分类及使用技巧,并通过示例代码展示如何在项目中应用。合理选择控件并利用布局控件和数据绑定功能,可以提升用户体验和程序性能。
131 0
|
6月前
|
存储 关系型数据库 MySQL
深度评测:PolarDB-X 开源分布式数据库的优势与实践
本文对阿里云开源分布式数据库 PolarDB-X 进行了详细评测。PolarDB-X 以其高性能、强可用性和出色的扩展能力在云原生数据库市场中脱颖而出。文章首先介绍了 PolarDB-X 的核心产品优势,包括金融级高可靠性、海量数据处理能力和高效的混合负载处理能力。随后,分析了其分布式架构设计,包括计算节点、存储节点、元数据服务和日志节点的功能分工。评测还涵盖了在 Windows 平台通过 WSL 环境部署 PolarDB-X 的过程,强调了环境准备和工具安装的关键步骤。使用体验方面,PolarDB-X 在处理分布式事务和实时分析时表现稳定,但在网络问题和性能瓶颈上仍需优化。最后,提出了改进建
7104 2
|
7月前
|
关系型数据库 MySQL 数据库
上手体验 PolarDB-X 数据库
PolarDB-X,一款高性能云原生分布式数据库。
151 2

热门文章

最新文章