MySQL集群在物理机上的搭建指南
MySQL集群是一种通过多节点协同工作,实现高可用性、高性能和可扩展性的数据库架构,它通过数据分片、复制和负载均衡等技术,确保系统在单点故障时仍能正常运行,并提升处理高并发请求的能力,以下是MySQL集群在物理机上搭建的详细步骤及关键要点:
环境准备
-
硬件要求
- CPU:建议四核及以上,以支持多任务处理和并行计算。
- 内存:至少8GB RAM,高并发场景推荐16GB以上。
- 存储:使用SSD硬盘,容量根据数据量需求分配(建议≥100GB)。
- 网络:千兆网卡,低延迟网络(如局域网),所有节点需在同一子网内。
- 节点数量:至少3台物理机(1个管理节点、2个数据节点、1个SQL节点),生产环境建议冗余配置。
-
软件要求
- 操作系统:CentOS 7/8、Ubuntu 18.04/20.04(Linux发行版优先)。
- MySQL版本:建议使用MySQL 8.0或兼容的NDB Cluster版本(如MySQL Cluster 7.x)。
- 时间同步:通过NTP服务确保所有节点时间一致,避免数据不一致问题。
-
关闭防火墙与SELinux
# 关闭防火墙 systemctl stop firewalld systemctl disable firewalld # 设置SELinux为宽松模式 setenforce 0
MySQL集群组件与角色
组件 | 功能 | 节点示例 |
---|---|---|
管理节点 | 负责集群配置管理、节点通信协调 | 168.1.10 |
数据节点 | 存储数据并执行分布式事务(使用NDB存储引擎) | 168.1.11 , 168.1.12 |
SQL节点 | 处理客户端SQL请求,通过API与数据节点交互 | 168.1.13 |
安装与配置步骤
-
安装MySQL Cluster软件
在所有节点上执行以下操作:# 添加MySQL官方仓库(以CentOS为例) wget https://repo.mysql.com/mysql80-community-release-el7.rpm rpm -ivh mysql80-community-release-el7.rpm yum install mysql-community-server -y
-
配置管理节点
- 创建配置文件
config.ini
:[NDBD DEFAULT] NoOfReplicas=2 [NDB_MGMD] NodeId=1 HostName=192.168.1.10 DataDir=/var/lib/mysql-cluster [NDBD] NodeId=2 HostName=192.168.1.11 DataDir=/var/lib/mysql-cluster [NDBD] NodeId=3 HostName=192.168.1.12 DataDir=/var/lib/mysql-cluster
- 启动管理节点:
ndb_mgmd -f /etc/mysql-cluster/config.ini --initial
- 创建配置文件
-
配置数据节点
- 修改
my.cnf
文件(以168.1.11
为例):[mysqld] bind-address=192.168.1.11 ndbcluster_connectstring=192.168.1.10:1186
- 启动数据节点:
ndbd
- 修改
-
配置SQL节点
- 修改
my.cnf
文件(以168.1.13
为例):[mysqld] bind-address=192.168.1.13 ndbcluster_connectstring=192.168.1.10:1186
- 启动SQL节点:
mysqld_safe --defaults-file=/etc/my.cnf &
- 修改
验证集群状态
-
查看管理节点状态
ndb_mgm -e "SHOW NODES"
输出示例:
Node 1: mgm node, State=running Node 2: db node, State=distributed Node 3: db node, State=distributed
-
测试SQL连接
在SQL节点上登录MySQL并创建表:mysql -u root -p CREATE TABLE test (id INT PRIMARY KEY, name VARCHAR(50)); INSERT INTO test VALUES (1, 'MySQL Cluster'); SELECT FROM test;
常见问题与解决方案
问题 | 解决方案 |
---|---|
数据节点无法启动 | 检查config.ini 中的主机名和端口是否正确,确保网络连通性。 |
主从同步失败 | 确保主节点开启binlog ,从节点配置正确的MASTER_LOG_FILE 和MASTER_LOG_POS 。 |
性能瓶颈 | 优化数据分片策略,使用负载均衡工具(如HAProxy)分发请求。 |
FAQs
Q1:MySQL集群需要多少台物理机?
A1:至少需要3台物理机(1台管理节点 + 2台数据节点),生产环境建议增加冗余节点以提高可靠性。
Q2:如何监控MySQL集群的状态?
A2:可以使用ndb_mgm
工具查看节点状态,或通过Prometheus、Grafana等监控工具采集集群性能指标(如CPU、内存、
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/70518.html