Linux MySQL集群搭建指南
导读:Linux环境下MySQL Cluster集群搭建指南(NDB存储引擎版) 一、MySQL Cluster概述 MySQL Cluster是基于NDB(Network Database)存储引擎的分布式数据库解决方案,核心特性包括数据自动分...
Linux环境下MySQL Cluster集群搭建指南(NDB存储引擎版)
一、MySQL Cluster概述
MySQL Cluster是基于NDB(Network Database)存储引擎的分布式数据库解决方案,核心特性包括数据自动分片(Sharding)、多节点冗余(无单点故障)、实时同步(内存级数据复制)和线性扩展(支持横向增加节点)。适用于需要高可用、高并发的OLTP场景(如电商订单、金融交易)。
二、搭建前准备
1. 环境要求
- 操作系统:CentOS/RHEL 7/8(建议最小化安装,关闭SELinux和防火墙或放行必要端口);
- 节点规划:至少3台服务器(1管理节点+1SQL节点+1数据节点,生产环境建议奇数台管理节点);
- 网络要求:所有节点间网络互通(延迟≤10ms),关闭防火墙或放行以下端口:
- 管理节点:默认1186(TCP);
- 数据节点:默认1186(TCP)、2202(数据传输,UDP);
- SQL节点:默认3306(TCP)。
2. 软件准备
下载MySQL Cluster二进制包(如mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64.tar.gz),上传至所有节点的/tmp目录。
三、分步搭建流程
1. 公共配置(所有节点)
(1)卸载冲突软件包
若已安装普通MySQL,需先卸载避免冲突:
rpm -e --nodeps mysql-server mysql-client mysql-common # CentOS/RHEL
(2)创建MySQL用户
groupadd -r mysql
useradd -r -g mysql -s /sbin/nologin mysql
(3)安装依赖包
yum install -y wget gcc gcc-c++ make cmake ncurses-devel libaio libaio-devel
(4)解压并部署软件
tar xzf /tmp/mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
ln -s /usr/local/mysql-cluster-gpl-7.6.20-linux-glibc2.12-x86_64 /usr/local/mysql
chown -R mysql:mysql /usr/local/mysql
(5)配置环境变量
编辑/etc/profile,添加以下内容:
export PATH=/usr/local/mysql/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/mysql/lib:$LD_LIBRARY_PATH
执行source /etc/profile使配置生效。
2. 配置管理节点(MGM)
管理节点负责集群的元数据管理(如节点状态、配置信息)和故障监控。
(1)创建配置目录
mkdir -p /usr/local/mysql/data
(2)编写配置文件config.ini
[ndb_mgmd]
hostname=192.168.1.100 # 管理节点IP
datadir=/usr/local/mysql/data # 配置文件存储目录
[ndbd]
hostname=192.168.1.101 # 数据节点1 IP
datadir=/usr/local/mysql/data # 数据存储目录
[ndbd]
hostname=192.168.1.102 # 数据节点2 IP
datadir=/usr/local/mysql/data
[mysqld]
hostname=192.168.1.103 # SQL节点1 IP
[mysqld]
hostname=192.168.1.104 # SQL节点2 IP
(3)启动管理节点
/usr/local/mysql/bin/ndb_mgmd -f /usr/local/mysql/data/config.ini --initial
--initial:首次启动时初始化配置(后续启动无需此参数)。
3. 配置数据节点(NDB)
数据节点负责数据存储和分片处理,需安装NDB存储引擎。
(1)初始化数据节点
/usr/local/mysql/bin/ndbd --initial
- 首次启动需加
--initial(生成数据目录和日志文件); - 非首次启动直接运行
/usr/local/mysql/bin/ndbd(避免清除已有数据)。
4. 配置SQL节点(MySQL Server)
SQL节点负责SQL解析和客户端连接,需配置NDB存储引擎。
(1)初始化MySQL数据目录
rm -rf /usr/local/mysql/data/* # 清空默认数据目录
/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
记录输出的root初始密码(后续登录需使用)。
(2)启动MySQL服务
/usr/local/mysql/bin/mysqld_safe --user=mysql &
(3)配置NDB引擎(修改my.cnf)
编辑/etc/my.cnf,添加以下内容:
[mysqld]
ndbcluster # 启用NDB存储引擎
ndb-connectstring=192.168.1.100 # 管理节点IP
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
[mysql_cluster]
ndb-connectstring=192.168.1.100
(4)重启SQL节点
systemctl restart mysqld # 或使用 mysqld_safe 重启
5. 验证集群状态
(1)登录管理节点
/usr/local/mysql/bin/ndb_mgm
(2)查看节点状态
ndb_mgm>
SHOW
正常输出应包含:
- 管理节点(
ndb_mgmd)状态为running; - 数据节点(
ndbd)状态为connected; - SQL节点(
mysqld)状态为running。
四、测试数据同步
1. 登录SQL节点
mysql -u root -p # 输入初始密码
2. 创建NDB表
CREATE DATABASE test_cluster;
USE test_cluster;
CREATE TABLE t_user (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100)
) ENGINE=NDBCLUSTER;
-- 必须指定NDB引擎,否则不同步
3. 插入数据并验证同步
在SQL节点1插入数据:
INSERT INTO t_user (name, email) VALUES ('Alice', 'alice@example.com');
在SQL节点2查询数据:
USE test_cluster;
SELECT * FROM t_user;
若能查询到插入的数据,说明数据同步成功。
五、常见问题排查
1. 数据节点无法连接管理节点
- 原因:管理节点未启动或
config.ini配置错误; - 解决方法:检查管理节点服务状态(
ndb_mgm),确认config.ini中的IP和端口正确。
2. SQL节点无法启动
- 原因:
my.cnf配置错误(如ndb-connectstring指向错误的管理节点IP); - 解决方法:检查
my.cnf中的ndb-connectstring参数,确保与管理节点IP一致。
3. 数据不同步
- 原因:数据节点未加入集群(
SHOW命令中ndbd状态为disconnected); - 解决方法:重启数据节点(
/usr/local/mysql/bin/ndbd),检查网络连通性。
六、注意事项
- 内存要求:NDB引擎将数据存储在内存中,需确保每台数据节点有足够内存(建议≥16GB);
- 数据持久化:可通过
DataMemory(数据内存)和DiskData(磁盘数据)参数配置数据存储策略(默认内存+磁盘备份); - 备份策略:定期使用
mysqldump备份数据,避免内存数据丢失。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux MySQL集群搭建指南
本文地址: https://pptw.com/jishu/746726.html
