首页主机资讯Linux MariaDB集群部署方案

Linux MariaDB集群部署方案

时间2025-10-10 14:49:03发布访客分类主机资讯浏览778
导读:Linux环境下MariaDB集群部署方案(以Galera Cluster为例) 一、方案概述 MariaDB Galera Cluster是多主同步复制集群解决方案,支持数据强一致性、高可用性和横向扩展,适用于需要高并发读写、零数据丢失的...

Linux环境下MariaDB集群部署方案(以Galera Cluster为例)

一、方案概述

MariaDB Galera Cluster是多主同步复制集群解决方案,支持数据强一致性、高可用性和横向扩展,适用于需要高并发读写、零数据丢失的场景。其核心特点包括:同步复制(所有节点数据实时一致)、多主写入(任意节点均可执行写操作)、自动故障转移(节点宕机后自动剔除,剩余节点继续提供服务)。

二、前置准备

  1. 环境要求

    • 至少3台Linux服务器(推荐Ubuntu 22.04+/CentOS 8+),配置静态IP地址;
    • 所有节点之间SSH免密互访(通过ssh-keygenssh-copy-id配置);
    • 网络延迟≤10ms(同步复制对网络要求高,建议部署在同一机房或云服务商同一可用区)。
  2. 软件要求

    • MariaDB版本≥10.1(支持Galera插件);
    • Galera Provider库(如mariadb-galera-cluster,部分发行版需单独安装)。

三、详细部署步骤

1. 安装MariaDB与Galera组件

在所有节点上执行以下命令,安装MariaDB及Galera集群组件:

# Ubuntu/Debian示例
sudo apt update &
    &
     sudo apt install -y mariadb-server mariadb-client mariadb-galera-cluster rsync

# CentOS/RHEL示例
sudo yum install -y mariadb-server mariadb galera

安装完成后,MariaDB服务会自动启动,初始状态为单机模式

2. 配置MariaDB集群参数

编辑每个节点的MariaDB配置文件(路径因发行版而异,常见为/etc/mysql/mariadb.conf.d/50-server.cnf/etc/my.cnf.d/server.cnf),在[mysqld] section添加以下配置:

[mysqld]
# 基础配置
bind-address          = 0.0.0.0                # 允许远程访问
default-storage-engine= InnoDB                 # 必须使用InnoDB引擎(Galera仅支持InnoDB)
innodb_autoinc_lock_mode= 2                    # 自增锁模式(同步复制要求)
binlog_format         = ROW                    # 二进制日志格式(同步复制要求)

# Galera集群配置
wsrep_on              = ON                     # 开启Galera功能
wsrep_provider        = /usr/lib/galera/libgalera_smm.so  # Galera provider库路径(Ubuntu/Debian)
# wsrep_provider        = /usr/lib64/galera/libgalera_smm.so  # CentOS/RHEL路径
wsrep_cluster_name    = my_galera_cluster      # 集群名称(所有节点必须一致)
wsrep_cluster_address = gcomm://node1_ip,node2_ip,node3_ip  # 初始集群地址(首次初始化为空)
wsrep_node_address    = node_current_ip        # 当前节点IP地址
wsrep_node_name       = node1                  # 当前节点名称(需唯一,如node1/node2/node3)
wsrep_sst_method      = xtrabackup-v2          # 数据同步方法(推荐xtrabackup,性能更好)
wsrep_sst_auth        = sstuser:sstpassword    # SST用户及密码(用于数据同步认证)

注意wsrep_cluster_address在首次初始化集群时需设置为gcomm://(空值),后续加入节点时再填写完整节点列表。

3. 初始化集群(第一个节点)

第一个节点上执行以下命令,创建Galera集群:

# 登录MariaDB并创建SST用户(用于数据同步)
mysql -u root -p -e "
CREATE USER 'sstuser'@'%' IDENTIFIED BY 'sstpassword';
    
