MYSQL高可用-Percona XtraDB Cluster

简介

Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下:

1).同步复制,事务要么在所有节点提交或不提交。

2).多主复制,可以在任意节点进行写操作。

3).在从服务器上并行应用事件,真正意义上的并行复制。

4).节点自动配置。

5).数据一致性,不再是异步复制。

 

Percona XtraDB Cluster完全兼容MySQL和Percona Server,表现在:

1).数据的兼容性

2).应用程序的兼容性:无需更改应用程序

 

1).集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上。

2).每个节点都是普通的mysql/percona服务器,可以将现有的数据库服务器组成集群,反之,也可以将集群拆分成单独的服务器。

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

 

优点如下:

1).当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需远程访问。

2).无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作,不受影响。

3).良好的读负载扩展,任意节点都可以查询。

 

缺点如下:

1).加入新节点,开销大。需要复制完整的数据。

2).不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。

3).有多少个节点就有多少重复的数据。

 

架构图如下:

 

                                      (图片来源官网)

Percona XtraDB Cluster与MySQL Replication区别在于:

分布式系统的CAP理论。

C— 一致性,所有节点的数据一致。

A— 可用性,一个或多个节点失效,不影响服务请求。

P— 分区容忍性,节点间的连接失效,仍然可以处理请求。

任何一个分布式系统,需要满足这三个中的两个。

MySQL Replication: 可用性和分区容忍性

Percona XtraDB Cluster: 一致性和可用性

因此MySQL Replication并不保证数据的一致性,而Percona XtraDB Cluster提供数据一致性。

Percona XtraDB Cluster组件:

Percona XtraDB Cluster基于XtraDB的Percona Server以及包含写复制集补丁。使用Galera 2.x library,事务型应用下的通用的多主同步复制插件。

Galera 2.x新特性有:

1).IST(Incremental State Transfer)增量状态传输。对于WAN特别有用。

2).RSU(Rolling Schema Update)旋转更新架构。不会阻止对表进行操作。

局限性

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个。2个也可以运行,但是官方不推荐这么做,因为3个节点是为了预防脑裂。

10).如果DDL语句有问题将破坏集群。建议使用pt-online-schema-change操作DDL。

通过以上的简单了解,相信大家已经有了初步认识,更加深入的内容,推荐童鞋们阅读官方文档。下面我们进行环境的搭建与测试。测试机器信息如下:

注意:Percona-XtraDB-Cluster在启动以后会额外启动端口来进行状态检测,所以请开放相应的端口,默认是4567端口。我测试环境关闭了iptables。

总结:

Percona XtraDB Cluster现在已经有企业在使用了,我这里只是简单的搭建以及测试,如果线上需要使用我们还需要进行相关压力测试。比如使用sysbench,或者tpcc-mysql。

通常我们单独使用Percona XtraDB Cluster也没有任何问题的,如果使用通过结合harproxy,或者lvs+keepalived的方式来使用会更加的完美。前面说到的那些局限性通常我们很少能够触发到,所以使用Percona XtraDB Cluster来实现高可用是非常不错的选择。后续我会进行一个压力测试对比。

转载于:https://www.cnblogs.com/luoahong/articles/8043083.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/267892.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 矩阵点乘_Day276:普通乘积、矩阵点乘、克罗内克积

1、普通矩阵乘法(matmul product)假设矩阵A大小是M*N,矩阵B大小是N*P,CAB这里选取一个例子这里的矩阵乘法要求相乘的两个矩阵一个的行数得等于另一个的列数,否则,无法进行乘机运算。2、矩阵点乘(hadamard product)矩阵点乘&#x…

随机排列_图片视频特效一键生成,27 种特效可随机排列组合!

酷友们,大家好!相信很多酷友喜欢刷抖音,抖音视频中有很多特效也很酷。其实这些特效称作故障艺术(Glitch Art),就是利用事物形成的故障,进行艺术加工,使这种故障缺陷反而成为一种艺术品,具有特殊…

JMter随记

线程组( Threads (Users))理解:一个虚拟用户组,线程组内线程数量在运行过程中不会发生改变。 注意事项:线程间变量相互独立。 一个测试计划内可以包含多个线程组。 可定义内容: 取样…

OSPF协议概述(一)

1. 根据来源不同,路由表中的路由通常可以分为以下三类: 链路层协议发现的路由(也称为接口路由或直连路由)。 由网络管理员手工配置的静态路由 动态路由协议发现的路由。(RIP,OSPF,IS-IS) 2. 距离矢量算法和…

深度工作:充分使用每一份脑力

浮躁已经成了普遍的社会现象。判断一个人是否浮躁非常容易,看他一天主动拿起手机的次数就可以了。据TED的演讲者说,这个值一般是50次,除了8小时的睡觉之外,基本上每20分钟就要去翻翻手机。 你会去用手机做什么?看微信&…

Silverlight 2.5D RPG游戏技巧与特效处理:(七)动画特写

Silverlight中的HLSL不仅适用于场景与动画渲染,对于游戏中的角色,我们同样可以利用它制作动画特写。较常见的比如角色传送时的淡入淡出、扭曲变形、幻化呈现等切换动画,当然还有例如角色被DeBuff时所表现出来的放大缩小以及虚弱时的不规则体形…

