千家信息网

Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,小编给大家分享一下Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大
千家信息网最后更新 2026年11月02日Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境

小编给大家分享一下Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

一、MariaDB Galera Cluster概要:

1.简述:

MariaDB Galera Cluster 是一套在mysql innodb存储引擎上面实现multi-master及数据实时同步的系统架构,业务层面无需做读写分离工作,数据库读写压力都能按照既定的规则分发到各个节点上去。在数据方面完全兼容 MariaDB 和 MySQL。

2.特性:

(1).同步复制 Synchronous replication

(2).Active-active multi-master 拓扑逻辑

(3).可对集群中任一节点进行数据读写

(4).自动成员控制,故障节点自动从集群中移除

(5).自动节点加入

(6).真正并行的复制,基于行级

(7).直接客户端连接,原生的 MySQL 接口

(8).每个节点都包含完整的数据副本

(9).多台数据库中数据同步由 wsrep 接口实现

3.局限性

(1).目前的复制仅仅支持InnoDB存储引擎,任何写入其他引擎的表,包括mysql.*表将不会复制,但是DDL语句会被复制的,因此创建用户将会被复制,但是insert into mysql.user…将不会被复制的.

(2).DELETE操作不支持没有主键的表,没有主键的表在不同的节点顺序将不同,如果执行SELECT…LIMIT… 将出现不同的结果集.

(3).在多主环境下LOCK/UNLOCK TABLES不支持,以及锁函数GET_LOCK(), RELEASE_LOCK()…

(4).查询日志不能保存在表中。如果开启查询日志,只能保存到文件中。

(5).允许最大的事务大小由wsrep_max_ws_rows和wsrep_max_ws_size定义。任何大型操作将被拒绝。如大型的LOAD DATA操作。

(6).由于集群是乐观的并发控制,事务commit可能在该阶段中止。如果有两个事务向在集群中不同的节点向同一行写入并提交,失败的节点将中止。对 于集群级别的中止,集群返回死锁错误代码(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).

(7).XA事务不支持,由于在提交上可能回滚。

(8).整个集群的写入吞吐量是由最弱的节点限制,如果有一个节点变得缓慢,那么整个集群将是缓慢的。为了稳定的高性能要求,所有的节点应使用统一的硬件。

(9).集群节点建议最少3个。

(10).如果DDL语句有问题将破坏集群。

二、MariaDB Galera Cluster搭建演示
1 规划

  1. server1: 192.168.1.56


    1. server3: 192.168.1.81

    2. Galera SST user:sst

    3. Galera SST password:sstpass123

    4. MySQL root password:ESBecs00

    5. server2: 192.168.1.6


2.配置mariadb的yum源(三台机器都安装)

  1. [root@client137 ~]# vim /etc/yum.repos.d/mariadb.repo

  2. # yum源的内容如下:

    [mariadb]

    name = MariaDB

    baseurl = http://yum.mariadb.org/5.5/rhel6-amd64

    enabled = 1

    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB

    gpgcheck=1
    [root@client137 ~]# yum makecache



3.安装 MariaDB-Galera-server galera MariaDB-client(3台)

  1. # 启动测试一下

  2. [root@client137 ~]# /etc/init.d/mysql start

  3. Starting MySQL....

  4. [root@client137 ~]# chkconfig mysql on

  5. [root@client137 ~]# /usr/bin/mysql_secure_installation --设置root密码 ,也可登上去后set password

  6. # 登陆数据库,授权用于集群同步的用户和密码

    [root@client137 ~]# mysql -uroot -pESBecs00

    mysql> GRANT USAGE ON *.* to sst@'%' IDENTIFIED BY 'sstpass123';

    mysql> GRANT ALL PRIVILEGES on *.* to sst@'%';

    mysql> FLUSH PRIVILEGES;

    mysql> quit

    # 创建并配置wsrep.cnf文件

    [root@client137 ~]# cp /usr/share/mysql/wsrep.cnf /etc/my.cnf.d/

    [root@client137 ~]# vim /etc/my.cnf.d/wsrep.cnf