GRANT ALL PRIVILEGES ON *.* TO 'sstuser'@'%';
    
FLUSH PRIVILEGES;
    "

# 初始化集群(启动第一个节点)
sudo galera_new_cluster

说明galera_new_cluster命令会启动集群并生成集群UUID,后续节点需通过该UUID加入集群。

4. 加入其他节点

第二个及后续节点上,修改配置文件中的wsrep_cluster_address为完整节点列表(如gcomm://node1_ip,node2_ip,node3_ip),然后重启MariaDB服务:

# 修改配置文件中的wsrep_cluster_address(如上述配置)
sudo systemctl restart mariadb

节点重启后,会自动连接到集群并同步数据。

5. 验证集群状态

任意节点上登录MariaDB,执行以下命令检查集群状态:

SHOW STATUS LIKE 'wsrep%';
    

重点关注以下指标:

  • wsrep_cluster_size:集群节点数量(应等于已加入节点的总数);
  • wsrep_ready:集群是否就绪(值为ON表示正常);
  • wsrep_connected:节点是否连接到集群(值为ON表示正常)。

四、可选优化与扩展

1. 配置负载均衡(HAProxy)

为提升集群的读性能和可用性,可通过HAProxy实现负载均衡,将请求分发到多个MariaDB节点:

# 安装HAProxy
sudo apt install -y haproxy  # Ubuntu/Debian
sudo yum install -y haproxy  # CentOS/RHEL

# 配置HAProxy(编辑/etc/haproxy/haproxy.cfg)
frontend mysql_front
    bind 192.168.1.100:3306  # HAProxy监听IP(虚拟VIP)
    default_backend mysql_back

backend mysql_back
    balance roundrobin       # 轮询算法
    server node1 192.168.1.11:3306 check port 9200 inter 2000 rise 2 fall 3
    server node2 192.168.1.12:3306 check port 9200 inter 2000 rise 2 fall 3
    server node3 192.168.1.13:3306 check port 9200 inter 2000 rise 2 fall 3

# 重启HAProxy
sudo systemctl restart haproxy

说明balance roundrobin表示轮询分发请求,check表示健康检查(端口9200为MariaDB的status端口,需在MariaDB配置中开启)。

2. 监控集群状态

通过Prometheus+GranafaZabbix搭建监控系统,监控以下指标:

  • 节点状态(wsrep_readywsrep_connected);
  • 集群大小(wsrep_cluster_size);
  • 复制延迟(wsrep_local_recv_queue_len);
  • 磁盘IO、CPU利用率等系统指标。

3. 数据备份策略

即使Galera Cluster支持同步复制,仍需定期备份数据,推荐使用mariabackup(MariaDB官方备份工具):

# 安装mariabackup
sudo apt install -y mariadb-backup  # Ubuntu/Debian
sudo yum install -y mariadb-backup  # CentOS/RHEL

# 全量备份(示例)
sudo mariabackup --user=root --password=your_password --backup --target-dir=/backup/full

# 恢复备份(示例)
sudo mariabackup --user=root --password=your_password --prepare --target-dir=/backup/full
sudo mariabackup --user=root --password=your_password --copy-back --target-dir=/backup/full

五、注意事项

  1. 网络稳定性:Galera Cluster对网络延迟和丢包率敏感,建议使用专线或高质量云网络;
  2. 节点数量:生产环境建议至少部署3个节点(奇数节点可避免脑裂);
  3. 数据一致性:同步复制会降低写性能,需根据业务需求调整innodb_flush_log_at_trx_commit(如设为2可提升性能,但会牺牲部分持久性);
  4. 版本兼容性:所有节点需使用相同版本的MariaDB和Galera Provider,避免兼容性问题。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Linux MariaDB集群部署方案
本文地址: https://pptw.com/jishu/722501.html
如何在Linux上迁移MariaDB数据 MariaDB在Linux上的安全性增强措施

游客 回复需填写必要信息