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. openvpn配置注意事项

    1.安装VPN安装结束后,需要配置CONFIG文件夹服务端及客户端的配置文件,建议从sample文件里直接拷贝修改,网上的一些案例会引起无法启动的问题,没仔细研究过是哪里错了,反正最后从sample里 ...

  2. python 标准库 -- pickle & cPickle

    pickle & cPickle pickle 和 cPickle 除了导入名称不一样之外, 使用方法, 均一样. pickle 导入 import pickle cPickle 导入 imp ...

  3. 解决ionic在Android和iOS的一些样式上的冲突

    //设置默认返回按钮的文字 $ionicConfigProvider.backButton.previousTitleText(false).text('返回'); // 设置全局 $http 超时 ...

  4. [SDOI2010]所驼门王的宝藏

    题目描述 在宽广的非洲荒漠中,生活着一群勤劳勇敢的羊驼家族.被族人恭称为"先知"的Alpaca L. Sotomon是这个家族的领袖,外人也称其为"所驼门王". ...

  5. win7老是弹出“Windows Media PIayer网络共享服务配置应用程序 已停止工作”

    应是优化软件的时候把服务禁止启动了. 我的电脑 > 管理 > 服务和应用程序 > 服务 Windows Media Player Network Sharing Service 启动 ...

  6. 解决Socket粘包问题——C#代码

    解决Socket粘包问题——C#代码 前天晚上,曾经的一个同事问我socket发送消息如果太频繁接收方就会有消息重叠,因为当时在外面,没有多加思考 第一反应还以为是多线程导致的数据不同步导致的,让他加 ...

  7. 打开vmvare出现The VMware Authorization Service is not running。

    win+r再输入cmd打开doc,输入services.msc打开服务,吧Vmware Authorization Service 更改为自动或者将其启动即可.

  8. 关于拒绝测试驱动开发(NoTDD)

    今天在reddit看到微软某大牛的博客(https://blogs.msdn.microsoft.com/ericgu/2017/06/22/notdd/),说到拒绝TDD(测试驱动开发,下文统一使用 ...

  9. Openfire的web插件开发

    概要 Openfire不仅支持普通插件开发,还支持完整的web插件开发,这次就web插件开发做一个小的实例,本文主要讲解如何加入Servlet和Jsp页面,基本插件的开发请参照上一篇文章. 准备 系统 ...

  10. html的基本标记符号

    文本标记:<h1><h2><h3><h4><h5><h6>: 段落标记:<p>: 空格:&nbsp: 换行: ...