温馨提示×

Debian MariaDB集群搭建步骤解析

小樊
46
2025-10-04 13:28:05
栏目: 云计算

一、环境准备

  • 基础环境:选择3台及以上Debian系统服务器(如Debian 10/12),确保服务器之间网络互通(延迟≤10ms),防火墙开启对应端口(3306:MariaDB服务端口;4444:状态快照传输端口;4567:复制流量端口;4568:增量状态转移端口)。
  • 版本一致性:所有节点必须安装相同版本的MariaDB(如10.3/10.4/10.11),避免因版本差异导致数据同步失败。可通过apt list --installed | grep mariadb-server确认版本。

二、添加MariaDB官方源(可选但推荐)

  • 若系统自带MariaDB版本过旧,需添加官方源以获取最新稳定版。以Debian 12为例:
    1. 导入MariaDB官方GPG密钥:sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
    2. 添加官方源:sudo add-apt-repository 'deb [arch=amd64] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.11/debian bookworm main'(替换为对应版本和系统代号)。
    3. 更新软件包列表:sudo apt update

三、安装MariaDB与Galera组件

  • 在所有节点执行:sudo apt install mariadb-server galera-4 rsync -y。其中:
    • mariadb-server:MariaDB数据库核心服务;
    • galera-4:Galera集群同步引擎(MariaDB 10.1+版本已集成,无需单独安装);
    • rsync:数据同步工具,用于Galera集群的状态转移。

四、配置MariaDB集群(所有节点)

  • 编辑集群配置文件(通常位于/etc/mysql/conf.d/galera.cnf),添加以下核心参数(需根据实际IP调整):
    [mysqld]
    # 基础配置
    binlog_format=ROW          # 必须使用ROW格式保证数据一致性
    default-storage-engine=innodb  # 推荐使用InnoDB引擎(支持事务)
    innodb_autoinc_lock_mode=2     # 解决自增ID冲突
    query_cache_size=0           # 关闭查询缓存(提升集群性能)
    query_cache_type=0
    bind-address=0.0.0.0         # 允许远程访问
    
    # Galera集群配置
    wsrep_provider=/usr/lib/galera/libgalera_smm.so  # Galera提供者路径(MariaDB 10.4+可能位于/lib/x86_64-linux-gnu/galera)
    wsrep_cluster_name="my_wsrep_cluster"            # 集群名称(所有节点必须一致)
    wsrep_cluster_address="gcomm://192.168.1.131,192.168.1.132,192.168.1.133"  # 所有节点IP列表(初始节点用此格式,后续节点去掉自身IP)
    wsrep_node_name="node1"                          # 当前节点名称(唯一标识,如node1/node2)
    wsrep_node_address="192.168.1.131"               # 当前节点IP
    wsrep_sst_method=rsync                           # 数据同步方法(推荐rsync,简单高效;也可选xtrabackup)
    
  • 注意wsrep_cluster_address初始节点需填写所有节点IP,后续添加的节点需移除自身IP(如node2配置为gcomm://192.168.1.131,192.168.1.133)。

五、初始化并启动集群

  • 第一步:停止所有节点的MariaDB服务sudo systemctl stop mariadb(确保所有节点处于停止状态)。
  • 第二步:启动第一个节点(初始化集群):在初始节点(如node1)执行:sudo systemctl start mariadb --wsrep-new-cluster--wsrep-new-cluster参数表示初始化集群,仅第一次启动需要)。
  • 第三步:启动后续节点:在其他节点执行:sudo systemctl start mariadb(会自动连接到已初始化的集群)。
  • 第四步:验证集群状态
    1. 登录任意节点MariaDB:mysql -u root -p
    2. 执行SQL查询集群大小:SELECT VARIABLE_VALUE AS "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size"。若返回值等于节点数量,则说明集群初始化成功。

六、配置MariaDB远程访问(可选但常用)

  • 登录MariaDB:mysql -u root -p
  • 执行授权命令(允许root用户从任意IP访问,生产环境建议限制为特定IP段):
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'YourStrongPassword' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    
  • 修改MariaDB绑定地址:编辑/etc/mysql/mariadb.conf.d/50-server.cnf,注释bind-address = 127.0.0.1(取消本地绑定),保存后重启服务:sudo systemctl restart mariadb

七、防火墙放通端口

  • 使用ufw(Ubuntu默认防火墙)或iptables放通所需端口(以ufw为例):
    sudo ufw allow 3306/tcp       # MariaDB服务端口
    sudo ufw allow 4444/tcp       # 状态快照传输端口
    sudo ufw allow 4567/tcp       # 复制流量端口
    sudo ufw allow 4568/tcp       # 增量状态转移端口
    sudo ufw enable               # 启用防火墙
    

八、添加新节点(集群扩容)

  • 在新节点上安装MariaDB和Galera组件(步骤同三)。
  • 配置galera.cnf文件,将wsrep_cluster_address修改为现有集群节点IP列表(如gcomm://192.168.1.131,192.168.1.132,192.168.1.133)。
  • 启动新节点服务:sudo systemctl start mariadb(会自动同步现有集群数据)。
  • 验证新节点是否加入集群:通过任意节点执行SELECT VARIABLE_VALUE AS "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size",确认返回值增加1。

0