一台服务器如何安装两个PXC节点?,PXC节点怎么安装

一台服务器完全可以安装两个PXC节点,核心思路是使用容器隔离或独立数据目录配合不同端口来实现,但需重点处理IP配置、端口分配和集群通信三个关键环节。

为什么要在单台服务器上部署两个PXC节点

省成本的诱惑力谁都能理解,一台服务器装两个PXC节点,本质上是在物理机内部模拟出两套独立的数据库环境,这种部署方式在测试环境、预发布环境以及预算受限的中小项目中并不少见。

西门子PXC24和PXC4是一个系列控制器么?是用ABTsite软件编程么?一个视频分清楚2个系列控制器
加载中
西门子PXC24和PXC4是一个系列控制器么?是用ABTsite软件编程么?一个视频分清楚2个系列控制器

真正的业务场景往往出于以下考虑:

  • 测试人员需要模拟集群故障切换,但手头只有一台物理机
  • 预算有限,先在一台高配服务器上把功能跑通,后续再迁移到多台物理机
  • 需要验证PXC集群的写入扩展能力,但不想一次性采购三台机器

<由于PXC集群的最小冗余配置是2个节点,多数情况下单台服务器的双节点方案足以满足功能验证和轻量生产需求。>

单机双PXC节点的部署方案对比

部署前需要明确一个事实:两个PXC节点直接跑在同一台机器上,如果不做任何隔离处理,端口冲突、数据目录抢占、SST传输失败这些问题会接踵而至,行业共识认为,常见方案有两种:Docker容器方案和物理多实例方案。

对比维度 Docker容器方案 物理多实例方案
隔离性 文件系统、PID、网络栈完全隔离 仅数据目录和配置隔离,共享内核
部署难度 较低,一条命令启动容器 较高,需要手动管理多个mysqld进程
性能损耗 约3%5%网络开销 几乎无损耗
推荐场景 测试环境、快速验证 对I/O有要求的生产环境

如果是首次尝试一台服务器安装两个pxc节点,Docker方案更推荐,容器化的隔离机制可以避雷大部分低级错误,但无论哪种方案,存储引擎的SST快照传输机制决定了两个节点的物理部署距离越近,传输越便捷,这也是单机部署的天然优势。

一台服务器上打两个pxc节点的具体步骤

前置检查与资源估算

先确认服务器配置是否扛得住,单个PXC节点在低负载下占用约1GB内存,两个节点加上操作系统开销,至少需要3GB可用内存,磁盘方面,每个节点预留独立的数据目录,建议不低于20GB,统计数字表明,相当一部分部署失败源于资源规划不足。

检查现有环境:

一台服务器如何安装两个PXC节点?,PXC节点怎么安装

grep -c processor /proc/cpuinfo
free -h
df -h

Docker方式部署两个PXC节点的实操路径

通过容器方式部署,本质上是用端口映射把两个PXC节点的通信通道分开,假设服务器IP为192.168.1.100,两个节点分别映射3310和3320端口给MySQL客户端,映射4567和4568端口给集群通信。

第一个节点启动命令:

docker network create -d bridge pxc-net
docker run -d --name pxc1 
  -p 3310:3306 
  -p 4567:4567 
  -p 4568:4568 
  -e MYSQL_ROOT_PASSWORD=rootpass 
  -e CLUSTER_NAME=pxc-cluster 
  -e XTRABACKUP_PASSWORD=backuppass 
  -v /data/pxc1:/var/lib/mysql 
  --network=pxc-net 
  percona/percona-xtradb-cluster:8.0

这里有一个关键点:第一个节点初始化时,必须声明自己为集群引导节点,进入容器执行:

docker exec -it pxc1 mysql -uroot -prootpass 
  -e "SET GLOBAL wsrep_provider_options='ist.recv_addr=192.168.1.100:4568';"

第二个节点启动命令:

第二个节点与第一个节点的最大区别在于,它需要知道谁是自己人,通过CLUSTER_JOIN参数指定第一个节点的集群地址:

