ubuntu

Ubuntu MariaDB集群部署方案

小樊
37
2025-11-02 17:30:28
栏目: 云计算

Ubuntu MariaDB集群部署方案(基于Galera Cluster)

一、方案概述

MariaDB Galera Cluster是多主同步集群解决方案,支持任意节点读写、自动数据同步、故障自动转移和高一致性,适用于对高可用性要求高的生产环境(如金融、电商等)。本方案基于Ubuntu系统(推荐22.04及以上版本),采用3节点部署(最小高可用配置),使用rsync作为状态快照传输(SST)方法。

二、准备工作

1. 环境要求

2. 软件版本

三、详细部署步骤

1. 安装MariaDB

在所有节点执行以下命令,安装MariaDB Server及客户端:

sudo apt update && sudo apt upgrade -y  # 更新系统包
sudo apt install mariadb-server mariadb-client -y  # 安装MariaDB

2. 配置MariaDB集群

2.1 创建Galera配置文件

在每个节点的/etc/mysql/mariadb.conf.d/目录下创建99-cluster.cnf文件(避免与默认配置冲突):

sudo nano /etc/mysql/mariadb.conf.d/99-cluster.cnf

添加以下内容(需替换为实际节点IP):

[mysqld]
# 基础配置
bind-address = 0.0.0.0  # 允许远程访问
default-storage-engine = InnoDB  # 使用InnoDB引擎(Galera仅支持InnoDB)
innodb_autoinc_lock_mode = 2  # 解决自增ID冲突
binlog_format = ROW  # 行级复制(保证数据一致性)

# Galera集群配置
wsrep_on = ON  # 开启Galera功能
wsrep_provider = /usr/lib/galera/libgalera_smm.so  # Galera驱动路径(Ubuntu默认路径)
wsrep_cluster_name = "ubuntu_mariadb_cluster"  # 集群唯一名称(所有节点必须一致)
wsrep_cluster_address = "gcomm://192.168.1.101,192.168.1.102,192.168.1.103"  # 所有节点IP列表(初始化时用)
wsrep_node_address = "192.168.1.101"  # 当前节点IP(需与服务器实际IP一致)
wsrep_node_name = "node1"  # 当前节点名称(自定义,如node1/node2/node3)
wsrep_sst_method = rsync  # 状态快照传输方法(可选rsync/xtrabackup-v2,rsync更简单)
wsrep_sst_auth = sst_user:sst_password  # SST用户及密码(用于数据同步,需提前创建)

2.2 创建SST用户(可选但推荐)

为保证数据同步安全,创建专用SST用户(仅在第一个节点执行):

mysql -u root -p

在MySQL shell中执行:

CREATE USER 'sst_user'@'%' IDENTIFIED BY 'sst_password';  -- 创建用户
GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sst_user'@'%';  -- 授权
FLUSH PRIVILEGES;  -- 刷新权限
EXIT;

3. 初始化集群

3.1 启动第一个节点(初始化集群)

第一个节点(如192.168.1.101)上执行以下命令,初始化集群:

sudo systemctl stop mariadb  # 停止MariaDB服务(若已启动)
galera_new_cluster  # 初始化集群(生成集群UUID)
sudo systemctl start mariadb  # 启动MariaDB服务

3.2 启动其他节点

第二个节点(如192.168.1.102)和第三个节点(如192.168.1.103)上执行以下命令,加入集群:

sudo systemctl restart mariadb  # 重启MariaDB服务(会自动连接集群)

4. 验证集群状态

任意节点上执行以下命令,检查集群是否正常运行:

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size';"

若输出结果中wsrep_cluster_size的值等于节点数量(如3),则表示集群部署成功。

四、可选优化(负载均衡与监控)

1. 配置HAProxy负载均衡(提升可用性)

安装HAProxy并配置负载均衡,将请求分发到各个MariaDB节点:

sudo apt install haproxy -y  # 安装HAProxy

编辑HAProxy配置文件(/etc/haproxy/haproxy.cfg),添加以下内容:

frontend mysql_front
    bind 192.168.1.200:3306  # HAProxy监听IP(负载均衡器IP)
    default_backend mysql_back

backend mysql_back
    balance roundrobin  # 轮询算法
    server node1 192.168.1.101:3306 check  # 节点1
    server node2 192.168.1.102:3306 check  # 节点2
    server node3 192.168.1.103:3306 check  # 节点3

重启HAProxy:

sudo systemctl restart haproxy

此后,应用程序可通过192.168.1.200:3306访问MariaDB集群。

2. 监控与日志

五、注意事项

1. 网络要求

2. 数据一致性

3. 故障恢复

通过以上步骤,可在Ubuntu系统上快速部署高可用的MariaDB Galera Cluster,满足企业级生产环境的需求。

0
看了该问题的人还看了