首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >MariaDB-多主集群(Galera Cluster)部署

MariaDB-多主集群(Galera Cluster)部署

作者头像
运维小路
发布2026-01-26 12:05:00
发布2026-01-26 12:05:00
1300
举报
文章被收录于专栏:运维小路运维小路

作者介绍:简历上没有一个精通的运维工程师,下面的思维导图也是预计更新的内容和当前进度(不定时更新)。

数据库是一个系统(应用)最重要的资产之一,所以我们的数据库将从以下几个数据库来进行介绍。

MySQL(本章节)

PostgreSQL

MongoDB

Redis

Etcd

上个小节我们介绍了MariaDB基本部署,在单机下他们几乎没有区别,但是MariaDB是由一个多主集群,类似其他诸如ZooKeeper的软件,就是我们今天要讲的Galera Cluster集群,也叫多主集群。

一.环境规划

我们这里以3个节点来部署我们的Galera Cluster集群,他们的IP是192.168.31.185/186/187。

二.环境准备

由于多主是从10.1版本开始支持的,而我们默认从Centos7里面部署版本是5.X,所以需要安装较新的版本才可以支持。

2.1 准备repo文件

代码语言:javascript
复制
# 创建MariaDB仓库文件
cat > /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.6/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

2.2 安装MariaDB

代码语言:javascript
复制
# 安装MariaDB和Galera
yum install -y MariaDB-server MariaDB-client galera-4
# 启动MariaDB(仅初始化)
systemctl start mariadb
systemctl stop mariadb

三. 配置Galera Cluster

3.1 所有节点通用配置框架

其他节点只需要修改当前节点配置的里面的IP即可。

代码语言:javascript
复制
[mysqld]
# 基础配置
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
bind-address=0.0.0.0  # 允许所有IP访问
# Galera集群配置
wsrep_on=ON
wsrep_provider=/usr/lib64/galera-4/libgalera_smm.so
wsrep_cluster_name="mariadb_galera_cluster"  # 集群名称保持一致
wsrep_cluster_address="gcomm://192.168.31.185,192.168.31.186,192.168.31.187"  # 集群所有节点IP
# 当前节点配置(仅需修改这里)
wsrep_node_name="192.168.31.185"  # 用IP作为节点名(无需修改主机名)
wsrep_node_address="192.168.31.185"  # 自身节点IP
# 同步相关配置
binlog_format=ROW
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_flush_log_at_trx_commit=0  # 生产环境可改为1(强一致性)
wsrep_slave_threads=1  # 根据CPU核心数调整
wsrep_certify_nonPK=1
wsrep_max_ws_rows=131072
wsrep_max_ws_size=1073741824

3.2 初始化集群

代码语言:javascript
复制
galera_new_cluster # 初始化集群,会自动启动mysql服务

3.3 检查第一个节点状态

代码语言:javascript
复制
# 登录数据库
mysql -u root -p  # 首次登录无密码,直接回车
# 查看集群状态
SHOW STATUS LIKE 'wsrep%';

wsrep_cluster_size:应为 1(此时仅 node1 加入)

wsrep_local_state_comment:应为Synced(同步完成)

3.4 其他节点加入集群

代码语言:javascript
复制
systemctl start mariadb

3.5 再次检查集群状态

可以看到机器节点已经有3个节点。

代码语言:javascript
复制
SHOW STATUS LIKE 'wsrep%';

3.6 安全配置

代码语言:javascript
复制
mysql_secure_installation

按提示操作:

  • 输入当前 root 密码(首次为空,直接回车)
  • 设置新的 root 密码(所有节点需设置相同密码,否则同步可能失败)
  • 移除匿名用户(选 Y)
  • 禁止 root 远程登录(可选,若需远程管理可设为 N)
  • 删除 test 数据库(选 Y)
  • 刷新权限表(选 Y)
  • 注:这个版本安装完成以后没有这个命令,使用默认安装则有这个命令,但是这个并不影响集群功能验证。

3.7 验证多主集群

代码语言:javascript
复制
#任何一个执行
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
5 rows in set (0.047 sec)

MariaDB [(none)]> create database  abcd;
Query OK, 1 row affected (0.142 sec)
代码语言:javascript
复制
#另外任意一个节点执行
MariaDB [(none)]> show  databases;
+--------------------+
| Database           |
+--------------------+
| abcd               |
| information_schema |
| mysql              |
| performance_schema |
| sys                |
| test               |
+--------------------+
6 rows in set (0.045 sec)

MariaDB [(none)]> create database xyz;
Query OK, 1 row affected (0.128 sec)

四. 注意事项

1.MariaDB本身也支持主从配置。

2.MariaDB里面有引导节点的说法,如果集群崩溃(无法恢复)需要手工指定引导节点才能恢复。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-10-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 运维小路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MongoDB
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档