温馨提示×

MariaDB在Linux上的集群部署方案

小樊
39
2025-09-06 16:20:29
栏目: 云计算

MariaDB在Linux上的集群部署方案以Galera Cluster为主,以下是核心步骤及要点:

一、环境准备

  • 节点要求:至少3个节点(奇数节点避免脑裂),需配置静态IP,确保节点间网络互通(开放3306、4567等端口)。
  • 系统要求:所有节点使用相同操作系统(如CentOS 7/8、Ubuntu 20.04+),安装相同版本的MariaDB。

二、安装MariaDB

  • CentOS:添加MariaDB官方仓库,安装mariadb-servergalera包。
    sudo yum install -y mariadb-server galera 
  • Ubuntu:直接安装mariadb-server(含Galera依赖)。
    sudo apt-get install -y mariadb-server 

三、配置Galera Cluster

  1. 修改配置文件(以节点1为例):
    编辑/etc/my.cnf.d/server.cnf/etc/mysql/mariadb.conf.d/60-galera.cnf,添加以下内容:

    [galera] wsrep_on=ON wsrep_provider=/usr/lib64/galera/libgalera_smm.so wsrep_cluster_name="my_cluster" wsrep_cluster_address="gcomm://node1_ip,node2_ip,node3_ip" wsrep_node_name="node1" wsrep_node_address="node1_ip" wsrep_sst_method=xtrabackup-v2 # 或mariabackup(推荐)  wsrep_sst_auth="sst_user:sst_password" # 需提前创建用户  binlog_format=ROW default_storage_engine=InnoDB 

    其他节点需修改wsrep_node_namewsrep_node_address为对应值。

  2. 创建SST用户(在所有节点执行):

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

四、启动集群

  1. 初始化首个节点(引导集群)
    sudo systemctl stop mariadb sudo galera_new_cluster # 仅在首个节点执行  sudo systemctl start mariadb 
  2. 启动其他节点
    sudo systemctl restart mariadb 

五、验证集群状态

  • 检查节点数
    SHOW STATUS LIKE 'wsrep_cluster_size'; 
    正常应显示集群节点数(如3个节点)。
  • 测试数据同步
    在节点1创建数据库/表并插入数据,验证其他节点是否能实时同步。

六、高可用优化(可选)

  • 负载均衡:使用HAProxy或ProxySQL分发读请求,避免单节点压力过大。
  • 监控告警:集成Prometheus+Grafana监控wsrep指标(如wsrep_cluster_sizewsrep_ready)。
  • 故障自动切换:结合Pacemaker+Corosync实现节点故障自动剔除与恢复。

注意事项

  • 存储引擎限制:仅支持InnoDB/XtraDB,需提前确认表引擎。
  • 网络延迟:建议部署在低延迟内网,避免因网络问题导致集群不稳定。
  • 大事务处理:避免单事务过大(默认限制1GB),可拆分事务或调整innodb_buffer_pool_size

参考来源

0