PXC使用到的端口号

3306 数据库对外服务的端口号(视具体情况而定)
4444 请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump 
4567 : 组成员之间进行沟通的一个端口号
4568 : 传输IST用的。相对于SST来说的一个增量。
9200:HA健康检查
 
安装PXC过程中
iptables 禁掉
selinux 也禁掉
 
PXC工作原理:
节点接收sql 请求后,对于ddl 操作,在commit之前,由wsrep API 调用galera 库进行集群内广播,所有其他节点验证成功后事务在集群所有节点进行提交,反之roll back。pxc 保证整个集群所有数据的强一致性,满足CAP理论中满足:Consistency 和  Availability。
 
特性如下:
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.有多少个节点就有多少重复的数据。
 
 
最小集群点数
建议的最小集群点数为3,虽然两个节点也能运行,但是无法保证数据的稳定,当两个节点时,任何一个节点处故障,将导致集群无法访问。
最大是小于等于8个。
 
故障恢复加入集群的过程分析
 
如果数据不大,用SST传输就行了。
如果数据很大,用rsync来传输。
 
 
脑裂
XtaDB Cluster需要使用3个或以上的节点来应对脑裂问题,否则当只有一个节点可用的情况下,将不能提供服务。
假设在系统初始化的时候,一个有三个node节点a,b,c。
假设a先启动(使用bootstrap-pxc方式启动),b然后启动,c再启动。这时候a就是整个系统的PC。并且这时候系统任何两个节点都是互相通信,保证数据的一致性。
假设1. b或者c挂了,这个就很容易理解,因为数据都是一致性的,并不影响其他节点。
假设2. PC挂了,就是a挂了,这个时候系统也能正常运行,虽然PC挂了,有会推荐算法在b,c中选出一个新的PC。
假设3.B和C都挂了,系统为了防止“脑裂”的发生(超过1/2 的节点不能通行则会触发这种情况),会对节点1 降级。这时候A节点将表现为不能进行任何操作(show 这样的操作也是可以的是)。会报“unkown command”的错误。所以官方对系统的配置建议为3个节点以上。
 
模拟脑裂
kill掉两个节点即可出现。
 
