debian

Debian MySQL集群搭建方法是什么

小樊
43
2025-09-29 20:52:24
栏目: 云计算

Debian系统搭建MySQL集群的常见方法

在Debian系统上搭建MySQL集群主要有两种方案:MySQL Cluster(NDB Cluster)(原生分布式事务型集群)和Galera Cluster(多主同步复制集群)。以下分别介绍具体搭建步骤:

一、MySQL Cluster(NDB Cluster)搭建步骤

MySQL Cluster是基于NDB(Network Database)存储引擎的实时事务型集群,支持高可用性和线性扩展,适合需要强一致性的场景。

1. 准备工作
2. 安装MySQL Cluster软件包

在所有节点上执行:

sudo apt install mysql-cluster-community-server mysql-cluster-community-client -y

这会安装MySQL Server及NDB Cluster组件。

3. 配置管理节点(ndb_mgmd)

在管理节点上创建配置目录并编辑配置文件(/var/lib/mysql-cluster/config.ini):

[ndb_mgmd]  # 管理节点配置
hostname=管理节点IP
datadir=/var/lib/mysql-cluster  # 数据存储路径

[ndbd]  # 数据节点配置(每行对应一个数据节点)
hostname=数据节点1IP
hostname=数据节点2IP

[mysqld]  # SQL节点配置(每行对应一个SQL节点)
hostname=SQL节点1IP
hostname=SQL节点2IP

启动管理节点:

sudo ndb_mgmd --config-file=/var/lib/mysql-cluster/config.ini --initial  # --initial仅首次启动使用

验证管理节点状态:

ndb_mgm -e "show"  # 应显示管理节点状态为"running"
4. 配置数据节点(ndbd)

在每个数据节点上启动数据节点服务:

sudo ndbd --initial  # 首次启动用--initial,后续用ndbd

验证数据节点状态:

ndb_mgm -e "show"  # 应显示数据节点状态为"connected"或"running"
5. 配置SQL节点

在每个SQL节点上安装MySQL Server(若未安装),编辑配置文件(/etc/mysql/my.cnf):

[mysqld]
ndbcluster  # 启用NDB存储引擎
ndb-connectstring=管理节点IP  # 指向管理节点

重启MySQL服务:

sudo systemctl restart mysql

验证SQL节点是否连接集群:

mysql -uroot -p -e "SHOW STATUS LIKE 'ndb_cluster%';"  # 应显示ndb_cluster_connection_status为"connected"
6. 验证集群功能

在SQL节点上创建测试表并插入数据:

USE test;
CREATE TABLE cluster_table (id INT PRIMARY KEY, name VARCHAR(50)) ENGINE=NDBCLUSTER;  # 必须指定NDBCLUSTER引擎
INSERT INTO cluster_table VALUES (1, 'test');

在其他SQL节点查询数据,确认数据同步:

SELECT * FROM test.cluster_table;

二、Galera Cluster搭建步骤

Galera Cluster是基于多主同步复制的集群,支持多点写入,适合需要高可用性和读写扩展的场景(如InnoDB引擎)。

1. 准备工作
2. 安装必要软件包

在所有节点上执行:

sudo apt install mysql-server galera-3 -y

galera-3是Galera库,提供同步复制功能。

3. 配置Galera集群

在第一个节点(node1)上编辑配置文件(/etc/mysql/my.cnf):

[mysqld]
wsrep_provider=/usr/lib/galera/libgalera_smm.so  # Galera提供者路径
wsrep_cluster_address="gcomm://node1IP,node2IP,node3IP"  # 集群节点地址
wsrep_node_address=node1IP  # 当前节点IP
wsrep_node_name=node1  # 当前节点名称
wsrep_sst_method=xtrabackup-v2  # 数据同步方法(推荐xtrabackup)
binlog_format=ROW  # 必须为ROW格式
default_storage_engine=InnoDB  # 必须使用InnoDB
innodb_autoinc_lock_mode=2  # 解决自增冲突

注意:首次启动集群时,wsrep_cluster_address需设置为gcomm://(单节点启动),后续节点加入时再改为完整地址。

4. 启动集群

在node1上启动MySQL服务(会自动初始化集群):

sudo systemctl start mysql

验证集群状态:

mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"  # 应显示cluster_size为1
5. 加入其他节点

在node2、node3上重复配置步骤3,将wsrep_cluster_address改为完整地址(如gcomm://node1IP,node2IP,node3IP),然后启动服务:

sudo systemctl start mysql

等待节点同步完成(可通过wsrep_cluster_size确认所有节点已加入)。

6. 验证集群功能

在任意节点插入数据,检查其他节点是否同步:

-- 在node1上执行
USE test;
CREATE TABLE galera_table (id INT PRIMARY KEY, name VARCHAR(50));
INSERT INTO galera_table VALUES (1, 'galera_test');

-- 在node2/node3上执行
SELECT * FROM test.galera_table;  # 应查询到插入的数据

注意事项

0
看了该问题的人还看了