实现搜索功能

准备视图函数search()修改base.html 中搜索输入框所在的<form action"{{ url_for(search) }}" method"get"> <input name"q" type"text" placeholder"请输入关键字">完成视图函数search()获取搜索关键字q re…

mysql下载安装及配置_mysql的下载,安装和配置

顺道向大家介绍一下mysql的安装和配置&#xff0c;mysql数据库应该说是现在整个互联网行业最流行的数据库了&#xff0c;简单易用1.下载&#xff0c;大家可以去官网下载最新的mysql版本&#xff0c;地址&#xff1a;http://dev.mysql.com/downloads/mysql/5.6.html&#xff0c;…

[svc]gns3模拟器及探讨几个bgp问题

模拟器 链接&#xff1a;https://pan.baidu.com/s/1geMcmND 密码&#xff1a;7iir gns0.8.6的版本好用 思科的这个iso好用: c3660-js2-mz.124-21a.bin C2691-AD.BIN(这个也很ok,但是这两个支持的hash算法较少) ctrlshit6 停止命令 R1(config)#crypto isakmp policy 10 R1(confi…

Reverse-engineer Source Code into UML Diagrams

今天同事需要反向生成类图&#xff0c;用PowerDesigner 转了一份&#xff0c;不甚满意&#xff0c;在网上逛了逛&#xff0c;发现在这篇文章挺不错。 I have been on several teams where we studiously designed UML diagrams at the beginning of the project. As the projec…

postman测试带权限接口_接口测试工具:postman

一、postman简介一般简单的接口测试我们可以直接在浏览器里面进行调试&#xff0c;但是涉及到一些要权限设置的就无法操作了&#xff0c;因此我们需接口测试的相关工具&#xff1b;Postman 是一个接口测试和 http 请求的工具。官网下载地址&#xff1a;https://www.getpostman…

记录在Spring-Boot中使用Fegin调用RESTfull的PATCH方法设置

使用了ZooKeeper&#xff0c;设置 spring.cloud.zookeeper.dependency.headers.enabledfalse 参考&#xff1a; https://github.com/spring-cloud/spring-cloud-netflix/issues/2550#issuecomment-353230054 http://blog.csdn.net/menggudaoke/article/details/77884674转载于:…

mysql getcolumnname_jdbc-mysql基础 ResultSetMetaData getColumnName getColumnLabel 得到列的名字和别名...

礼悟&#xff1a;好好学习多思考&#xff0c;尊师重道存感恩。叶见寻根三二一&#xff0c;江河湖海同一体。虚怀若谷良心主&#xff0c;愿行无悔给最苦。读书锻炼强身心&#xff0c;诚劝且行且珍惜。数据、数据&#xff0c;命根就在数据。云计算、AI等技术&#xff0c;都是以数…

spring指导的index.html在spring文件夹中的位置

转载于:https://www.cnblogs.com/whoknows1/p/8094359.html

最近研究Rest,这个东西还是个雏形,给个好用的参考地址吧

http://www.ibm.com/developerworks/cn/education/java/j-rest/section5.html 另附&#xff0c;学习Restlet的网址&#xff1a; http://ajaxcn.iteye.com/category/64734 这个连接地址中的内容&#xff0c;很全&#xff0c;我们会继续研究&#xff0c;会有小例子&#xff0c;敬…

Spring集成Quartz定时任务框架介绍

一、增加所依赖的JAR包1、增加Spring的Maven依赖 <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>3.0.5.RELEASE</version></dependency>2、增加Quartz的Maven依赖 <…

检测机安装mysql_centos安装mysql的正确方法

1、官方安装文档2、下载 Mysql yum包下载到本地再上传到服务器&#xff0c;或者使用wget 直接下载wget http://repo.mysql.com/mysql57-community-release-el7-10.noarch.rpm3、安转软件源将platform-and-version-specific-package-name 替换为你下载的rpm名sudo rpm -Uvh plat…

再次分享一个多选文件上传方案

多选文件上传&#xff0c;已经非常多了&#xff0c;选择性多了可能有时候要比较下哪个更合适&#xff0c;结合到项目中使用更方便才是最重要的。很多的多选上传基本上都是调用的swf文件&#xff0c;确实用flash 或flex开发一个多选上传的功能很方便&#xff0c;比如flex里内置的…

2017软件工程实践总结

一、请回望暑假时的第一次作业&#xff0c;你对于软件工程课程的想象 1&#xff09;对比开篇博客你对课程目标和期待&#xff0c;“希望通过实践锻炼&#xff0c;增强计算机专业的能力和就业竞争力”&#xff0c;对比目前的所学所练所得&#xff0c;在哪些方面达到了你的期待和…

shell编辑crontab任务

crontab是Linux下执行定时任务的工具&#xff0c;之前偶尔需要用到时都是通过执行crontab -e命令或者通过root身份直接编辑/etc/cron.*/下的文件来添加定时任务。这段时间遇到了需要通过shell来自动添加或删除crontab的需求。在shell中无法通过crontab -e来与crontab编辑器交互…