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

PolarDB 高可用集群搭建

PolarDB 高可用集群搭建

准备三台机器(注意每个节点需配置一致)
192.168.142.23
192.168.142.24
192.168.142.25

1、关闭透明大页
cat /sys/kernel/mm/transparent_hugepage/enabled
如返回结果为always madvise [never]则表示已关闭透明大页。
否则执行以下操作以关闭透明大页。
echo never > /sys/kernel/mm/transparent_hugepage/enabled
关闭防火墙:
systemctl disable firewalld
systemctl stop firewalld

2、安装主程序
[root@standby PolarDB]# yum -y install t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64.rpm
Loaded plugins: ulninfo
Examining t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64.rpm: t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64
Marking t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package t-polardbx-engine.x86_64 0:8.4.19-20250825_17558853.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=====================================================================================================================================================================================
Package Arch Version Repository Size
=====================================================================================================================================================================================
Installing:
t-polardbx-engine x86_64 8.4.19-20250825_17558853.el7 /t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64 2.8 G

Transaction Summary
=====================================================================================================================================================================================
Install 1 Package

Total size: 2.8 G
Installed size: 2.8 G
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
Installing : t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64 1/1
Copying /u01/xcluster80_20250825_current to /u01/xcluster80
Copying /u01/xcluster80_20250825_current to /u01/xcluster80_20250825
Verifying : t-polardbx-engine-8.4.19-20250825_17558853.el7.x86_64 1/1

Installed:
t-polardbx-engine.x86_64 0:8.4.19-20250825_17558853.el7

Complete!
注:安装完成后,默认会创建/u01/目录,可以在u01目录下看到对应的数据库二进制文件,如下。
[root@standby PolarDB]# cd /u01/
[root@standby u01]# ll
drwxr-xr-x 11 root root 4096 Apr 14 11:59 xcluster80
drwxr-xr-x 11 root root 4096 Apr 14 11:59 xcluster80_20250825


3、创建并切换到 polardbx 用户
useradd -ms /bin/bash polardbx
echo "polardbx:polardbx" | chpasswd
echo "polardbx ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers
su - polardbx


4、配置初始化参数
确认当前操作系统用户是 polardbx 用户,而不是 root 用户。

准备文件目录(建议将数据存放到单独的存储路径下):
mkdir -p /u01/polardbx-engine
chown -R polardbx:polardbx /u01/polardbx-engine
su - polardbx
cd /u01/polardbx-engine && mkdir log mysql run data tmp

准备配置文件(/u01/polardbx-engine/my.cnf),创建文件 touch my.cnf,并粘贴如下文本:
节点一:
$ vi my.cnf
[mysqld]
basedir = /u01/xcluster80
datadir = /u01/polardbx-engine/data
tmpdir = /u01/polardbx-engine/tmp
socket = /u01/polardbx-engine/tmp/mysql.sock
log_error = /u01/polardbx-engine/log/alert.log

port = 4886
default_authentication_plugin = mysql_native_password
lower_case_table_names = 1
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = 1
sync_binlog=1
innodb_flush_log_at_trx_commit=1
log_error_verbosity = 3
mysqlx=0
enable_polarx_rpc=0
loose-mysqlx-ssl=DISABLED
ssl=0

cluster_id = 1749112302
cluster_info = 192.168.142.23:14886@1
server_id = 1001

[mysqld_safe]
pid_file = /u01/polardbx-engine/run/mysql.pid

节点二:
$ vi my.cnf
[mysqld]
basedir = /u01/xcluster80
datadir = /u01/polardbx-engine/data
tmpdir = /u01/polardbx-engine/tmp
socket = /u01/polardbx-engine/tmp/mysql.sock
log_error = /u01/polardbx-engine/log/alert.log

port = 4886
default_authentication_plugin = mysql_native_password
lower_case_table_names = 1
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = 1
sync_binlog=1
innodb_flush_log_at_trx_commit=1
log_error_verbosity = 3
mysqlx=0
enable_polarx_rpc=0
loose-mysqlx-ssl=DISABLED
ssl=0

cluster_id = 1749112302
cluster_info = 192.168.142.24:14886@2
server_id = 1002

[mysqld_safe]
pid_file = /u01/polardbx-engine/run/mysql.pid

节点三:
$ vi my.cnf
[mysqld]
basedir = /u01/xcluster80
datadir = /u01/polardbx-engine/data
tmpdir = /u01/polardbx-engine/tmp
socket = /u01/polardbx-engine/tmp/mysql.sock
log_error = /u01/polardbx-engine/log/alert.log

port = 4886
default_authentication_plugin = mysql_native_password
lower_case_table_names = 1
gtid_mode = ON
enforce_gtid_consistency = ON
log_bin = 1
sync_binlog=1
innodb_flush_log_at_trx_commit=1
log_error_verbosity = 3
mysqlx=0
enable_polarx_rpc=0
loose-mysqlx-ssl=DISABLED
ssl=0