docker run -d --name pxc2 
  -p 3320:3306 
  -p 4570:4567 
  -p 4571:4568 
  -e MYSQL_ROOT_PASSWORD=rootpass 
  -e CLUSTER_NAME=pxc-cluster 
  -e CLUSTER_JOIN=pxc1:4567 
  -e XTRABACKUP_PASSWORD=backuppass 
  -v /data/pxc2:/var/lib/mysql 
  --network=pxc-net 
  percona/percona-xtradb-cluster:8.0

启动后等待约3060秒,两个节点会自动完成SST全量数据传输,用以下命令验证集群状态:

docker exec -it pxc1 mysql -uroot -prootpass 
  -e "SHOW STATUS LIKE 'wsrep_cluster_size';"

正常输出wsrep_cluster_size = 2即代表两台节点已成集群。

物理多实例方式部署两个PXC节点

物理多实例的难点在于把每个实例的配置文件和进程管理彻底分开,安装基础PXC软件包后,按以下顺序操作:

第一步:目录拆分与配置准备

mkdir -p /etc/my.cnf.d/pxc1 /etc/my.cnf.d/pxc2
mkdir -p /var/lib/pxc1 /var/lib/pxc2
cp /etc/my.cnf /etc/my.cnf.d/pxc1/my.cnf
cp /etc/my.cnf /etc/my.cnf.d/pxc2/my.cnf

第二步:分别修改两个配置文件

pxc1的my.cnf核心配置段:

[mysqld]
server-id=1
port=3310
datadir=/var/lib/pxc1
socket=/var/run/mysqld/pxc1.sock
wsrep_cluster_name="pxc-single-server"
wsrep_node_name="pxc-single-1"
wsrep_node_address=192.168.1.100:4570
wsrep_sst_receive_address=192.168.1.100:4571
wsrep_cluster_address="gcomm://192.168.1.100:4572"

一台服务器如何安装两个PXC节点?,PXC节点怎么安装

pxc2的my.cnf核心配置段:

[mysqld]
server-id=2
port=3320
datadir=/var/lib/pxc2
socket=/var/run/mysqld/pxc2.sock
wsrep_cluster_name="pxc-single-server"
wsrep_node_name="pxc-single-2"
wsrep_node_address=192.168.1.100:4573
wsrep_sst_receive_address=192.168.1.100:4574
wsrep_cluster_address="gcomm://192.168.1.100:4572"

注意这里的端口规划:4570和4573分别为两个节点的集群通信端口,4572为gcomm运行时的统一端口,物理多实例方案下,不同端口都要明确区分开。

第三步:初始化数据目录并启动

mysqld --defaults-file=/etc/my.cnf.d/pxc1/my.cnf --initialize-insecure
mysqld --defaults-file=/etc/my.cnf.d/pxc2/my.cnf --initialize-insecure
mysqld --defaults-file=/etc/my.cnf.d/pxc1/my.cnf --wsrep-new-cluster &
sleep 10
mysqld --defaults-file=/etc/my.cnf.d/pxc2/my.cnf &

第四步:确认两节点写入同步正常

在两个节点分别创建测试表并写入数据:

mysql -uroot -P3310 -h127.0.0.1 -e "CREATE DATABASE test; USE test; CREATE TABLE t1(id INT); INSERT INTO t1 VALUES (1);"
mysql -uroot -P3320 -h127.0.0.1 -e "SELECT  FROM test.t1;"

如果第二个节点能查询到刚才写入的记录,说明两台节点同步机制已经开始工作。

单机部署两个PXC节点的常见坑与规避措施

端口冲突爆发点

同一台服务器上不同实例的默认端口全部相同:3306端口、4567端口、4568端口、4444端口,不修改直接启动,第二个节点必然报错,端口分配是安装过程中最容易被忽视的环节,建议按表逐一核对:

服务用途 默认端口 节点1建议端口 节点2建议端口
MySQL客户端连接 3306 3310 3320
集群通信 4567 4567 4570
IST增量传输 4568 4568 4571
SST全量传输 4444 4444 4572

auto_increment偏移量设置

PXC两个节点同时接受写入,如果两个节点的自增主键都从1开始,很快就会出现主键冲突,PXC官方推荐配置:

