debian

Debian MariaDB集群如何搭建

小樊
50
2025-09-21 17:57:00
栏目: 云计算

Debian环境下搭建MariaDB Galera Cluster多主集群指南

一、准备工作

  1. 节点规划:至少准备3台Debian服务器(如galera-node1galera-node2galera-node3),确保IP可达且系统已更新(sudo apt update && sudo apt upgrade -y)。
  2. 软件要求:所有节点需安装相同版本的MariaDB(推荐10.3及以上)和Galera provider(如galera-4)。
  3. 网络配置:关闭SELinux(若启用)、配置主机名解析(/etc/hosts中添加节点IP与主机名映射),确保节点间SSH免密登录。

二、安装MariaDB与Galera组件

在所有节点上执行以下命令,安装MariaDB Server及Galera provider:

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

安装完成后,MariaDB服务会自动启动,可通过systemctl status mariadb确认状态。

三、配置Galera Cluster(以node1为例)

编辑/etc/mysql/mariadb.conf.d/50-server.cnf(或/etc/mysql/conf.d/galera.cnf),添加/修改以下配置:

[mysqld]
# 基础配置
bind-address = 0.0.0.0  # 允许远程连接
default-storage-engine = InnoDB  # 必须使用InnoDB引擎
innodb_autoinc_lock_mode = 2  # 支持并行复制
binlog_format = ROW  # 必须使用ROW格式

# Galera集群配置
wsrep_on = ON  # 开启Galera功能
wsrep_provider = /usr/lib/galera/libgalera_smm.so  # Galera provider路径(Debian默认路径)
wsrep_cluster_address = "gcomm://192.168.100.111,192.168.100.112,192.168.100.113"  # 所有节点IP列表(首次启动需完整)
wsrep_node_address = 192.168.100.111  # 当前节点IP
wsrep_node_name = galera-node1  # 当前节点名称(自定义,需唯一)
wsrep_cluster_name = MariaDB_Cluster  # 集群名称(所有节点需一致)
wsrep_sst_method = xtrabackup-v2  # 数据同步方法(推荐xtrabackup-v2,需安装xtrabackup)

注意wsrep_cluster_address在首次启动时需包含所有节点IP,后续节点加入时可简化为gcomm://(由集群自动发现)。

四、启动集群(node1节点)

  1. 停止MariaDB服务(所有节点均需执行):
    sudo systemctl stop mariadb
    
  2. 在node1上启动集群
    使用galera_new_cluster脚本启动第一个节点(该脚本会传递--wsrep-new-cluster参数,避免因无其他节点而启动失败):
    sudo galera_new_cluster
    
  3. 验证node1状态
    登录MariaDB,执行以下命令查看集群状态:
    mysql -uroot -p -e "SHOW STATUS LIKE 'wsrep%';"
    
    关键指标说明:
    • wsrep_cluster_size:集群节点数(应为1,后续节点加入后会增加);
    • wsrep_ready:是否准备好接收连接(应为ON);
    • wsrep_connected:是否连接到集群(应为ON)。

五、加入其他节点(node2、node3)

在node2、node3上重复以下步骤:

  1. 停止MariaDB服务
    sudo systemctl stop mariadb
    
  2. 修改配置文件
    wsrep_cluster_address更新为所有节点IP列表(如"gcomm://192.168.100.111,192.168.100.112,192.168.100.113"),并设置当前节点的wsrep_node_addresswsrep_node_name
  3. 启动MariaDB服务
    sudo systemctl start mariadb
    
  4. 验证节点状态
    登录MariaDB,执行SHOW STATUS LIKE 'wsrep%';,确认wsrep_cluster_size增加至3(所有节点均已加入)。

六、验证集群功能

  1. 多主写入测试
    在任意节点插入数据,检查其他节点是否能同步:
    -- 在node1上执行
    CREATE DATABASE test_cluster;
    USE test_cluster;
    CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50));
    INSERT INTO users (name) VALUES ('Alice'), ('Bob');
    
    -- 在node2上执行
    USE test_cluster;
    SELECT * FROM users;  -- 应能看到Alice、Bob两条记录
    
  2. 故障转移测试
    停止node1的MariaDB服务(sudo systemctl stop mariadb),在node2上插入数据,确认node3仍能同步(验证集群无单点故障)。

七、安全加固(可选但推荐)

  1. 防火墙放通端口
    使用ufwiptables放通以下端口(所有节点):
    sudo ufw allow 3306/tcp  # MariaDB客户端连接
    sudo ufw allow 4567/tcp  # Galera复制流量
    sudo ufw allow 4567/udp  # Galera多播
    sudo ufw allow 4444/tcp  # SST传输
    sudo ufw allow 4568/tcp  # IST传输
    
  2. 远程访问控制
    在MariaDB中授权远程用户(如root):
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'StrongPassword' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  3. 定期备份
    使用mysqldumpxtrabackup定期备份数据,建议配置自动化备份脚本。

通过以上步骤,即可在Debian环境下搭建高可用的MariaDB Galera Cluster多主集群,实现数据的实时同步、多主写入及故障自动转移。

0
看了该问题的人还看了