MariaDB Galera Cluster 介绍

简介


MariaDB集群是MariaDB同步多主机集群,仅支持XtraDB(详见本文结尾注释)/InnoDB存储引擎(虽然有对MyISAM实验支持 - 看wsrep_replicate_myisam系统变量)

主要功能

  • 同步复制 --- Galera主从复制是同步的,底层依赖rsync;
  • 真正的multi-master,即所有节点可以同时读写数据库;
  • 自动的节点成员控制,失效节点自动被清除;
  • 新节点加入数据自动复制;
  • 真正的并行复制,行级;
  • 用户可以直接连接集群,使用感受上与MySQL完全一致;

优势

  • 因为是多主,所以不存在Slavelag(延迟)    不存在丢失事务的情况
  • 同时具有读和写的扩展能力
  • 更小的客户端延迟
  • 节点间数据是同步的,而Master/Slave模式是异步的,不同slave上的binlog可能是不同的

说明

Galera集群的复制功能基于Galeralibrary实现,为了让MySQL与Galera library通讯,特别针对MySQL开发了wsrep API。

以下内容摘自于 https://mariadb.com/kb/en/mariadb/getting-started-with-mariadb-galera-cluster/,是在发布MariaDB 10.1版本时摘录的
MariaDB Galera Cluster is MariaDB plus the MySQL-wsrep patch from Codership. It is currently available on Linux only.
#翻译:MariaDB Galera集群是MariaDB加上来自于诺基亚的MySQL-wsrep补丁。 它目前仅在Linux上可用。

In
MariaDB 5.5 and MariaDB 10.0, MariaDB Galera Server is a separate
package installed instead of the standard MariaDB Server package. In
MariaDB 10.1 the MariaDB Server and MariaDB Galera Server packages have
been combined and Galera packages and their dependencies get installed
automatically when installing MariaDB. The Galera parts remain dormant until configured, like a plugin or storage engine.
#翻译: 在MariaDB 5.5和MariaDB 10.0中,MariaDB Galera Server是一个单独的软件包,而不是标准的MariaDB Server软件包。 在MariaDB 10.1中,MariaDB Server和MariaDB Galera服务器软件包已合并,Galera软件包及其依赖关系在安装MariaDB时自动安装。 Galera部分在配置之前保持休眠状态,就像插件或存储引擎一样。

早期的MariaDB Galera Cluster架构

  1. haproxy作为MariaDB Galera Cluster的前端
  2. 2台haproxy用keepalived避免单点故障
  3. 3台MariaDB和一个garbd仲裁节点组成集群,仲裁节点上无数据
  4. Galera的SST采用Percona提供的XtraBackup(防止锁表,非阻塞)
  5. 配置文件 /etc/my.cnf.d/wsrep.cnf
    wsrep_ready 为ON
    为防止脑裂引入仲裁人arbitrator

早期版本的架构和安装配置和现在有很大不同,这里仅作为了解,不必关注。
*值得注意的是目前的MariaDB 10版本演进中,各升级版本的安装和配置也是不同的,所以在安装的时候一定要根据自身版本参照与之相匹配的安装设置文档进行。

监控

  • 查看集群节点地址:mysql> show variables like 'wsrep_cluster_address';
  • 查看MySQL版本: mysql> SHOW GLOBAL VARIABLES LIKE 'version';
  • 查看wsrep版本: mysql> SHOW GLOBAL STATUS LIKE 'wsrep_provider_version';
  • 查看wsrep有关的所有变量: mysql> SHOW VARIABLES LIKE 'wsrep%' \G
  • 查看Galera集群状态: mysql> show status like 'wsrep

监控状态参数说明

  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_cluster_address或wsrep_cluster_name等配置错造成的.具体错误需要查看错误日志)
    • 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:回滚,检测到的冲突数目

注释

XtraDB

XtraDB存储引擎是由Percona开发的一款MySQL数据库的高性能存储引擎,其目的是用来代替InnoDB存储引擎,可用于需要更高性能的环境。
可以看作是InnoDB存储引擎的增强版本,它在InnoDB上进行了大量的修改和patched,它完全兼容InnoDB,且提供了很多InnoDB不具备的有用的功能。
例如:在多核CPU上面的性能和伸缩性要更好;对于内存的分配和使用也要更好;也解除了InnoDB的很多限制;提供了比InnoDB更多的配置和性能监控参数。
对于高负载的MySQL应用来说,如果不需要MySQL官方技术支持的话,完全可以使用XtraDB来代替InnoDB存储引擎。此外,Percona还提供了打了补丁的MySQL版本,这些补丁对MySQL很多方面进行了改进,性能提高,增加更多监控参数等等。据说JavaEye的数据库就是使用了Percona的版本。
当前XtraDB的最新版本是1.0.4-8(release-8)
https://www.percona.com/ 提供开源和技术服务,目前只在美国和欧洲设置联络处
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server 5.5.17,最新到了5.7版

