导读:本期聚焦于小伙伴创作的《如何搭建MySQL集群并将管理、数据、SQL三种节点分离?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何搭建MySQL集群并将管理、数据、SQL三种节点分离?》有用,将其分享出去将是对创作者最好的鼓励。

MySQL集群采用无共享架构,核心是将管理、数据、SQL三类节点独立部署,管理节点负责集群配置与状态监控,数据节点存储实际数据,SQL节点对外提供数据库访问服务,三类节点各司其职可以提升整体稳定性与扩展性。

如何搭建MySQL集群并将管理、数据、SQL三种节点分离?

环境准备

准备三台服务器,分别规划为管理节点、数据节点、SQL节点,也可以根据实际需求调整节点数量,本文以单节点部署三类角色为例,系统使用CentOS 7,MySQL集群版本为MySQL Cluster 7.6。

节点角色说明

  • 管理节点(ndb_mgmd):负责维护集群配置文件,监控所有节点状态,不存储业务数据
  • 数据节点(ndbd/ndbmtd):存储集群的实际数据,执行数据的读写操作,支持多节点冗余
  • SQL节点(mysqld):即常规的MySQL服务实例,对外提供SQL接口,接收客户端的查询与写入请求

安装MySQL集群软件

在三台服务器上都安装MySQL集群的二进制包,解压后将相关文件放到/usr/local/mysql目录,执行初始化操作。

# 解压安装包
tar -zxvf mysql-cluster-gpl-7.6.15-linux-glibc2.12-x86_64.tar.gz
mv mysql-cluster-gpl-7.6.15-linux-glibc2.12-x86_64 /usr/local/mysql
# 创建mysql用户
useradd -s /sbin/nologin mysql
chown -R mysql:mysql /usr/local/mysql
# 初始化基础目录
cd /usr/local/mysql
./bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data

配置管理节点

管理节点需要单独的配置文件,定义集群中所有节点的信息,默认配置文件路径为/var/lib/mysql-cluster/config.ini。

# 管理节点配置文件 config.ini
[ndbd default]
NoOfReplicas=2  # 数据副本数,至少设置为2
DataMemory=80M  # 数据节点内存大小
IndexMemory=18M # 索引内存大小

[ndb_mgmd]
NodeId=1
hostname=192.168.0.1  # 管理节点IP
datadir=/var/lib/mysql-cluster  # 管理节点数据目录

[ndbd]
NodeId=2
hostname=192.168.0.2  # 数据节点IP
datadir=/usr/local/mysql/data  # 数据节点数据目录

[mysqld]
NodeId=3
hostname=192.168.0.3  # SQL节点IP

创建管理节点的数据目录并启动服务:

mkdir -p /var/lib/mysql-cluster
/usr/local/mysql/bin/ndb_mgmd -f /var/lib/mysql-cluster/config.ini --initial

配置数据节点

数据节点需要修改MySQL的配置文件my.cnf,添加ndb集群相关参数。

# 数据节点 my.cnf 配置
[mysqld]
ndbcluster  # 启用ndb集群引擎
ndb-connectstring=192.168.0.1  # 管理节点IP

[mysql_cluster]
ndb-connectstring=192.168.0.1  # 管理节点连接地址

启动数据节点服务:

/usr/local/mysql/bin/ndbd --initial

首次启动需要加--initial参数,后续正常启动可以去掉该参数。

配置SQL节点

SQL节点的my.cnf配置需要指定ndb集群连接信息,同时设置MySQL的基础运行参数。

# SQL节点 my.cnf 配置
[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
ndbcluster  # 启用ndb集群引擎
ndb-connectstring=192.168.0.1  # 管理节点IP
user=mysql

[mysql_cluster]
ndb-connectstring=192.168.0.1  # 管理节点连接地址

启动SQL节点的MySQL服务:

/usr/local/mysql/bin/mysqld_safe --user=mysql &

验证集群状态

在管理节点执行集群状态查看命令,确认所有节点都正常上线。

/usr/local/mysql/bin/ndb_mgm -e show

正常输出会显示三个节点的状态都为connected,说明集群搭建成功。

测试集群功能

在SQL节点登录MySQL,创建ndb存储引擎的表,插入数据后可以在其他节点验证数据同步情况。

-- 登录SQL节点MySQL
/usr/local/mysql/bin/mysql -u root -p

-- 创建测试数据库
CREATE DATABASE test_cluster;
USE test_cluster;

-- 创建ndb存储引擎的表
CREATE TABLE user_info (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) ENGINE=NDBCLUSTER;

-- 插入测试数据
INSERT INTO user_info VALUES (1, '测试用户');

如果数据插入成功,且在管理节点查看数据节点状态正常,说明三种节点分离的MySQL集群已经可以正常提供服务。

MySQL集群ndb_mgmdndbdmysqld修改时间:2026-06-07 00:32:47

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。