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

(参考资料:官方手册文档及网上资料)

转载于:https://www.cnblogs.com/liangshaoye/p/10207183.html

Percona XtraDB Cluster(PXC) Mysql 集群相关推荐

  1. 基于CentOS 7 安装Percona XtraDB Cluster(PXC) 5.7

    转载来源:https://blog.csdn.net/robinson_0612/article/details/78962190 基于CentOS 7 安装Percona XtraDB Cluste ...

  2. 如何在Debian 8上安装Percona XtraDB Cluster for MySQL

    翻译&转载来源:https://www.howtoforge.com/tutorial/how-to-install-percona-xtradb-cluster-for-mysql/ 在本文 ...

  3. 5.MySQL Cluster(MySQL集群)

    5.1 MySQL Cluster 简介 请参考官方文档:http://dev.mysql.com/doc/refman/5.1/zh/ndbcluster.html 下面是官方的MySQL Clus ...

  4. Galera Cluster for MySQL 集群恢复

    node1: 1.rm -rf grastate.dat 2.mysqld_safe --wsrep-recover 3.galera_new_cluster node2: systemctl res ...

  5. Mysql搭建PXC集群 - Percona XtraDB Cluster

    转载来源:https://blog.csdn.net/lvshaorong/article/details/80501905  pxc集群是Percona XtraDB Cluster的缩写,是基于p ...

  6. mysql percona 集群_MySQL高可用性解决方案—Percona XtraDB Cluster

    MySQL数据库的性能是服务器运维中不可缺少的部分,需要不断的优化数据库的性能,寻找出系统的瓶颈.今天就来分享一款提高数据库高可用性的解决方案.Percona XtraDB Cluster---MyS ...

  7. MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解

    MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...

  8. galera mysql5.7.17_MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7)

    MySQL Galera集群搭建流程(Percona XtraDB Cluster 5.7) 发布时间:2020-08-11 05:38:33 来源:ITPUB博客 阅读:123 作者:feelpur ...

  9. 6 MySQL 集群Cluster

    文章目录 6 MySQL 集群Cluster 6.1 MySQL 主从复制 6.1.1 主从复制架构和原理 6.1.1.1 服务性能扩展方式 6.1.1.2 MySQL的扩展 6.1.1.3 复制的功 ...

最新文章

  1. 会计信息质量要求有哪些?
  2. mysql数据库上传ftp服务器中_备份部分mysql表并上传至指定ftp服务器目录中
  3. python yield用法总结
  4. 软件接口测试一个项目的实战,全网最全postman接口测试教程和接口项目实战~从入门到精通!!!...
  5. Openning Day
  6. SendMessage函数完全使用手册 (转)
  7. 快点来学吧!Spring事务是如何传播的?快来收藏!
  8. UAT测试和SIT测试
  9. VC6.0 操作Excel表格
  10. win10计算机文件夹隐藏,详细教您win10如何隐藏文件夹
  11. java微信学生考勤小程序前台vue和后台(考勤,请假,校园新闻,导出,地图等)(需要使用的软件)打包源码及安装视频+功能文档
  12. iis和mysql_iis mysql
  13. MacOSx打包dmg文件(带背景图片)
  14. mac python 连接oracle数据库(mac cx_Oracle.DatabaseError: DPI-1047: )
  15. Linux CP文件夹略过目录的解决方法
  16. 凉开水泡绿茶有利降血糖
  17. 二维平面最短距离(分治)
  18. Mapreduce入门--词频统计
  19. 数字电路基础知识——格雷码和二进制码的转换的算法和Verilog实现
  20. 初学电子快速入门的方法

热门文章

  1. rpc wmi 服务不可用_golang 基础(5) RPC
  2. mysql linuxl环境搭建_Linux环境下的MySQL搭建
  3. android dts配置_AndroidLinux关于DTS设备树源码的介绍
  4. C语言第五章实验二答案,《C语言程序设计》实验二 参考答案
  5. centos部署python个人博客项目
  6. 宿舍管理系统设计分析图
  7. python 对象属性作为参数_如何将对象属性作为函数参数传递给lambda函数?
  8. 【php内核与扩展开发系列】PHP生命周期---启动、终止与模式
  9. 《网易编程题》计算糖果
  10. 2017腾讯编程题----游戏人物标记