云计算百科
云计算领域专业知识百科平台

如何在服务器 Ubuntu 22.04 上部署 MariaDB 10.11 + Galera 多主高可用架构完整教程

在现代互联网架构中,高可用、可扩展的数据库集群是承载关键业务的基础设施核心。MariaDB 10.11 与 Galera Cluster 结合,能够实现真正的多主复制、高可用自动故障恢复和一致性保证。A5数据将基于 Ubuntu 22.04 操作系统,从硬件选型、系统调优、环境准备、MariaDB + Galera 安装、集群配置、性能测试与评估等完整流程进行技术深度讲解。


一、方案概览

在本教程中,我们将构建一个三节点的 MariaDB + Galera 多主集群:

  • 节点 A / B / C:三台独立服务器(物理或云主机均可)
  • 操作系统:Ubuntu Server 22.04 LTS x86_64
  • 数据库:MariaDB 10.11
  • 高可用组件:Galera wsrep
  • 负载均衡(可选):HAProxy + Keepalived

核心目标:

  • 实现三节点多主写入、读扩展
  • 自动故障检测与容错切换
  • 保证数据一致性(同步复制)

  • 二、香港服务器www.a5idc.com硬件与系统配置建议

    以下为推荐的硬件配置(根据业务规模调整):

    项目推荐配置等级参数说明
    CPU 中等/高 8 核以上(Intel Xeon / AMD EPYC)
    内存 中等/高 32GB 或更高
    存储 NVMe SSD 1TB NVMe SSD (至少 500MB/s+ 读写)
    网络 10GbE 低延迟高带宽(集群节点间)
    操作系统 最新稳定版 Ubuntu Server 22.04 LTS

    说明:

    • 关键是存储和网络性能,SSD 读写延迟低可提升同步复制性能。
    • 网络建议独立内网,用于 Galera 通信。

    三、系统准备与优化

    3.1 基础环境

    以三台服务器分别命名为 db-node1、db-node2、db-node3。假设 IP 如下:

    节点内网 IP
    db-node1 10.0.1.11
    db-node2 10.0.1.12
    db-node3 10.0.1.13

    3.2 系统优化参数

    编辑 sysctl 配置:

    cat <<EOF | sudo tee /etc/sysctl.d/99-mariadb-galera.conf
    net.core.somaxconn=1024
    net.ipv4.tcp_tw_reuse=1
    net.ipv4.ip_local_port_range=1024 65000
    fs.file-max=500000
    vm.swappiness=1
    EOF

    sudo sysctl –system

    设置文件句柄限制:

    cat <<EOF | sudo tee /etc/security/limits.d/99-mariadb.conf
    mysql soft nofile 100000
    mysql hard nofile 200000
    EOF


    四、安装 MariaDB 10.11 与 Galera

    4.1 添加官方源

    在三台节点上执行:

    sudo apt update
    sudo apt install -y software-properties-common
    sudo add-apt-repository 'deb [arch=amd64] https://mirror.mariadb.org/repo/10.11/ubuntu jammy main'
    sudo apt update

    4.2 安装 MariaDB Server

    sudo apt install -y mariadb-server galera-4 mariadb-backup

    验证版本:

    mysql –version
    # expected: mysql Ver 15.1 Distrib 10.11.x-MariaDB


    五、Galera 配置

    5.1 节点共用配置片段

    编辑 /etc/mysql/mariadb.conf.d/galera.cnf:

    [galera]
    # Galera settings
    wsrep_on=ON
    wsrep_provider=/usr/lib/galera/libgalera_smm.so

    # SST method (用于全量同步)
    wsrep_sst_method=rsync

    # 集群名字
    wsrep_cluster_name="mariadb_galera_cluster"

    # 三个节点的内网 IP 列表
    wsrep_cluster_address="gcomm://10.0.1.11,10.0.1.12,10.0.1.13"

    # Galera 序列默认端口
    wsrep_node_incoming_address="10.0.1.X"
    wsrep_node_name="db-nodeX"

    注意:

    • wsrep_node_incoming_address 与 wsrep_node_name 需分别在三台节点上设置不同值。

    5.2 MariaDB 配置重要参数

    在 /etc/mysql/mariadb.conf.d/50-server.cnf 中设置:

    [mysqld]
    bind-address=0.0.0.0
    binlog_format=ROW
    default_storage_engine=InnoDB
    innodb_autoinc_lock_mode=2

    # Galera 复制优化
    wsrep_slave_threads=4
    innodb_flush_log_at_trx_commit=2
    innodb_buffer_pool_size=12G
    innodb_log_file_size=512M
    innodb_file_per_table=1

    # 允许大量连接
    max_connections=1000

    解释关键项:

    • binlog_format=ROW:必需用于 Galera 的 row-based 复制。
    • innodb_autoinc_lock_mode=2:提高多主自增性能。
    • innodb_flush_log_at_trx_commit=2:在性能和安全间折中。

    六、引导集群与启动

    在 db-node1 上执行:

    sudo systemctl stop mariadb
    sudo galera_new_cluster

    确认已创建集群:

    mysql -u root -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
    # expected: 1

    在其他节点上:

    sudo systemctl restart mariadb

    检查集群大小应为 3:

    mysql -u root -e "SHOW STATUS LIKE 'wsrep_cluster_size';"
    # expected: 3

    如显示不正确,检查各节点的 /var/log/mysql/error.log。


    七、验证多主写入一致性

    在 db-node1:

    USE test;
    CREATE TABLE t1 (id INT PRIMARY KEY AUTO_INCREMENT, value VARCHAR(50));
    INSERT INTO t1 (value) VALUES ('node1_data');

    在 db-node2:

    SELECT * FROM test.t1;
    # expected: 同样可见 node1_data
    INSERT INTO t1 (value) VALUES ('node2_data');

    在任意节点验证:

    SELECT * FROM test.t1;
    # expected: node1_data, node2_data


    八、性能评估与指标监控

    8.1 集群关键指标

    参数说明
    wsrep_cluster_size 集群节点数量
    wsrep_ready 是否正常接受请求
    wsrep_flow_control_paused 流控等待
    wsrep_local_recv_queue 本地接收队列长度
    Threads_running 活跃线程数

    一键查看:

    watch -n 2 "mysql -e \\"SHOW STATUS LIKE 'wsrep_%';\\""

    8.2 压力测试

    使用 sysbench 进行压测:

    sudo apt install -y sysbench

    sysbench oltp_read_write \\
    –db-driver=mysql \\
    –mysql-user=root \\
    –mysql-db=test \\
    –tables=10 \\
    –table-size=100000 \\
    –threads=32 \\
    –time=600 \\
    run

    记录 QPS、事务响应时间等。


    九、自动故障转移与负载均衡设计(HA)

    9.1 安装 HAProxy

    在单独一台 LB 节点:

    sudo apt install -y haproxy

    HAProxy 配置 /etc/haproxy/haproxy.cfg 中加入:

    frontend mysql_front
    bind *:3306
    mode tcp
    default_backend mysql_back

    backend mysql_back
    mode tcp
    balance roundrobin
    option mysql-check user haproxy_check
    server db1 10.0.1.11:3306 check
    server db2 10.0.1.12:3306 check
    server db3 10.0.1.13:3306 check

    9.2 Keepalived(可选)

    提供 VIP 高可用。

    示例:

    vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    authentication {
    auth_type PASS
    auth_pass 1234
    }
    virtual_ipaddress {
    10.0.1.100/24
    }
    }


    十、SST 与 IST 机制详解

    机制触发条件特点
    SST 新节点加入、大差异 全量复制,开销较大
    IST 节点短暂中断后加入 增量同步,无需全量

    本教程使用 rsync,如需更高效建议使用 mariabackup:

    wsrep_sst_method=mariabackup
    wsrep_sst_auth="sst_user:password"


    十一、安全设置

    11.1 配置 MariaDB 用户

    CREATE USER 'sst_user'@'%' IDENTIFIED BY 'secure_password';
    GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT ON *.* TO 'sst_user'@'%';
    FLUSH PRIVILEGES;

    11.2 防火墙规则

    sudo ufw allow from 10.0.1.0/24 to any port 3306
    sudo ufw allow from 10.0.1.0/24 to any port 4567
    sudo ufw allow from 10.0.1.0/24 to any port 4568
    sudo ufw allow from 10.0.1.0/24 to any port 4444


    十二、常见故障排查

    12.1 节点无法加入集群

    检查:

    grep -i "wsrep" /var/log/mysql/error.log

    可能原因:

    • 网络不通
    • 配置间地址错误

    12.2 数据不一致

    使用 CHECKSUM TABLE 对比:

    CHECKSUM TABLE test.t1;


    结语

    A5数据本教程提供了在 Ubuntu 22.04 上部署 MariaDB 10.11 + Galera 多主高可用集群的完整流程与详细技术参数,包括硬件建议、系统优化、配置文件要点、集群启动、压力测试、安全加固等。通过逐步实战操作,能够构建一个稳定、高性能、可扩展的数据库服务。

    如需进一步结合业务特性(如读写分离策略、监控告警集成、备份策略规划等),可在此基础上扩展。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 如何在服务器 Ubuntu 22.04 上部署 MariaDB 10.11 + Galera 多主高可用架构完整教程
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!