首页主机资讯Linux MySQL集群搭建指南

Linux MySQL集群搭建指南

时间2025-11-10 22:23:05发布访客分类主机资讯浏览1418
导读: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
如何解决Linux MySQL内存不足 如何迁移Linux MySQL数据

游客 回复需填写必要信息