cluster_id = 1749112302
cluster_info = 192.168.142.25:14886@3
server_id = 1003

[mysqld_safe]
pid_file = /u01/polardbx-engine/run/mysql.pid


5、高可用集群初始化
每个节点依次按如下步骤初始化、启动:
节点一:
/u01/xcluster80/bin/mysqld --defaults-file=my.cnf --cluster-info='192.168.142.23:14886;192.168.142.24:14886;192.168.142.25:14886@1' --initialize-insecure
/u01/xcluster80/bin/mysqld_safe --defaults-file=my.cnf &

节点二:
/u01/xcluster80/bin/mysqld --defaults-file=my.cnf --cluster-info='192.168.142.23:14886;192.168.142.24:14886;192.168.142.25:14886@2' --initialize-insecure
/u01/xcluster80/bin/mysqld_safe --defaults-file=my.cnf &

节点三:
/u01/xcluster80/bin/mysqld --defaults-file=my.cnf --cluster-info='192.168.142.23:14886;192.168.142.24:14886;192.168.142.25:14886@3' --initialize-insecure
/u01/xcluster80/bin/mysqld_safe --defaults-file=my.cnf &

参数说明:
--cluster-info,其中的格式为 [host1]:[port1];[host2]:[port2];[host3]:[port3]@[idx] ,不同的机器只有 [idx] 不同,[idx] 也反映了该机器是第几个 [host][port],请根据实际机器的 ip 修改该配置项。
比如:192.168.142.23/192.168.142.24/192.168.142.25 组成了Paxos多副本,在192.168.142.24上配置--cluster-info='192.168.142.23:14886;192.168.142.24:14886;192.168.142.25:14886@2',其中@2代表192.168.142.24是在paxos集群配置里使用第二个节点的ip和端口,注意参数的差异。


6、登录集群数据库验证状态
/u01/xcluster80/bin/mysql -h127.0.0.1 -P4886 -uroot
查询本机的paxos角色
mysql> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_LOCAL\G

查询集群所有机器的paxos角色(只有在Leader节点查询才会返回数据)
mysql> SELECT * FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL \G
*************************** 1. row ***************************
SERVER_ID: 1
IP_PORT: 192.168.142.23:14886
MATCH_INDEX: 1
NEXT_INDEX: 0
ROLE:Leader
HAS_VOTED: Yes
FORCE_SYNC: No
ELECTION_WEIGHT: 5
LEARNER_SOURCE: 0
APPLIED_INDEX: 1
PIPELINING: No
SEND_APPLIED: No
INSTANCE_TYPE: Normal
DISABLE_ELECTION: No
SERVER_IP:
SERVER_PORT: 0
*************************** 2. row ***************************
SERVER_ID: 2
IP_PORT: 192.168.142.24:14886
MATCH_INDEX: 1
NEXT_INDEX: 2
ROLE: Follower
HAS_VOTED: Yes
FORCE_SYNC: No
ELECTION_WEIGHT: 5
LEARNER_SOURCE: 0
APPLIED_INDEX: 1
PIPELINING: Yes
SEND_APPLIED: No
INSTANCE_TYPE: Normal
DISABLE_ELECTION: No
SERVER_IP:
SERVER_PORT: 0
*************************** 3. row ***************************
SERVER_ID: 3
IP_PORT: 192.168.142.25:14886
MATCH_INDEX: 1
NEXT_INDEX: 2
ROLE: Follower
HAS_VOTED: No
FORCE_SYNC: No
ELECTION_WEIGHT: 5
LEARNER_SOURCE: 0
APPLIED_INDEX: 1
PIPELINING: Yes
SEND_APPLIED: No
INSTANCE_TYPE: Normal
DISABLE_ELECTION: No
SERVER_IP:
SERVER_PORT: 0
3 rows in set (0.00 sec)

注意:Paxos三副本在逐台启动时,刚启动第一台时,会因为不满足Paxos多数派,无法产生选主结果,此时数据库无法登录。至少需要第二个节点加入,并成功选主,才能登录数据库。

创建数据库、表,验证数据:
mysql> create database zzh;
Query OK, 1 row affected (0.01 sec)

mysql> use zzh;
Database changed
mysql> create table test (id int);
Query OK, 0 rows affected (0.02 sec)

mysql> insert into test values(1),(2);
Query OK, 2 rows affected (0.11 sec)
Records: 2 Duplicates: 0 Warnings: 0

