当前位置: 首页 > news >正文

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 解析器、优化器、执行器等模块。负责数据…...

Redis - 全局ID生成器 RedisIdWorker

文章目录 Redis - 全局ID生成器 RedisIdWorker一、引言二、实现原理三、代码实现代码说明 四、使用示例示例说明 五、总结 Redis - 全局ID生成器 RedisIdWorker 一、引言 在分布式系统中,生成全局唯一ID是一个常见的需求。传统的自增ID生成方式在分布式环境下容易出…...

【Vitest】单元测试

文章目录 测试:Vitest一、安装二、断言三、回调测试四、对象方法五、模拟第三库 测试:Vitest 一、安装 npm install vitest创建文件:example.test.ts 运行测试: npx vitest example二、断言 import { expect, test } from vi…...

达梦数据库从单主模式转换为主备模式

目录标题 达梦数据库单主转主备配置笔记前期准备服务器环境数据库安装磁盘空间 流程流程图说明基于脱机备份方式的单实例转主备流程图详细步骤说明 详细步骤1. 检查主库归档模式2. 配置主库配置文件dm.ini 文件dmmal.ini 文件dmarch.ini 文件 3. 备份主库数据库4. 备库配置新建…...

【Elasticsearch】nested聚合

在 Elasticsearch 中,嵌套聚合(nestedaggregation)的语法形式用于对嵌套字段(nestedfields)进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型,用于存储数组中的对象,这些对象需要独…...

虹科波形小课堂 | 三分钟掌握车辆相对压缩测试!不拆发动机、不测缸压就能判断故障缸!

不拆发动机、不测缸压,只测个电流也能知道哪个缸压缩有问题?没错!做个相对压缩测试,测下起动电流就行,简单又实用!今天,从原理到方法,几分钟教会你! 我们都知道&#xf…...

【玩转全栈】--创建一个自己的vue项目

目录 vue介绍 创建vue项目 vue页面介绍 element-plus组件库 启动项目 vue介绍 Vue.js 是一款轻量级、易于上手的前端 JavaScript 框架,旨在简化用户界面的开发。它采用了响应式数据绑定和组件化的设计理念,使得开发者可以通过声明式的方式轻松管理数据和…...

基于 Spring Cloud + Spring AI + VUE 的知识助理平台介绍以及问题

前言(一些废话) 在看这篇文章的各位大佬,感谢你们留出几分钟时间,来看这个产品介绍,其实重点说实话,不是这个产品怎么样。而是在最后有一个郁结在心里的几个问题,希望大佬们能给出一些建议。万…...

< 自用文儿 > 下载 MaxMind GeoIP Databases 对攻击的 IP 做 地理分析

起因 两个 VPM/VPS,安装了 fail2ban 去拦截密码穷举攻击。每天的记录都在增长,以前复制屏幕输出就行,一屏的内容还容易粘贴出来的。昨天已经过 500 条,好奇 fail2ban 是如何存储这些内容的?就发现它在使用 SQLite3 数…...

前端知识速记:重绘和回流

前端知识速记:重绘和回流 一、什么是重绘与回流 1. 重绘(Repaint) 重绘是指当元素的外观发生变化时,浏览器需要重新绘制这些元素。由于这些操作不会改变元素占据的空间,因此不需要进行回流。常见的重绘操作包括&…...

webrtc peerconnection_client peerconnection_server 连接失败问题解决 win10 win11

0 常见问题 (1) webrtc peerconnection_client 连接 peerconnection_server 无连接列表 (2)连接导致崩溃debug状态下因为这个断言 RTC_DCHECK_RUN_ON(&capture_checker_); 1 在 peerconnection\client\main.cc 当中 定义类 class CustomSock…...

【C++】STL——list的使用与底层实现

目录 💕1.带头双向链表List 💕2.list用法介绍 💕3.list的初始化 💕4.size函数与resize函数 💕5.empty函数 💕6.front函数与back函数 💕7.push_front,push_back,pop_front,pop_back函数…...

iOS 音频录制、播放与格式转换

iOS 音频录制、播放与格式转换:基于 AVFoundation 和 FFmpegKit 的实现 在 iOS 开发中,音频处理是一个非常常见的需求,比如录音、播放音频、音频格式转换等。本文将详细解读一段基于 AVFoundation 和 FFmpegKit 的代码,展示如何实现音频录制、播放以及 PCM 和 AAC 格式之间…...

【PyTorch】解决Boolean value of Tensor with more than one value is ambiguous报错

理解并避免 PyTorch 中的 “Boolean value of Tensor with more than one value is ambiguous” 错误 在深度学习和数据科学领域,PyTorch 是一个强大的工具,它允许我们以直观和灵活的方式处理张量(Tensor)。然而,即使…...

Jsoup库具体怎么用?

Jsoup 是一个非常强大的 Java 库,用于解析和操作 HTML 文档。它提供了丰富的功能,包括发送 HTTP 请求、解析 HTML 内容、提取数据、修改 HTML 元素等。以下将详细介绍 Jsoup 的基本用法和一些高级功能,帮助你更好地使用 Jsoup 进行网络爬虫开…...

python:如何播放 .spx 声音文件

.spx 是 Speex音频编解码器的文件扩展名,它是一种开源的、免费的音频编解码器,主要用于语音压缩和语音通信领域。spx 文件通常用于语音记录、VoIP应用、语音信箱等场景。 .mp3 是一种广泛使用的音频格式,它采用了有损压缩算法,可…...

HTML学习笔记(6)

利用dom操作实现&#xff0c;对一个表格的增删改查 代码如下&#xff1a; todolist.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, …...

