构建 MariaDB Galera Cluster 分布式数据库集群(一)
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架构
- haproxy作为MariaDB Galera Cluster的前端
- 2台haproxy用keepalived避免单点故障
- 3台MariaDB和一个garbd仲裁节点组成集群,仲裁节点上无数据
- Galera的SST采用Percona提供的XtraBackup(防止锁表,非阻塞)
- 配置文件 /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
监控状态参数说明
- 集群完整性检查
- wsrep_cluster_state_uuid:在集群所有节点的值应该是相同的,有不同值的节点,说明其没有连接入集群.
- wsrep_cluster_conf_id:正常情况下所有节点上该值是一样的.如果值不同,说明该节点被临时"分区"了.当节点之间网络连接恢复的时候应该会恢复一样的值.
- wsrep_cluster_size:如果这个值跟预期的节点数一致,则所有的集群节点已经连接.
- wsrep_cluster_status:集群组成的状态.如果不为"Primary",说明出现"分区"或是"split-brain"状况.
- 节点状态检查
- 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,则可以从该项查看原因.
- 复制健康检查
- 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这两个值最高.这两个值较低的话,相对更好.
- 检测慢网络问题
wsrep_local_send_queue_avg:网络瓶颈的预兆.如果这个值比较高的话,可能存在网络瓶 - 冲突或死锁的数目
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 分布式数据库集群(一)的更多相关文章
- 构建 MariaDB Galera Cluster 分布式数据库集群(二)
MariaDB的安装 构建 MariaDB Galera Cluster之前,首先安装MariaDB,本文使用的版本是10.1 1.环境准备 主机: MariaDB01(192.168.56.102) ...
- 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数
超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...
- MariaDB+Galera+Haproxy+Keepalived搭建集群
1.MariaDB Galera Cluster介绍 MariaDB Galera Cluster是MariaDB同步多主机集群,它仅支持XtraDB/InnoDB存储引擎,在MySQLInnoDB存 ...
- Galera Cluster mysql+keepalived集群部署
1.卸载mysql 查找本机安装的mysqlrpm -qa | grep -i mysql --nodeps --force rpm -ev MySQL-server-5.6.15-1.el6.x86 ...
- 数据库–Cobar分布式数据库集群MySQL中间件
运行环境: 主机1:Ubuntu14.04 Desktop + MySQL5.5 + JDK 1.7(HP Z400) 内网IP地址:192.168.137.8 NODE1:Ubuntu 13.04 ...
- 【线上测试之后的应用】基于MySQL+MHA+Haproxy构建高可用负载均衡数据库集群(详解)
这里我们先介绍一下MHA是什么,其次就是它的应用与测试,同时为了大家呈现了数据备份案例,最后总结了使用情况以及注意事项和解决办法 一.MHA 概述 MHA(Master High Availabili ...
- 使用分布式数据库集群做大数据分析之OneProxy
一.十亿数据,轻松秒出 实时监控领域有两个显著的特点,一是数据来源很多而且数据量大,有来自监控摄像头.GPS.智能设备等:二是需要实时处理.我们的客户在做实时处理时,就遇到这样的问题.客户的某个数据表 ...
- Ubuntu 下 Galera cluster for MySQL 集群安装
mysql galera cluster官网:http://galeracluster.com/documentation-webpages/ 相关安装教程:(不一定管用) http://blog.c ...
- Galera Cluster for MySQL 集群恢复
node1: 1.rm -rf grastate.dat 2.mysqld_safe --wsrep-recover 3.galera_new_cluster node2: systemctl res ...
随机推荐
- 用php+mysql+ajax实现淘宝客服或阿里旺旺聊天功能 之 后台页面
在上一篇随笔中,我们已经看了如何实现前台的对话功能:前台我限定了店主只有一人,店铺只有一个,所有比较单一,但后台就不一样了,而后台更像是我们常见的聊天软件:当然,前台也应该实现这种效果,但原理懂了,可 ...
- Bash Shell编程要点小结
一.case命令 case variable invalue1) command(s);; value2) command(s);; *) command(s);; esac 如果case变量没有被匹 ...
- Ubuntu安装搜狗拼音和金山快盘
搜狗拼音和金山快盘是UbuntuKylin中的特色中文应用,通过下述方法在Ubuntu或UbuntuKylin中安装. 一.更新Fcitx 1.由于 Ubuntu 12.04自带的 小企鹅输入法Fci ...
- android下的名词/片段解释
关于建项目时候SDK解释 minimum required SDK: 又为miniSdk, 是你程序最低支持的SDK版本,这个现在一般miniSDK设定一般为8或者10 Target SDK:是你程序 ...
- guoshiyv 数据结构与算法2-1 线性链式存储
线性链式存储: 包含两部分:1.存储的单个元素 2.指针,指向下一个的地址 typedef struct() { ElementType Data; struct Node *Next; }Lis ...
- Thinkphp模板的使用
模板标签 内置标签:include,import,volist,foreach,for,switch,compare,present,empty,defined,if/else 输出php代码:PHP ...
- JS添加类似C# string.Format方法
String.prototype.format=function() { if(arguments.length==0) return this; for(var s=this, ...
- python selenium-webdriver 通过cookie登陆(十一)
上节介绍了浏览器的常用方法,涉及到了cookie的使用,本节介绍一下如何利用cookie进行登陆系统,这里使用到了request模块,我们首先利用request模块,请求登陆地址进行登陆,登陆成功以后 ...
- 通知栏Notification的整理
一.介绍 通知栏适用于交互事件的通知,是位于顶层可以展开的通知列表. 二.功能作用 1.显示接收到短消息,及时消息等信息(如QQ.微信.新浪.短信) 2.显示客户端的推送消息(如有新版本发 ...
- 如何在非 React 项目中使用 Redux
本文作者:胡子大哈 原文链接:https://scriptoj.com/topic/178/如何在非-react-项目中使用-redux 转载请注明出处,保留原文链接和作者信息. 目录 1.前言 2. ...