auto_increment_increment=2
auto_increment_offset=1

一台服务器如何安装两个PXC节点?,PXC节点怎么安装

第二个节点设置auto_increment_offset=2,这样节点1生成1、3、5、7…节点2生成2、4、6、8…保证两节点同时写入时不会撞车。

单机服务器的SST传输阻断

Docker方式下,容器网络与宿主机网络之间存在NAT转换,SST传输经常因防火墙规则被拦截,如果启动时发现第二个节点一直处于JOINING状态,多缴一个排查步骤:

iptables -I INPUT -p tcp --dport 4444 -j ACCEPT
iptables -I INPUT -p tcp --dport 4567 -j ACCEPT
iptables -I INPUT -p tcp --dport 4568 -j ACCEPT

两台节点同时故障的恢复策略

单机部署意味着物理机宕机时两个节点同时不可用,集群重启时,千万不要同时启动两个节点,否则会因找不到主节点而反复协商,正确做法:先启动第一个节点并添加--wsrep-new-cluster参数引导集群,再启动第二个节点,由于第二个节点的gcomm地址指向第一个节点,会自动以增量方式同步数据。

一台服务器pxc两个节点部署常见疑问解答

同服务器上两个PXC节点能做故障自动切换吗

可以,但切换价值不大,物理机宕机时两个节点同时失联,无法实现跨机器的高可用,如果目标是模拟节点故障场景,可以在宿主机存活时通过手动停止其一节点的mysqld服务来观察集群状态变化,自动切换主要依赖keepalived或HAProxy虚IP漂移,但虚IP绑定在本地物理机,物理机本身故障时虚IP也一并消失,因此这种情况下故障切换的真正意义是测试层面而非生产保障。

单机双节点将来怎么平滑迁移到多台物理机

先在旧节点上mysqldump导出全部核心数据,新集群部署三个节点后,先将其中一个节点的wsrep_cluster_address修改为指向新集群的gcomm地址,让它以增量方式把数据同步过去,同步完成后,将另外一台旧节点正常退组,新集群三个节点继续工作,这个过程中有两台节点同时在线的重叠期,对于测试环境完全可行,迁移完成后,记得在新集群中执行SHOW STATUS LIKE 'wsrep_cluster_size';确认节点数等于新机器数量。

两个节点都用同一个root密码,安全方面怎么处理

PXC要求所有节点账号密码一致,因此单机部署中两个实例的root密码必须相同,但这并不意味着安全防控没有提升空间,操作上可以限制root账户只允许本地登录,同时为应用单独创建专用账号,用CREATE USER并限定来源IP,集群内部通信账号xtrabackup建议使用独立随机密码,便于排查问题时区分具体连接来源。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://idctop.com/article/581171.html

赞 (0)
it业务分析_业务测试和分析
上一篇 2026年8月18日 22:34
瓦港服怎么选延迟低的服务器?,哪个服务器延迟最低
下一篇 2026年8月18日 22:34