5 .配置每台机器的参数

  1. [root@client137 ~]# iptables -A INPUT -i eth0 -p tcp --dport 3306 -j ACCEPT

  2. [root@client137 ~]# iptables -A INPUT -i eth0 -p tcp --dport 4567 -j ACCEPT

  3. # 启动mariadb,查看3306和4567端口是否被监听

  4. [root@client137 ~]# /etc/init.d/mysql restart

  5. [root@client137 ~]# netstat -tulpn |grep -e 4567 -e 3306

  6. tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 32363/mysqld

  7. tcp 0 0 0.0.0.0:4567 0.0.0.0:* LISTEN 32363/mysqld

  8. 重启mariadb



7.新添加节点的配置

-d:以daemon模式运行

-a:集群地址

-g: 集群名称


9.测试集群是否配置好参数:

登陆数据库:

查看如下几个参数:

#以上详细参数注释:

监控状态参数说明:

(1).集群完整性检查:

wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群.

wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时"分区"了.当节点之间网络连接恢复的时候应该会恢复一样的值.

wsrep_cluster_size:如果这个值跟预期的节点数一致,则所有的集群节点已经连接.

wsrep_cluster_status:集群组成的状态.如果不为"Primary",说明出现"分区"或是"split-brain"状况.

(2).节点状态检查:

wsrep_ready: 该值为ON,则说明可以接受SQL负载.如果为Off,则需要检查wsrep_connected.

wsrep_connected: 如果该值为Off,且wsrep_ready的值也为Off,则说明该节点没有连接到集群.

wsrep_local_state_comment:如果wsrep_connected为On,但wsrep_ready为OFF,则可以从该项查看原因.

(3).复制健康检查:

wsrep_flow_control_paused:表示复制停止了多长时间.即表明集群因为Slave延迟而慢的程度.值为0~1,越靠近0越好,值为1表示复制完全停止.可优化wsrep_slave_threads的值来改善.

wsrep_cert_deps_distance:有多少事务可以并行应用处理.wsrep_slave_threads设置的值不应该高出该值太多.

wsrep_flow_control_sent:表示该节点已经停止复制了多少次.

wsrep_local_recv_queue_avg:表示slave事务队列的平均长度.slave瓶颈的预兆.

最慢的节点的wsrep_flow_control_sent和wsrep_local_recv_queue_avg这两个值最高.这两个值较低的话,相对更好.

(4).检测慢网络问题:

wsrep_local_send_queue_avg:网络瓶颈的预兆.如果这个值比较高的话,可能存在网络瓶

(5).冲突或死锁的数目:

wsrep_last_committed:最后提交的事务数目

wsrep_local_cert_failures和wsrep_local_bf_aborts:回滚,检测到的冲突数目

10.测试数据同步,一致等问题,这个测试不演示,概述一下大概思路:

(1).创建一个数据库,看是否同步

(2).数据库里分别创建一个innodb和myisam引擎的表,看是否同步

(3).分别往这两张表里插入数据,看是否同步,除innodb引擎数据可以同步,其余引擎是不同步

(4).在任意一节点插入,删除数据,看是否同步

11.在上面galera集群搭建完成后,我们可以借助于haproxy和lvs来实现mysql数据库集群之间的负载

这里就不演示,可以自己配置试试!

以上是"Mariadb如何利用MariaDB Galera Cluster实现mariadb的集群环境"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

集群 节点 数据 同步 事务 数据库 不同 引擎 配置 参数 网络 支持 检查 测试 环境 两个 内容 数目 状态 篇文章 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司排名 华服互联网科技靠谱吗 广东猪兼强互联网科技有限公司 河南云网互联网络科技有限公司 互联网科技公司的优势 贷财互联网科技 美国互联网前沿科技 汉立互联网科技有限公司联系电话 深圳前海聚择互联网科技有限公司 互联网和黑科技的看法 苏州五指互联网络科技有限 迪庆互联网科技招生 卓翼科技产业互联网合作 为客找房互联网科技公司怎么样 黑科技 体验场景 互联网大会 有人说阿里系是互联网科技企业 互联网与数字科技关系 中国互联网公司的科技投入 广州三三互联网科技有限公司 盐城市攀科互联网科技有限公司 互联网科技股 百单网互联网科技有限公司 河南真二互联网科技有限公司 互联网科技垄断 互联网科技资迅 猫创互联网科技 互联网科技的未来发展 广州新华互联网科技学校电竞方面 上海互联网科技园景观 山东亿川互联网科技有限责任公司
0