Debian MySQL集群搭建方法是什么
Debian系统搭建MySQL集群的常见方法
在Debian系统上搭建MySQL集群主要有两种方案:MySQL Cluster(NDB Cluster)(原生分布式事务型集群)和Galera Cluster(多主同步复制集群)。以下分别介绍具体搭建步骤:
一、MySQL Cluster(NDB Cluster)搭建步骤
MySQL Cluster是基于NDB(Network Database)存储引擎的实时事务型集群,支持高可用性和线性扩展,适合需要强一致性的场景。
1. 准备工作
- 至少准备3台Debian服务器(1管理节点、1或更多数据节点、1或更多SQL节点);
- 所有节点之间网络互通,关闭防火墙或开放必要端口(默认:管理节点1186、数据节点1186/3306、SQL节点3306);
- 更新系统包:
sudo apt update & & sudo apt upgrade -y
。
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. 准备工作
- 至少3台Debian服务器(所有节点均为SQL节点,无单独管理节点);
- 所有节点时间同步(安装
ntp
或chrony
); - 关闭防火墙或开放端口(3306、4567、4568)。
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;
# 应查询到插入的数据
注意事项
- MySQL Cluster:需为表指定
NDBCLUSTER
存储引擎,适合高频事务场景,但对硬件要求较高; - Galera Cluster:支持多主写入,适合读写均衡场景,但需注意自增冲突(通过
innodb_autoinc_lock_mode=2
解决); - 生产环境中需配置监控(如
ndb_mgm
监控MySQL Cluster、wsrep_local_state_comment
监控Galera状态)、备份(如xtrabackup
)及安全策略(SSL加密)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian MySQL集群搭建方法是什么
本文地址: https://pptw.com/jishu/720518.html