[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分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
打赏
0
1
1
0
1005
分享
相关文章
PolarDB实操课] 04.通过源码部署PolarDB-X企业版
本次课程由PolarDB开源架构师王江颖分享,详细介绍了通过源码部署PolarDB-X企业版的全过程。主要内容包括: 1. **编译基础** 2. **使用源码编译部署PolarDB-X企业版** 3. **演示实例**:通过阿里云ECS进行实际操作演示,从创建用户、赋予权限到最终启动并连接PolarDB-X数据库,展示了完整的部署过程。 4. **总结**
让PolarDB更了解您--PolarDB云原生数据库核心功能体验馆
让PolarDB更了解您——PolarDB云原生数据库核心功能体验馆,由阿里云数据库产品事业部负责人宋震分享。内容涵盖PolarDB技术布局、开源进展及体验馆三大部分。技术布局包括云计算加速数据库演进、数据处理需求带来的变革、软硬协同优化等;开源部分介绍了兼容MySQL和PostgreSQL的两款产品;体验馆则通过实际操作让用户直观感受Serverless、无感切换、SQL2Map等功能。
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶,邀请好友完成更有机会获得​小米Watch S3、小米体重称​等诸多好礼!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
瑶池数据库大讲堂|PolarDB HTAP:为在线业务插上实时分析的翅膀
瑶池数据库大讲堂介绍PolarDB HTAP,为在线业务提供实时分析能力。内容涵盖MySQL在线业务的分析需求与现有解决方案、PolarDB HTAP架构优化、针对分析型负载的优化(如向量化执行、多核并行处理)及近期性能改进和用户体验提升。通过这些优化,PolarDB HTAP实现了高效的数据处理和查询加速,帮助用户更好地应对复杂业务场景。
瑶池数据库微课堂 | PolarDB Serverless弹性&价格力观测
瑶池数据库微课堂介绍阿里云PolarDB Serverless的弹性与性价比优势。通过瑶池解决方案体验馆,用户可免费实操,直观感受Serverless的秒级弹性及超高性价比。内容涵盖Serverless概念、操作步骤、压测演示及性能曲线分析,展示PolarDB在不同负载下的自动扩展能力。适合希望了解云数据库弹性和成本效益的技术人员。
瑶池数据库微课堂|PolarDB/RDS+ADB Zero-ETL:一种免费、易用、高效的数据同步方式
瑶池数据库微课堂介绍阿里云PolarDB/RDS与ADB的Zero-ETL功能,实现免费、易用、高效的数据同步。内容涵盖OLTP与OLAP的区别、传统ETL存在的问题及Zero-ETL的优势(零成本、高效同步),并演示了从RDS MySQL到AnalyticDB MySQL的具体操作步骤。未来将优化和迭代此功能,提供更好的用户体验。
1月17日|阿里云云谷园区,PolarDB V2.0技术沙龙,畅聊国产数据库
为了助力国产化项目顺利推进,阿里云邀请企业开发者和数据库负责人到云谷园区,与PolarDB V2.0技术专家面对面交流。扫描海报二维码报名,我们将根据信息为您申请入园。欢迎参与,共同探讨PolarDB的最新技术和应用!
基于PolarDB的图分析:通过DTS将其它数据库的数据表同步到PolarDB的图
本文介绍了使用DTS任务将数据从MySQL等数据源实时同步到PolarDB-PG的图数据库中的步骤.
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等