PCX的局限性
1.仅仅工作再InnoDB引擎上,因此对MySQL库下的系统表的修改不能被复制,但是DDL操作时可以被复制的,所以可以通过creata user、grant等方式操作系统表。
2.不支持在没有主键的表上DELETE操作,select ... limit也会在不同节点上返回不同的值(仅仅是在没有主键的情况下才会limit返回不同的结果集?)。
3.不支持的操作:LOCL/UNLOCL TABLES、lock functings(GET_LOCK()、RELEASE_LOCK()...)。
4.query log日志不能存放在表里面,必须存放在文件。
5.最大的事务大小由wsrep_max_ws_rows、wsrep_max_ws_size定义,LOAD DATA INFILE每10K行提交一次,这种事务将被分割成熟个小的事务(XtraDB cluster自动分割?还是操作时手动分割?)。
6.由于集群是基于乐观的并发控制(optimistic concurrency control),事务冲突的情况可能会在commit阶段发生,当多个节点修改同时同一行数据,只有其中一个节点能够成功,失败的节点将终止,并且返回死锁错误代码 Error:1213 SQLSTATE:40001。
7.不支持XA事务,因为XA事务有可能在commit的时候出现异常发生rollback(参考 http://www.infoq.com/cn/articles/xa-transactions-handle)。
8.整个集群的吞吐量/性能取决于最慢的那个节点,因为需要所有节点上做Certification,同时还取决于节点间的网络性能,因此需要所有节点都有相同的硬件配置,并且网络、磁盘等性能要尽可能的高,例如使用SSD。
9.最小建议的集群节点数为3,为解决脑裂,最多8个节点。
10.如果DDL语句有问题,很可能会破坏整个集群,需要非常特殊的对待DDL语句。
 

PXC小结的更多相关文章

  1. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

  2. Python自然语言处理工具小结

    Python自然语言处理工具小结 作者:白宁超 2016年11月21日21:45:26 目录 [Python NLP]干货!详述Python NLTK下如何使用stanford NLP工具包(1) [ ...

  3. java单向加密算法小结(2)--MD5哈希算法

    上一篇文章整理了Base64算法的相关知识,严格来说,Base64只能算是一种编码方式而非加密算法,这一篇要说的MD5,其实也不算是加密算法,而是一种哈希算法,即将目标文本转化为固定长度,不可逆的字符 ...

  4. iOS--->微信支付小结

    iOS--->微信支付小结 说起支付,除了支付宝支付之外,微信支付也是我们三方支付中最重要的方式之一,承接上面总结的支付宝,接下来把微信支付也总结了一下 ***那么首先还是由公司去创建并申请使用 ...

  5. iOS 之UITextFiled/UITextView小结

    一:编辑被键盘遮挡的问题 参考自:http://blog.csdn.net/windkisshao/article/details/21398521 1.自定方法 ,用于移动视图 -(void)mov ...

  6. K近邻法(KNN)原理小结

    K近邻法(k-nearst neighbors,KNN)是一种很基本的机器学习方法了,在我们平常的生活中也会不自主的应用.比如,我们判断一个人的人品,只需要观察他来往最密切的几个人的人品好坏就可以得出 ...

  7. scikit-learn随机森林调参小结

    在Bagging与随机森林算法原理小结中,我们对随机森林(Random Forest, 以下简称RF)的原理做了总结.本文就从实践的角度对RF做一个总结.重点讲述scikit-learn中RF的调参注 ...

  8. Bagging与随机森林算法原理小结

    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系.另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合. ...

  9. scikit-learn 梯度提升树(GBDT)调参小结

    在梯度提升树(GBDT)原理小结中,我们对GBDT的原理做了总结,本文我们就从scikit-learn里GBDT的类库使用方法作一个总结,主要会关注调参中的一些要点. 1. scikit-learn ...

随机推荐

  1. getBean(class )并发下性能较差,有锁.

    spring 版本3.1.2 1. spring 并没有缓存 class -> beanDifinition 或者 sington 实例的缓存. 2. 只能先获取所有的beanDifitions ...

  2. javase(4)_数组

    一.数组概述 数组可以看成是多个相同类型数据组合,对这些数据的统一管理. 数组变量属于引用类型,数组也可以看成对象,数组中的每个元素相当于该对象的成员变量. 数组中的元素可以是任意类型,包括基本类型和 ...

  3. 使用CSS来制作类似「黑幕」的效果

    网上几乎没有看到这类的代码,留个档 .heimu,.heimu a{ background-color: #252525; color:#252525; text-shadow: none; }::s ...

  4. HDU-1009-肥鼠交易

    这题是一道简单的可拆分的贪心题目,需要注意的是,我们定义的结构体里面都应该用double类型, 或者float类型,不然两个int相除,就失去了精度(强转也可以). #include <cstd ...

  5. linux中复制文件夹的所有文件到指定目录

    这里我们的需求是需要将一个文件夹中的所有文件都复制到另一个文件夹中,而不是将一个文件夹复制到另外一个文件夹中. //这里需要使用到-R参数,表示递归处理,将指定目录下的所有文件与子目录一并处理//一开 ...

  6. idea 插件推荐 & 代码样式安装

    部分链接打不开的可能需要梯子, 部分插件我懒得截图了,麻烦 ---------------------------------------header------------------------- ...

  7. 如何用纯 CSS 创作背景色块变换的按钮特效

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/XYKdwg 可交互视频教 ...

  8. LeetCode(105) Construct Binary Tree from Preorder and Inorder Traversal

    题目 Given preorder and inorder traversal of a tree, construct the binary tree. Note: You may assume t ...

  9. 3,bool值之间的转换,和str的各个功能属性。

    bool值之间的转换 and 空字符串即为False   字符串内有内容即为True. a = 11 c = str(a) #int转换成str print(type(c)) a = ' b = in ...

  10. Java-在JVM关闭前调用的函数

    参考:http://qtlkw.iteye.com/blog/1018872 package com.tj; import java.text.SimpleDateFormat; import jav ...