**一、核心作用**
1. **高可用性(HA)**
- 自动故障转移:节点崩溃时自动切换,确保服务不间断。
- 无单点故障:数据在多个节点冗余存储。
2. **水平扩展**
- 通过添加数据节点(Data Node)线性提升读写性能。
- 支持 TB 级数据存储。
3. **实时读写性能**
- 内存存储:数据和索引常驻内存,读写延迟极低(通常 < 1ms)。
- 分布式架构:并行处理查询请求。
4. **强一致性**
- 所有节点数据实时同步,保证 ACID 事务特性。
**二、基本架构**
MySQL Cluster 采用share-nothing架构,主要由三类节点组成:
1. **管理节点(Management Node)**
- 配置和管理整个集群(如节点数量、数据分布)。
- 命令工具:`ndb_mgmd`(管理服务)、`ndb_mgm`(客户端)。
2. **数据节点(Data Node)**
- 存储实际数据,支持多副本(默认2副本)。
- 节点间通过高速网络同步数据。
3. **SQL节点(SQL Node)**
- 对外提供MySQL接口(兼容标准SQL)。
- 接收客户端请求并路由至数据节点。
**三、基本使用步骤**
**1. 环境准备**
- 至少3台服务器(推荐物理机或高性能虚拟机)。
- 关闭防火墙或开放必要端口(如TCP 1186、3306)。
- 安装相同版本的MySQL Cluster(社区版或企业版)。
**2. 配置管理节点**
创建配置文件 `config.ini`:
ini
[ndbd default]
NoOfReplicas=2 # 数据副本数
[ndb_mgmd]
NodeId=1
HostName=mgm_node_ip # 管理节点IP
[ndbd]
NodeId=2
HostName=data_node1_ip # 数据节点1
[ndbd]
NodeId=3
HostName=data_node2_ip # 数据节点2
[mysqld]
NodeId=40 # SQL节点ID(范围40-255)
[mysqld]
NodeId=41
启动管理服务:
bash
ndb_mgmd -f /path/to/config.ini --initial
**3. 启动数据节点**
在每个数据节点执行:
bash
ndbd -c mgm_node_ip:1186 # 连接管理节点
**4. 启动SQL节点**
配置 `my.cnf` 并启动MySQL服务:
ini
[mysqld]
ndbcluster # 启用Cluster模式
ndb-connectstring=mgm_node_ip # 连接管理节点
**5. 验证集群状态**
连接管理节点客户端:
bash
ndb_mgm -e "show"
输出应显示所有节点状态正常:
Connected to Management Server at: mgm_node_ip:1186
Cluster Configuration
---------------------
[ndbd(NDB)] 2 node(s)
id=2 @data_node1_ip (mysql-8.0.34 ndb-8.0.34, Nodegroup: 0, *)
id=3 @data_node2_ip (mysql-8.0.34 ndb-8.0.34, Nodegroup: 0)
[ndb_mgmd(MGM)] 1 node(s)
id=1 @mgm_node_ip (mysql-8.0.34 ndb-8.0.34)
[mysqld(API)] 2 node(s)
id=40 @sql_node1_ip (mysql-8.0.34 ndb-8.0.34)
id=41 @sql_node2_ip (mysql-8.0.34 ndb-8.0.34)
**6. 创建和使用集群表**
连接任一SQL节点,创建使用`NDBCLUSTER`引擎的表:
sql
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
) ENGINE=NDBCLUSTER;
INSERT INTO users VALUES (1, 'Alice');
SELECT * FROM users;
**四、适用场景**
- **高并发读写**:如电商秒杀、游戏排行榜。
- **实时数据处理**:如金融交易、IoT数据采集。
- **高可用性要求**:如支付系统、核心业务系统。
**五、注意事项**
1. **网络要求**:节点间需低延迟高速网络(建议万兆网卡)。
2. **内存规划**:数据节点需足够内存存储全量数据。
3. **不支持复杂查询**:不适合大量JOIN或子查询,建议预处理数据。
4. **运维复杂度**:需专业团队维护,建议从小规模集群开始测试。
**六、与其他方案对比**
| 方案 | 优势 | 劣势 |
|--------------------|--------------------------|--------------------------|
| MySQL Cluster | 强一致性、高可用 | 架构复杂、内存依赖高 |
| MySQL主从复制 | 简单、适合读多写少 | 弱一致性、写操作有瓶颈 |
| MySQL Group Repl. | 多主写入、自动故障转移 | 仅支持单主写,性能有限 |
| 分布式数据库(如TiDB)| 水平扩展、兼容MySQL语法 | 学习成本高、生态不完善 |
通过合理规划和配置,MySQL Cluster 可以在保证数据一致性的同时,提供接近内存级的读写性能和99.999%的高可用性。