-本章完-

2017-02-23

构建 MariaDB Galera Cluster 分布式数据库集群(一)的更多相关文章

  1. 构建 MariaDB Galera Cluster 分布式数据库集群(二)

    MariaDB的安装 构建 MariaDB Galera Cluster之前,首先安装MariaDB,本文使用的版本是10.1 1.环境准备 主机: MariaDB01(192.168.56.102) ...

  2. 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数

    超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...

  3. MariaDB+Galera+Haproxy+Keepalived搭建集群

    1.MariaDB Galera Cluster介绍 MariaDB Galera Cluster是MariaDB同步多主机集群,它仅支持XtraDB/InnoDB存储引擎,在MySQLInnoDB存 ...

  4. Galera Cluster mysql+keepalived集群部署

    1.卸载mysql 查找本机安装的mysqlrpm -qa | grep -i mysql --nodeps --force rpm -ev MySQL-server-5.6.15-1.el6.x86 ...

  5. 数据库–Cobar分布式数据库集群MySQL中间件

    运行环境: 主机1:Ubuntu14.04 Desktop + MySQL5.5 + JDK 1.7(HP Z400)  内网IP地址:192.168.137.8 NODE1:Ubuntu 13.04 ...

  6. 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)

    这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...

  7. 使用分布式数据库集群做大数据分析之OneProxy

    一.十亿数据,轻松秒出 实时监控领域有两个显著的特点,一是数据来源很多而且数据量大,有来自监控摄像头.GPS.智能设备等:二是需要实时处理.我们的客户在做实时处理时,就遇到这样的问题.客户的某个数据表 ...

  8. Ubuntu 下 Galera cluster for MySQL 集群安装

    mysql galera cluster官网:http://galeracluster.com/documentation-webpages/ 相关安装教程:(不一定管用) http://blog.c ...

  9. Galera Cluster for MySQL 集群恢复

    node1: 1.rm -rf grastate.dat 2.mysqld_safe --wsrep-recover 3.galera_new_cluster node2: systemctl res ...

随机推荐

  1. 在ASP.Net MVC 中如何实现跨越Session的分布式TempData

    Hi,guys!Long time no see! 1.问题的引出 我相信大家在项目中都使用过TempData,TempData是一个字典集合,一般用于两个请求之间临时缓存数据或者页面之间传递消息.也 ...

  2. v9 调用模型中新增的字段

    在模型中新增字段的时候,可以选择“是否为主表”. 若选是,则前台调用可直接通过字段名调用. 若选否,在前台调用是应在{pc:content}中添加 moreinfo="1",表示允 ...

  3. Feign使用Hystrix无效原因及解决方法

    最近项目重构使用了Spring Boot和Spring Cloud.这两者结合确实给项目带来了方便,同时也遇到了一些问题.其中使用feign作为服务消费,但是断路器hystrix一直不起作用让人很费解 ...

  4. 中学之Vim实践课程

    今天转发娄老师的一篇VIM编辑器的文章,很赞哦!(值得收藏)文后的参考资料记得看一看,也很棒!                               原文地址:http://www.cnblog ...

  5. 关于tween.js 封装的方法

    今天做的是匀速情况下div的运动.首先开始之前先了解运动的原理 A------------>>BA移动到B 这段距离是总距离 用一个变量保存下来:var dA移动到B 移动的总次数  用一 ...

  6. 在PHP中连接数据库的八大步骤

                                                                                   连接数据库的八大步骤  Step1:链接数 ...

  7. Oracle数据库概念和一些基本的SQL语句

    1.数据 定义:描述事物的符号.例如:文本.音频.视频都是数据. 2.数据库 存放数据的仓库,存放在计算机中,按照一定格式存放,可以为用户共享. 3.数据库的发展阶段 1.网状数据库 2.层次数据库 ...

  8. JavaScript学习笔记(二)——选项卡小结

    Js制作选项卡小结 1.先构思好需要展示的页面效果,比如这样 2.需要显示的效果通过html和css制作出来,包括选项(第一课.第二课)的鼠标停留背景变色.下方选项页内容切换的内容等. 3.把此选项卡 ...

  9. C#注册表操作类--完整优化版

    using System; using System.Collections.Generic; using System.Text; using Microsoft.Win32; namespace ...

  10. Vijos 1981 跳石头 二分

    描述 一年一度的"跳石头"比赛又要开始了! 这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石.组委会已经选择好了两块岩石作为比赛起点和终点.在起点和终点之间,有 N 块岩 ...