走向基于大语言模型的新一代推荐系统:综述与展望

HightLight 论文题目&#xff1a;Towards Next-Generation LLM-based Recommender Systems: A Survey and Beyond作者机构&#xff1a;吉林大学、香港理工大学、悉尼科技大学、Meta AI论文地址&#xff1a; https://arxiv.org/abs/2410.1974 基于大语言模型的下一代推荐系统&…...

【DeepSeek-R1 +1.5B】2060显卡ollama本地部署+open-webui界面使用

https://github.com/open-webui/open-webui Deepseek开源R1系列模型&#xff0c;纯RL助力推理能力大跃升&#xff01; 2060显卡下使用deepseek-r1-1.5B deepseek开源小模型需要的显存&#xff08;根据显存来选模型大小&#xff09; &#xff0c;图from: DeepSeek本地部署&…...

《翻转组件库之发布》

背景 继《翻转组件库之打包》_杨晓风-linda的博客-CSDN博客之后&#xff0c;组件库已经可以正常构建&#xff0c;那如何像elementUI等组件库那样&#xff0c;用npm安装&#xff0c;按照既定的用法使用即可呢&#xff1f;本篇便为你揭晓 资料相关 1、npm官方文档&#xff1a;…...

嵌入式Linux SPI转CAN-FD扩展实战:基于i.MX8MP与MCP2518FD

1. 项目概述&#xff1a;当开发板的CAN口不够用时在嵌入式产品开发中&#xff0c;尤其是工业控制、汽车电子或机器人领域&#xff0c;CAN总线因其高可靠性和实时性被广泛应用。飞凌嵌入式的OKMX8MP-C开发板基于强大的i.MX8M Plus处理器&#xff0c;原生提供了两路CAN-FD总线&am…...

基于Python与OpenCV的屏幕视觉自动化工具开发实战

1. 项目概述与核心价值 最近在折腾一个挺有意思的玩意儿&#xff0c;叫 screen-vision 。这名字听起来有点玄乎&#xff0c;但说白了&#xff0c;它就是一个 基于计算机视觉的屏幕内容实时分析与自动化工具 。你可以把它理解为一个“数字眼睛”&#xff0c;它能持续盯着你…...

J-Link V8变砖别慌!手把手教你用SAM-BA 2.14救活AT91SAM7S64芯片

J-Link V8救砖实战&#xff1a;用SAM-BA 2.14拯救AT91SAM7S64芯片全指南 当你的J-Link V8调试器突然"变砖"——LED灯熄灭、电脑无法识别、所有功能瘫痪时&#xff0c;那种感觉就像外科医生在手术台上突然失去所有仪器。但别急着宣布它的"死亡"&#xff0c;…...

用STM32CubeMX和HAL库,5分钟搞定Nooploop TOFSense激光测距模块的串口通信

基于STM32CubeMX与HAL库的TOFSense激光测距快速开发指南 激光测距技术在工业自动化、机器人导航等领域应用广泛&#xff0c;而Nooploop的TOFSense模块凭借其高精度和小型化特点&#xff0c;成为许多嵌入式开发者的首选。本文将手把手带你使用STM32CubeMX和HAL库&#xff0c;在5…...

淘金币自动化脚本终极指南:如何每天5分钟完成淘宝全任务,节省20分钟宝贵时间

淘金币自动化脚本终极指南&#xff1a;如何每天5分钟完成淘宝全任务&#xff0c;节省20分钟宝贵时间 【免费下载链接】taojinbi 淘宝淘金币自动执行脚本&#xff0c;包含蚂蚁森林收取能量&#xff0c;芭芭农场全任务&#xff0c;解放你的双手 项目地址: https://gitcode.com/…...

深兰科技签约乌兹别克斯坦智慧城市项目,推动中国AI出海规模化

2026年5月11日&#xff0c;深兰人工智能科技(上海)股份有限公司与乌兹别克斯坦合作方在上海张江总部举行签约仪式。双方将围绕乌兹别克斯坦新塔什干新城(Yangi Toshkent)智慧城市建设展开合作&#xff0c;深兰科技通过控股乌兹别克项目公司&#xff0c;围绕智慧城市、智慧住宅、…...

3分钟告别Armoury Crate:华硕笔记本轻量化控制终极指南

3分钟告别Armoury Crate&#xff1a;华硕笔记本轻量化控制终极指南 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, E…...

Path of Building PoE2深度技术解析:3大核心系统架构与实战优化指南

Path of Building PoE2深度技术解析&#xff1a;3大核心系统架构与实战优化指南 【免费下载链接】PathOfBuilding-PoE2 项目地址: https://gitcode.com/GitHub_Trending/pa/PathOfBuilding-PoE2 Path of Building PoE2作为流放之路2社区的顶级构建计算工具&#xff0c;…...

Java SSRF漏洞深度解析:从URLConnection到安全防御实战

1. 项目概述&#xff1a;从一次内部安全审计说起最近在帮一个朋友的公司做代码安全审计&#xff0c;他们有一个对外提供数据聚合服务的Java Web应用。在翻看一个看似平平无奇的“网页内容抓取”功能模块时&#xff0c;我一眼就看到了那段熟悉的、几乎每个Java开发者都写过的代码…...

NotebookLM智能体插件开发:连接AI笔记与外部工具的实现指南

1. 项目概述&#xff1a;当AI笔记助手学会“动手”最近在折腾AI应用开发的朋友&#xff0c;可能都注意到了GitHub上一个挺有意思的项目&#xff1a;amp-rh/notebooklm-agent-plugin。乍一看名字&#xff0c;它像是Google那个实验性AI笔记工具NotebookLM的一个插件。但如果你深入…...