Polardb三节点集群部署安装--附虚拟机
1. 架构

PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由4个核心组件组成。
- 计算节点(CN, Compute Node)
计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据分布式路由、计算及动态调度,负责分布式事务 2PC 协调、全局二级索引维护等,同时提供 SQL 限流、三权分立等企业级特性。
- 存储节点(DN, Data Node)
存储节点负责数据的持久化,基于多数派 Paxos 协议提供数据高可靠、强一致保障,同时通过 MVCC 维护分布式事务可见性。
- 元数据服务(GMS, Global Meta Service)
元数据服务负责维护全局强一致的 Table/Schema, Statistics 等系统 Meta 信息,维护账号、权限等安全信息,同时提供全局授时服务(即 TSO)。
- 日志节点(CDC, Change Data Capture)
日志节点提供完全兼容 MySQL Binlog 格式和协议的增量订阅能力,提供兼容 MySQL Replication 协议的主从复制能力。
2. 安装
2.1. 环境规划
| 操作系统 | ip | 主机名 | |
| 华为欧拉Euler | 192.168.50.56 | db01 | Leader |
| 华为欧拉Euler | 192.168.50.57 | db02 | Follower |
| 华为欧拉Euler | 192.168.50.58 | db03 | Follower |
2.2. RPM 包下载
官方下载地址:Releases · polardb/polardbx-engine · GitHub
百度网盘:
通过网盘分享的文件:t-polardbx-engine-8.4.19-20241112.el7.x86_64.rpm
链接: 百度网盘 请输入提取码 提取码: vbdi
[root@db01 opt]# ls -lst t*
651356 -rw-r--r-- 1 root root 666980944 2月 5 14:55 t-polardbx-engine-8.4.19-20241112.el7.x86_64.rpm
[root@db01 opt]#
2.3. RPM 包安装(root 用户,三个节点执行)
2.3.1. yum 配置(root 用户,三个节点执行)
mount /dev/cdrom /mnt
cd /etc/yum.repos.d
mkdir bk
mv *.repo bk/
echo "[EL]" >> /etc/yum.repos.d/hefei.repo
echo "name =Linux 7.x DVD" >> /etc/yum.repos.d/hefei.repo
echo "baseurl=file:///mnt" >> /etc/yum.repos.d/hefei.repo
echo "gpgcheck=0" >> /etc/yum.repos.d/hefei.repo
echo "enabled=1" >> /etc/yum.repos.d/hefei.repo
cat /etc/yum.repos.d/hefei.repo
2.3.2. 执行安装(root 用户,三个节点执行)
[root@db01 opt]# yum install -y t-polardbx-engine-8.4.19-20241112.el7.x86_64.rpm
无法连接BC-Linux的YUM源服务器。
上次元数据过期检查:0:01:30 前,执行于 2025年02月05日 星期三 14时59分33秒。
依赖关系解决。
=========================================================================================================================================================Package Architecture Version Repository Size
=========================================================================================================================================================
安装:t-polardbx-engine x86_64 8.4.19-20241112.el7 @commandline 636 M事务概要
=========================================================================================================================================================
安装 1 软件包总计:636 M
安装大小:2.8 G
下载软件包:
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务准备中 : 1/1运行脚本: t-polardbx-engine-8.4.19-20241112.el7.x86_64 1/1安装 : t-polardbx-engine-8.4.19-20241112.el7.x86_64 1/1运行脚本: t-polardbx-engine-8.4.19-20241112.el7.x86_64 1/1
Copying /u01/xcluster80_20241112_current to /u01/xcluster80
Copying /u01/xcluster80_20241112_current to /u01/xcluster80_20241112验证 : t-polardbx-engine-8.4.19-20241112.el7.x86_64 1/1已安装:t-polardbx-engine-8.4.19-20241112.el7.x86_64完毕!
[root@db01 opt]#
2.3.3. 启动 DN(root 用户,三个节点执行,注意server_id 不能一样)
# 创建并切换到 polarx 用户
useradd -ms /bin/bash polarx
echo "polarx:polardb@2025" | chpasswd
echo "polarx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - polarx# 创建必要目录
mkdir polardbx-engine
cd polardbx-engine && mkdir log mysql run data tmp# 准备一份 my.cnf 文件,可以参考末尾的模板,放置于当前目录
vi my.cnf###### my.cnf 模板
[mysqld]
basedir = /opt/polardbx_engine
log_error_verbosity = 2
default_authentication_plugin = mysql_native_password
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = mysql-binlog
binlog_format = row
binlog_row_image = FULL
master_info_repository = TABLE
relay_log_info_repository = TABLE
# 忽略大小写
lower_case_table_names=1# change me if needed
datadir = /home/polarx/polardbx-engine/data
tmpdir = /home/polarx/polardbx-engine/tmp
socket = /home/polarx/polardbx-engine/tmp.mysql.sock
log_error = /home/polarx/polardbx-engine/log/alert.log
port = 4886
cluster_id = 1234
cluster_info = 127.0.0.1:14886@1
server_id = 2712347955[mysqld_safe]
pid_file = /home/polarx/polardbx-engine/run/mysql.pid
###### my.cnf 模板注意:如果以三副本模式运行,my.cnf 中的 server_id 参数在三个副本节点需要配置为不同的值---单节点执行(这里是集群,不执行下面,只是记录)
----# 初始化,如果 my.cnf 不在当前目录,请将下述命令的 my.cnf 改成绝对路径
----/opt/polardbx_engine/bin/mysqld --defaults-file=my.cnf --initialize-insecure----# 启动
---/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf &
2.4. 高可用部署
在 3 台机器上,按前述步骤,安装 RPM 后,准备好 my.cnf 和目录 (如果有任何步骤失败,请完全清理 log mysql run data tmp 等目录,重新创建。)。 然后在 3 个机器上,分别按如下方式启动:
su - polarx
cd polardbx-engine# 192.168.50.56 上执行
/opt/polardbx_engine/bin/mysqld --defaults-file=my.cnf \
--cluster-info='192.168.50.56:14886;192.168.50.57:14886;192.168.50.58:14886@1' \
--initialize-insecure/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf \
--cluster-info='192.168.50.56:14886;192.168.50.57:14886;192.168.50.58:14886@1' \
&# 192.168.50.57 上执行
/opt/polardbx_engine/bin/mysqld --defaults-file=my.cnf \
--cluster-info='192.168.50.56:14886;192.168.50.57:14886;192.168.50.58:14886@2' \
--initialize-insecure/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf \
--cluster-info='192.168.50.56:14886;192.168.50.57:14886;192.168.50.58:14886@2' \
&# 192.168.50.58 上执行
/opt/polardbx_engine/bin/mysqld --defaults-file=my.cnf \
--cluster-info='192.168.50.56:14886;192.168.50.57:14886;192.168.50.58:14886@3' \
--initialize-insecure/opt/polardbx_engine/bin/mysqld_safe --defaults-file=my.cnf \
--cluster-info='192.168.50.56:14886;192.168.50.57:14886;192.168.50.58:14886@3' \
&
稍等片刻,即可登录数据库。如果直接使用本文的 my.cnf 模板,可以用mysql -h127.0.0.1 -P4886 -uroot 登录数据库。 (需要预先在机器上安装 mysql 客户端,centos 系统可以使用 yum install -y mariadb安装。)
[root@db01 ~]# mysql -h127.0.0.1 -P4886 -uroot
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 15
Server version: 8.0.32-X-Cluster-8.4.19-20241112 Source distributionCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]>
数据库启动完成后,我们登录数据库,验证一下集群的状态。(需要在 Leader 节点执行)
MySQL [(none)]> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL;
+-----------+---------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
| SERVER_ID | IP_PORT | MATCH_INDEX | NEXT_INDEX | ROLE | HAS_VOTED | FORCE_SYNC | ELECTION_WEIGHT | LEARNER_SOURCE | APPLIED_INDEX | PIPELINING | SEND_APPLIED |
+-----------+---------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
| 1 | 192.168.50.56:14886 | 2 | 0 | Leader | Yes | No | 5 | 0 | 1 | No | No |
| 2 | 192.168.50.57:14886 | 2 | 3 | Follower | Yes | No | 5 | 0 | 2 | Yes | No |
| 3 | 192.168.50.58:14886 | 2 | 3 | Follower | Yes | No | 5 | 0 | 2 | Yes | No |
+-----------+---------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
3 rows in set (0.001 sec)MySQL [(none)]>
MySQL [(none)]> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL \G
*************************** 1. row ***************************SERVER_ID: 1CURRENT_TERM: 127CURRENT_LEADER: 192.168.50.56:14886COMMIT_INDEX: 2LAST_LOG_TERM: 127LAST_LOG_INDEX: 2ROLE: LeaderVOTED_FOR: 1LAST_APPLY_INDEX: 1
SERVER_READY_FOR_RW: YesINSTANCE_TYPE: Normal
1 row in set (0.001 sec)
2.4.1. 指定IP切换Leader
call dbms_consensus.change_leader("192.168.50.57:14886");MySQL [(none)]> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL;
ERROR 2013 (HY000): Lost connection to MySQL server during query --- 需要在 Leader 节点执行
MySQL [(none)]>--Leader 节点执行 192.168.50.57上执行
MySQL [(none)]> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 21
Current database: *** NONE ***+-----------+---------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
| SERVER_ID | IP_PORT | MATCH_INDEX | NEXT_INDEX | ROLE | HAS_VOTED | FORCE_SYNC | ELECTION_WEIGHT | LEARNER_SOURCE | APPLIED_INDEX | PIPELINING | SEND_APPLIED |
+-----------+---------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
| 1 | 192.168.50.56:14886 | 3 | 4 | Follower | Yes | No | 5 | 0 | 3 | Yes | No |
| 2 | 192.168.50.57:14886 | 3 | 0 | Leader | Yes | No | 5 | 0 | 2 | No | No |
| 3 | 192.168.50.58:14886 | 3 | 4 | Follower | Yes | No | 5 | 0 | 3 | Yes | No |
+-----------+---------------------+-------------+------------+----------+-----------+------------+-----------------+----------------+---------------+------------+--------------+
3 rows in set (0.003 sec)MySQL [(none)]>
2.5. 数据库操作
2.5.1. 数据插入测试
CREATE DATABASE db1;
USE db1;
CREATE TABLE tb1 (id int);
INSERT INTO tb1 VALUES (0), (1), (2);MySQL [db1]> select * from tb1;
+------+
| id |
+------+
| 0 |
| 1 |
| 2 |
+------+
3 rows in set (0.001 sec)
2.5.2. 修改数据库的密码
alter user root@localhost identified by "123456";[root@db01 ~]# mysql -h127.0.0.1 -P4886 -uroot
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)[root@db01 ~]# mysql -h127.0.0.1 -P4886 -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MySQL connection id is 23
Server version: 8.0.32-X-Cluster-8.4.19-20241112 Source distributionCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.MySQL [(none)]>
安装的虚拟机:
百度网盘 请输入提取码 提取码: grgi
相关文章:
Polardb三节点集群部署安装--附虚拟机
1. 架构 PolarDB-X 采用 Shared-nothing 与存储计算分离架构进行设计,系统由4个核心组件组成。 计算节点(CN, Compute Node) 计算节点是系统的入口,采用无状态设计,包括 SQL 解析器、优化器、执行器等模块。负责数据…...
java s7接收Byte字节,接收word转16位二进制
1图: 2.图: try {List list getNameList();//接收base64S7Connector s7Connector S7ConnectorFactory.buildTCPConnector().withHost("192.168.46.52").withPort(102).withTimeout(1000) //连接超时时间.withRack(0).withSlot(3).build()…...
挑战项目 --- 微服务编程测评系统(在线OJ系统)
一、前言 1.为什么要做项目 面试官要问项目,考察你到底是理论派还是实战派? 1.希望从你的项目中看到你的真实能力和对知识的灵活运用。 2.展示你在面对问题和需求时的思考方式及解决问题的能力。 3.面试官会就你项目提出一些问题,或扩展需求…...
基于springboot的体质测试数据分析及可视化设计
作者:学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等 文末获取“源码数据库万字文档PPT”,支持远程部署调试、运行安装。 项目包含: 完整源码数据库功能演示视频万字文档PPT 项目编码࿱…...
java-重载与重写
介绍 在 Java 中,重载(Overloading) 和 重写(Overriding) 是两个重要的概念,它们都与方法有关,但它们的应用场景和行为完全不同。 通过理解重载和重写的区别,可以更好地设计类的继承…...
使用C++构建一个优先级队列
1.优先级队列的介绍 优先级队列是一种特殊的队列数据结构,它是队列,但又不完全是,因为它要将装载的数据进行优先级排序,找到一个最大或者最小优先级的元素,下一次出队列的元素就是这个元素,所以说它不完全是…...
linux驱动开发之字符设备与总线设备驱动模型的区别与联系
Linux驱动开发核心概念解析 1. 字符设备(Character Device) 定义与特点: 以字节流形式进行数据交换,适用于顺序访问的设备(如键盘、鼠标、串口)。 用户空间通过设备文件(如/dev/xxx࿰…...
AI deepseek对数据治理的影响
DEEPSEEK作为智能一款助手,在数据治理体系中具有深远的影响。它通过提供智能化、自动化和高效化的解决方案,推动企业在数据治理变革与领域的优化。以下是EPSEEK对数据治理体系影响的多角度分析: 一、战略层面:推动数据治理目标的…...
DeepSeek各版本说明与优缺点分析
DeepSeek各版本说明与优缺点分析 DeepSeek是最近人工智能领域备受瞩目的一个语言模型系列,其在不同版本的发布过程中,逐步加强了对多种任务的处理能力。本文将详细介绍DeepSeek的各版本,从版本的发布时间、特点、优势以及不足之处࿰…...
iOS 老项目适配 #Preview 预览功能
前言 iOS 开发者 最憋屈的就是UI 布局慢,一直以来没有实时预览功能,虽然swiftUI 早就支持了,但是目前主流还是使用UIKit在布局,iOS 17 苹果推出了 #Preview 可以支持UIKit 实时预览,但是仅仅是 iOS 17,老项目怎么办呢?于是就有了这篇 老项目适配 #Preview 预览 的文章,…...
在ubuntu22.04上先部署docker,再编译安装kamailio,附详细操作流程及docker和makailio的版本号
以下是在Ubuntu 22.04上部署Docker并编译安装Kamailio的详细操作流程,包含版本号信息: 一、部署Docker(版本:24.0.7) 更新系统包 sudo apt update && sudo apt upgrade -y安装依赖工具 sudo apt install -y ap…...
蓝桥杯试题:排序
一、问题描述 给定 nn 个正整数 a1,a2,…,ana1,a2,…,an,你可以将它们任意排序。现要将这 nn 个数字连接成一排,即令相邻数字收尾相接,组成一个数。问,这个数最大可以是多少。 输入格式 第一行输入一个正整数 nnÿ…...
C++常用拷贝和替换算法
算法简介: copy // 容器内指定的元素拷贝到另一容器replace // 将容器内指定范围的旧元素改为新元素replace_if // 容器内指定范围满足条件的元素替换为新元素swap //互换两个容器的元素 1. copy 功能描述: 将容器内指定范围的数据拷贝到另一容器中函…...
2024年12月 Scratch 图形化(三级)真题解析 中国电子学会全国青少年软件编程等级考试
202412 Scratch 图形化(三级)真题解析 中国电子学会全国青少年软件编程等级考试 一、选择题(共18题,共50分) 第 1 题 气温和对应的穿衣建议如下表所示,下列选项能正确给出穿衣建议的是?( ) A. …...
C# 中记录(Record)详解
从C#9.0开始,我们有了一个有趣的语法糖:记录(record) 为什么提供记录? 开发过程中,我们往往会创建一些简单的实体,它们仅仅拥有一些简单的属性,可能还有几个简单的方法,比如DTO等等…...
【MQTT协议 03】 抓包分析
一、MQTT测试工具 1、mqtt服务器 emqx 2、mqtt 客户端 mqttx 3、抓包工具 wireshark 搭建参考 【MQTT 协议 01】MQTT 服务器搭建_mqtt服务器搭建-CSDN博客 二、报文测试 2.1、CONNECT (客户端连接) 2.1.1、抓包 2.1.2、解析 #16进制表示 10300…...
深度学习-100-RAG技术之最简单的RAG系统概念和效果优化提升方向
文章目录 1 数据是基础2 Naive RAG(最简单的RAG系统)2.1 RAG周边技术2.2 标准的RAG流程2.3 RAG的潜在问题2.4 如何应对RAG的问题3 优化方向3.1 原始数据创建/准备3.1.1 易于理解的文本3.1.2 提高数据质量3.2 预检索优化3.2.1 分块优化3.2.2 添加元数据3.2.3 选对嵌入模型3.2.4 …...
Redis面试题总结(题目来源JavaGuide)
Redis 基础 问题1:Redis 有什么作用?为什么要用 Redis/为什么要用缓存? Redis 是一个开源的高性能键值对数据库,它的作用主要体现在以下几个方面: 缓存:Redis 常被用作缓存系统,可以将频繁访问的数据存储…...
Django 多数据库
django 支持项目连接多个数据库 DATABASES = {default: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxxx,HOST: xxxx,PORT: 3306,},bak: {ENGINE: django.db.backends.mysql,NAME: xxx,USER: root,"PASSWORD": xxxx,HOST: xxx…...
为AI聊天工具添加一个知识系统 之87 详细设计之28 Derivation 统一建模元模型 之1
文本要点 要点 Derivation 统一建模元模型 Derivation 统一建模元模型:意识原型的祖传代码,即支撑 程序框架的 符号学中的 自然和逻辑树。 这棵树的雏形中描述了三种建模工件:语用钩子,语法糖和语义胶水。 三种工件对应的三“…...
手机上运行AI大模型(Deepseek等)
最近deepseek的大火,让大家掀起新一波的本地部署运行大模型的热潮,特别是deepseek有蒸馏的小参数量版本,电脑上就相当方便了,直接ollamaopen-webui这种类似的组合就可以轻松地实现,只要硬件,如显存…...
电商项目-分布式事务(四)基于消息队列实现分布式事务
基于消息队列实现分布式事务,实现消息最终一致性 如何基于消息队列实现分布式事务? 通过消息队列实现分布式事务的话,可以保证当前数据的最终一致性。实现思路:将大的分布式事务,进行拆分,拆分成若干个小…...
leetcode_双指针 160.相交链表
160.相交链表 给你两个单链表的头节点 headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 思路: 本题中,交点不是数值相等,而是指针相等 双指针遍历两遍后必定相遇,…...
深入理解浮点数:单精度、双精度、半精度和BFloat16详解
文章目录 深入理解浮点数:单精度、双精度、半精度和BFloat16详解 🔢简介 🌟1. 单精度(Single Precision)🎯应用场景 🚀 2. 双精度(Double Precision)💪应用场…...
Verilog基础(三):过程
过程(Procedures) - Always块 – 组合逻辑 (Always blocks – Combinational) 由于数字电路是由电线相连的逻辑门组成的,所以任何电路都可以表示为模块和赋值语句的某种组合. 然而,有时这不是描述电路最方便的方法. 两种always block是十分有用的: 组合逻辑: always @(…...
前端知识速记:POST和GET
前端知识速记:POST和GET请求的区别 一、GET请求概述 GET请求是一种用于获取服务器资源的请求方式。**使用GET请求时,数据通过URL传递,适合用于获取数据而不修改资源。**以下是GET请求的一些基本特征: 数据附在URL后面ÿ…...
【Java】MyBatis动态SQL
在MyBatis中使用动态SQL语句。 动态SQL是指根据参数数据动态组织SQL的技术。 生活中的案例: 在京东上买东西时,用户搜索商品,可以选择筛选条件,比如品牌,价格,材质等,也可以不使用筛选条件。这时…...
java进阶知识点
java回收机制 浅谈java中的反射 依赖注入的简单理解 通过接口的引用和构造方法的表达,将一些事情整好了反过来传给需要用到的地方~ 这样做得好处:做到了单一职责,并且提高了复用性,解耦了之后,任你如何实现…...
Java/Kotlin HashMap 等集合引发 ConcurrentModificationException
在对一些非并发集合同时进行读写的时候,会抛出 ConcurrentModificationException 异常产生示例 示例一(单线程): 遍历集合时候去修改 抛出 ConcurrentModificationException 的主要原因是当你在遍历一个集合(如 Map…...
拍照对比,X70 PRO与X90 PRO+的细节差异
以下是局部截图(上X70P下X90PP) 对比1 这里看不出差异。 对比2 X90PP的字明显更清楚。 对比3 中下的字,X90PP显然更清楚。...
