Percona XtraDB Cluster(PXC) Mysql 集群
Percona XtraDB Cluster(PXC)
---原理介绍篇
目录
一、简介 1
二、优缺点 2
三、区别/局限性 3
四、 PXC复制原理 4
五、 服务解释 5
一、简介
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).每个节点都包含完整的数据副本
PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(使用了Galera library,一个通用的用于事务型应用的同步、多主复制插件)
二、优缺点
优点如下:
1).当执行一个查询时,在本地节点上执行。因为所有数据都在本地,无需 远程访问
2).无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作, 不受影响
3).良好的读负载扩展,任意节点都可以查询
缺点如下:
1).加入新节点,开销大。需要复制完整的数据
2).不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上
3).有多少个节点就有多少重复的数据

(官方手册架构图)
三、区别/局限性
1、区别
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)旋转更新架构。不会阻止对表进行操作。
2、局限性
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
四、PXC复制原理
复制原理架构图

(来源官方手册)
原理分析:
1、当client端执行dml操作时,将操作发给server,server的native进程处理请求2、client端收到ok,执行commit,server将复制写数据集发给group(cluster),cluster
中每个动作对应一个GTID
3、其它server接收到并通过验证(合并数据)后,执行appyl_cb动作和commit_cb动作,若验证没通过,则会退出处理
4、当前server节点验证通过后,执行commit_cb,并返回,若没通过,执行rollback_cb
5、只要当前节点执行了commit_cb和其它节点验证通过后就可返回
五、服务解释
PXC会使用大概是4个端口号(端口可配置更改)
3306:数据库对外服务的端口号
4444:请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump
4567: 组成员之间进行沟通的一个端口号
4568: 传输IST用的。相对于SST来说的一个增量
一些名词介绍:
WS:write set 写数据集
IST: Incremental State Transfer 增量同步
SST:State Snapshot Transfer 全量同步
PXC环境所涉及的端口:
#mysql实例端口
10Regular MySQL port, default 3306.
#pxc cluster相互通讯的端口
2)Port for group communication, default 4567. It can be changed by the option:
wsrep_provider_options ="gmcast.listen_addr=tcp://0.0.0.0:4010; "
#用于SST传送的端口
3)Port for State Transfer, default 4444. It can be changed by the option:
wsrep_sst_receive_address=10.11.12.205:5555
#用于IST传送的端口
4)Port for Incremental State Transfer, default port for group communication + 1 (4568). It can be changed by the option:
wsrep_provider_options = "ist.recv_addr=10.11.12.206:7777
(参考资料:官方手册文档及网上资料)
Percona XtraDB Cluster(PXC) Mysql 集群的更多相关文章
- PXC5.7(Percona XtraDB Cluster)+HAproxy+Keepalived 集群部署
Percona-XtraDB-Cluster+Haproxy 搭建集群环境 环境准备及服务器信息: 配置防火墙 firewall-cmd --add-port=3306/tcp --permanent ...
- Percona XtraDB Cluster(PXC) -集群环境安装
Percona XtraDB Cluster(PXC) ---服务安装篇 1.测试环境搭建: Ip 角色 OS PXC-version 172.16.40.201 Node1 Redhat/C ...
- Percona XtraDB Cluster(PXC)原理
Percona XtraDB Cluster(PXC)原理 介绍: PXC曾经属于一套近乎最完美的mysql高可用集群解决方案(现mgr总体上要优于pxc),相比传统的基于主从复制模式的集群架构MHA ...
- 超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数
超详细,多图文使用galera cluster搭建mysql集群并介绍wsrep相关参数 介绍galera cluster原理的文章已经有一大堆了,百度几篇看一看就能有相关了解,这里就不赘述了.本文主 ...
- Percona XtraDB Cluster(PXC)-高可用架构设计说明
Mycat+PXC高可用集群 一.架构图 架构说明: 1.mysql 集群高可用部分: l 针对业务场景选用Percona XtraDB Cluter(PXC)复制集群.两个片集群 PXC-dataN ...
- docker PXC MYSQL集群节点启动失败/节点顺序消失/只剩一个节点存在问题的解决
转载于:https://my.oschina.net/u/4884318/blog/4908669 大牛 佩服此人 截取本人遇到的问题: "error:0407008A:rsa routin ...
- 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 ...
- mysql高可用之PXC(Percona XtraDB Cluster)
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...
随机推荐
- Linux应用编程之串口操作20170901
主要介绍在Linux应用程序下对串口的操作: 1.串口初始化 int InitCom() { int Ret; Ret = SerailComm.OpenCom( ComPortDevPath, 0 ...
- vs下给生成的程序(exe)加入默认的申请管理员权限
在vs下编程时,经常会用到一些特殊的权限,尤其是管理员权限,下面是在win7下笔者亲测通过的. 下面要分两种情况: 第一种情况就是在vs2003或者以下的编译器中运行 1.准备一个manifest文件 ...
- STL源码分析-rotate
http://note.youdao.com/noteshare?id=4ba8ff81aa96373ba11f1b82597ec73a
- 阿里云对象存储OSS使用 HTTPS
一.前言 阿里云对象存储oss本身也是可以用HTTPS直接访问的,但是它本身的地址是http://***.oss-cn-hangzhou.aliyuncs.com这样的,那么如果我们想使用自己的域名, ...
- Scratch编程小案例:愤怒的小牛
愤怒的小鸟曾经很热门,网上还说他是程序员最喜欢玩的游戏.最先我是WIKIOI的评测页面看到他的,后来在2014年全国信息学奥林匹克联赛第一天第三题飞扬的小鸟也看到了它.因此,突然想做一个类似愤怒的小鸟 ...
- 分布式监控系统开发【day37】:监控数据如何存储(七)
一.如何存储 二.目录结构 三.代码调用逻辑关系 四.实现代码 1.data_optimization 1.存筛选出来符合条件的数据 def get_data_slice(self,lastest_d ...
- 报Cannot find /usr/local/tomcat/bin/setclasspath.sh错误
错误如下: [root@RSP-DEVWEB03 bin]#sh startup.sh Cannot find /usr/local/tomcat8081/bin/setclasspath.sh Th ...
- 前端PHP入门-035-Session的实例
登陆例子:(请注意一定要自己敲一遍,不要CV大法) 首先上一下成果图,激起同学们写的欲望,登录页如下: 点击登陆之后如下: 说明哦了,么问题.接下来自己实现一下. 首先数据库信息: 新建一个名为 ...
- 前端PHP入门-008-自定义函数
大家已经是有编程经验的WEB前端,那么对于函数已经很熟悉了,PHP当中定义函数跟你们学习的JavaScript一样 想想有哪些函数类型? 我们在实际开发过程当中需要有很多功能都需要反复使用到,而这些反 ...
- Spring 源码学习(2) —— FactoryBean 的使用
一般情况下, Spring是通过反射机制利用bean的class属性指定实现类来完成实例化bean的.在某些特定的情况下, 想做一些定制,Spring为此提供了一个org.springframewor ...