在 Leader 上查询集群的状态:
mysql> SELECT SERVER_ID,IP_PORT,MATCH_INDEX,ROLE,APPLIED_INDEX FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL ;
+-----------+----------------------+-------------+----------+---------------+
| SERVER_ID | IP_PORT | MATCH_INDEX | ROLE | APPLIED_INDEX |
+-----------+----------------------+-------------+----------+---------------+
| 1 | 192.168.142.23:14886 | 4 | Leader | 4 |
| 2 | 192.168.142.24:14886 | 4 | Follower | 4 |
| 3 | 192.168.142.25:14886 | 4 | Follower | 4 |
+-----------+----------------------+-------------+----------+---------------+
3 rows in set (0.00 sec)
注:其中 APPLIED_INDEX 都是 4 ,说明数据目前Paxos三节点上的Log Index是完全一致的。


7、验证重新选主
kill Leader 主节点进程,注意观察日志:
kill -9 $(pgrep -x mysqld)

kill 后集群会选出新的 Leader,并且 mysqld_safe 会立马重新拉起 mysqld 进程如下:
... ...
2026-04-17T02:38:58.502718Z mysqld_safe Rename corefile from to
2026-04-17T02:38:58.536787Z mysqld_safe Number of processes running now: 0
2026-04-17T02:38:58.547884Z mysqld_safe mysqld restarted

再次查看集群,Leader 变成了 192.168.142.24 节点,23节点变成了 Follower 如下:
mysql> SELECT SERVER_ID,IP_PORT,MATCH_INDEX,ROLE,APPLIED_INDEX FROM INFORMATION_SCHEMA.ALISQL_CLUSTER_GLOBAL ;
+-----------+----------------------+-------------+----------+---------------+
| SERVER_ID | IP_PORT | MATCH_INDEX | ROLE | APPLIED_INDEX |
+-----------+----------------------+-------------+----------+---------------+
| 1 | 192.168.142.23:14886 | 5 | Follower | 5 |
| 2 | 192.168.142.24:14886 | 5 | Leader | 5 |
| 3 | 192.168.142.25:14886 | 5 | Follower | 5 |
+-----------+----------------------+-------------+----------+---------------+
3 rows in set (0.00 sec)

至此:polardb 高可用集群搭建并验证完成。

http://www.jsqmd.com/news/662399/

相关文章:

  • P4305题解
  • 豆包选衣提示词
  • Proteus 8.13 保姆级教程:从零开始用Arduino UNO模板创建你的第一个仿真项目
  • 信息学奥赛经典题解:LETTERS中的DFS状态回溯与路径优化
  • ABINIT交换关联函数文件梳理
  • Cesium开发避坑指南:经纬度、世界坐标、屏幕坐标转换的三种方法及最佳实践
  • 深度测评|2026 年 4 月 GEO 优化服务商:客户口碑与服务稳定性排行
  • # 20251916 2025-2026-2 《网络攻防实践》实践5报告
  • 【BurpSuite安装避坑指南】从JDK配置到License激活,一站式解决Run不动、无法识别等典型故障
  • Scroll Reverser:让每个输入设备都拥有专属滚动方向
  • 如何优雅地完成项目数据库的初始化
  • PRPS 是 SAP PS 模块存储 WBS 元素主数据的核心表,主键为 MANDT+PSPNR,包含标识、层级、组织、成本、权限、时间与用户自定义等多类字段,适用于查询、报表与接口开发。
  • 【LLM转型三周年纪念——Harness agent 理解】成为每个读者的独家记忆,从第一性原则出发,一文打穿你的AI幻觉,
  • FanControl深度体验:让Windows电脑风扇从此智能静音
  • WechatDecrypt终极指南:简单三步恢复微信聊天记录
  • Quartus II 13.1 联合 Modelsim 仿真避坑全记录:从Testbench生成到波形查看
  • 20252818 2025-2026-2 《网络攻防实践》第五周作业
  • 【Python实战】VRChat中文吧自动演奏:从乐谱解析到键盘模拟
  • SAP ECC6 EC-CS 专用「标准资产负债表模板」
  • 【RAG 详解:让模型学会“查资料”】
  • 基于诺伊(RuoYi)管理后台开发框架的前后端分离单体架构与Java分层架构开发规范
  • 【艺术家紧急自救手册】:2026奇点大会实证——AGI接管创意流程的7个高危节点及防御策略
  • 编译型与解释型语言
  • 3个必装功能!英雄联盟玩家效率翻倍的本地化工具完全指南
  • 2026自考培训口碑机构大比拼,哪家更胜一筹?国家开放大学招生/学历提升/成人学历提升/专升本报名,自考培训学校推荐 - 品牌推荐师
  • 宿舍党福音:用旧小米路由器3搞定SCUT校园网多设备连接(附编译好的固件)
  • 【STM32】实战3.2—基于TB6600与微步进控制实现42步进电机的平滑驱动
  • 告别Keil:基于VSCode+ARM-GCC+OpenOCD的STM32一站式开发环境实战
  • Pixel Epic智识终端应用:智能硬件产品技术白皮书AI协同编写流程
  • 嵌入式设备上的轻量化Pixel Script Temple部署与实践