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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介: 本课程介绍如何通过源码部署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实操课] 04.通过源码部署PolarDB-X企业版
本次课程由PolarDB开源架构师王江颖分享,详细介绍了通过源码部署PolarDB-X企业版的全过程。主要内容包括: 1. **编译基础** 2. **使用源码编译部署PolarDB-X企业版** 3. **演示实例**:通过阿里云ECS进行实际操作演示,从创建用户、赋予权限到最终启动并连接PolarDB-X数据库,展示了完整的部署过程。 4. **总结**
381 0
|
10月前
|
关系型数据库 分布式数据库 数据库
一库多能:阿里云PolarDB三大引擎、四种输出形态,覆盖企业数据库全场景
PolarDB是阿里云自研的新一代云原生数据库,提供极致弹性、高性能和海量存储。它包含三个版本:PolarDB-M(兼容MySQL)、PolarDB-PG(兼容PostgreSQL及Oracle语法)和PolarDB-X(分布式数据库)。支持公有云、专有云、DBStack及轻量版等多种形态,满足不同场景需求。2021年,PolarDB-PG与PolarDB-X开源,内核与商业版一致,推动国产数据库生态发展,同时兼容主流国产操作系统与芯片,获得权威安全认证。
|
7月前
|
存储 关系型数据库 分布式数据库
喜报|阿里云PolarDB数据库(分布式版)荣获国内首台(套)产品奖项
阿里云PolarDB数据库管理软件(分布式版)荣获「2024年度国内首版次软件」称号,并跻身《2024年度浙江省首台(套)推广应用典型案例》。
|
8月前
|
关系型数据库 分布式数据库 数据库
再获殊荣,阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
内存池化技术新突破,阿里云PolarDB蝉联SIGMOD最佳论文奖
|
5月前
|
Cloud Native 关系型数据库 MySQL
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
PolarDB-X 是阿里云推出的云原生分布式数据库,支持PB级存储扩展、高并发访问与数据强一致,助力企业实现MySQL平滑迁移。现已开放免费体验,点击即享高效、稳定的数据库升级方案。
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
|
5月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
12月前
|
存储 NoSQL 关系型数据库
PolarDB开源数据库进阶课17 集成数据湖功能
本文介绍了如何在PolarDB数据库中接入pg_duckdb、pg_mooncake插件以支持数据湖功能, 可以读写对象存储的远程数据, 支持csv, parquet等格式, 支持delta等框架, 并显著提升OLAP性能。
864 2
|
9月前
|
Cloud Native 关系型数据库 分布式数据库
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
阿里云瑶池数据库与沃趣科技将继续深化合作,共同推动国产数据库技术的持续创新与广泛应用,为行业生态的繁荣注入更强劲的技术动力。
阿里云PolarDB与沃趣科技携手打造一体化数据库解决方案,助推国产数据库生态发展
|
7月前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB数据库蝉联SIGMOD最佳论文奖
阿里云PolarDB凭借全球首创基于CXL Switch的分布式内存池技术,在SIGMOD 2025上荣获工业赛道“最佳论文奖”,连续两年蝉联该顶会最高奖项。其创新架构PolarCXLMem打破传统RDMA技术瓶颈,性能提升2.1倍,并已落地应用于内存池化场景,推动大模型推理与多模态存储发展,展现CXL Switch在高速互联中的巨大潜力。
阿里云PolarDB数据库蝉联SIGMOD最佳论文奖

热门文章

最新文章