相关推荐

  • Ajax如何使用JSON数据格式?ajax调用json接口报错怎么办

    Ajax结合JSON数据格式能实现网页局部刷新与后台数据的高效交互,是构建现代单页应用(SPA)和动态Web界面的核心技术方案,在传统的Web开发模式中,用户每次与服务器交互都需要重新加载整个页面,这种“全页刷新”不仅浪费带宽,还导致用户体验断裂,随着前端技术的演进,Ajax(Asynchronous Java……

    2026年5月30日
    4100
  • 服务器ip地址和端口是什么?如何快速查看服务器IP和端口号

    服务器IP地址和端口构成了互联网通信的基石,二者协同工作,精准定位网络中的设备与服务,IP地址相当于网络世界的“门牌号”,负责定位具体的计算机设备;端口则相当于“窗口”或“通道”,负责区分设备内部不同的网络服务, 没有IP地址,数据无法找到目标主机;没有端口,数据到达主机后无法交付给正确的应用程序,理解这一对应……

    2026年4月10日
    10600
  • 智慧医疗技术有哪些,AI智能健康需要哪些技术?

    AI智能健康不仅仅是单一算法的应用,而是构建在数据感知、智能处理、安全交互与精准执行之上的复杂技术生态,要实现真正的智能化医疗与健康管理,必须依赖多维度的技术融合,深入探讨AI智能健康需要哪些技术,其实质是分析如何通过物联网、大数据、深度学习及隐私计算等前沿科技的协同作用,将海量的医疗数据转化为可执行的临床决策……

    2026年3月1日
    11800
  • 构建企业网络难吗?企业网络架构设计要点

    构建企业网络的核心在于采用“零信任”架构结合SD-WAN技术,在保障数据安全的前提下实现多分支的高效互联与智能运维,企业网络架构演进与核心痛点解析过去十年,企业网络的边界已经模糊,传统的“城堡-护城河”式防御体系在面对移动办公、云服务和物联网设备时显得捉襟见肘,网络不再仅仅是连接工具,而是业务连续性的基石,业内……

    2026年5月27日
    3800
  • 服务器bios设置u盘启动失败怎么办,u盘启动不了怎么解决

    服务器u盘启动不了,原因主要集中在启动模式不匹配、u盘引导损坏、bios开关限制这三个方向,按顺序排查,多数情况不用搬出技术人员,服务器u盘启动不了怎么办:按优先级排查五件事遇到服务器u盘启动不了怎么办,先别反复重启,你得分清故障发生在哪个阶段:自检阶段就报错,是bios没认盘;过了自检又跳回启动项,那是引导文……

    2026年9月5日
    100
  • AI视图怎么生成图片,AI视图生成器怎么使用?

    AI视图正在重塑人类与数字世界交互的底层逻辑,它不再仅仅是数据的可视化呈现,而是演变为一种具备感知、推理与预测能力的智能决策引擎,这一技术范式将静态的图表转化为动态的认知窗口,通过深度学习与计算机视觉的深度融合,实现了从“看数据”到“懂数据”的跨越,为企业数字化转型提供了前所未有的洞察力与执行力,核心技术架构与……

    2026年2月26日
    14100
  • ASP.NET导出Excel乱码如何解决?高效修复方法大全

    ASP.NET导出Excel乱码的原因及解决方法ASP.NET导出Excel文件时出现乱码,核心原因在于编码不匹配或文件格式标识缺失,导致Excel软件无法正确解析中文字符,以下是详细问题根源及专业解决方案:乱码产生的根本原因编码未正确声明(核心原因):ASP.NET 默认可能未在HTTP响应头中明确指定内容编……

    2026年2月11日
    14300
  • 服务器异步通知客户端如何实现?,工作原理是什么?

    服务器异步通知客户端是现代分布式架构中实现实时数据传递的核心手段,它通过WebSocket、Server-Sent Events(SSE)及HTTP长轮询等技术,替代了低效的客户端轮询模式,在兼顾资源消耗与时效性的前提下,为支付回调、消息推送、监控看板等场景提供了可靠的通信基础,服务器异步通知客户端实现方式对比……

    2026年7月16日
    3100
  • 服务器HA集群如何搭建?服务器高可用集群配置方法

    当单点故障发生时,业务仍能持续运行,RTO(恢复时间目标)趋近于零,RPO(数据丢失量)可控, 这不是理想化的承诺,而是通过标准化架构设计、自动化故障转移机制与严格运维流程共同实现的工程结果,在金融、医疗、政务、电商等对系统连续性要求严苛的领域,服务器HA集群已成为基础设施的标配,为什么需要服务器HA集群……

    2026年4月17日
    5300
  • 我的世界服务器不让装模组如何是好,为什么装不上?

    服务器不让装mod,最直接的办法是分清“服务端mod”和“客户端mod”——服务端装不了就转投纯客户端mod,这类mod在本地生效,不需要服务器授权,也不违反服务器规则,很多玩家一听到“服务器不让装mod”,第一反应是放弃,或者去搜各种绕过检测的偏方,在《我的世界》里,“不让装mod”这件事得拆开看,是服务器完……

    2026年9月10日
    100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注