PXC集群资料整理

2023-05-19,,

1、mysql集群方案对比
方案1  NDBCluster 
参考:https://www.cnblogs.com/kevingrace/p/5685371.html?utm_source=itdadao&utm_medium=referral
优点:
1、通过自动分片实现高水平的写入扩展能力MySQL Cluster 自动将表分片(或分区)到不同节点上,
   使数据库可以在低成本的商用硬件上横向扩展,同时保持对应用程序完全应用透明。
2、99.999%的可用性凭借其分布式、无共享架构,MySQL Cluster 可提供 99.999% 的可用性,
   确保了较强的故障恢复能力和在不停机的情况下执行预定维护的能力
3、实时性能好,MySQL Cluster 提供实时的响应时间和吞吐量,能满足最苛刻的 Web、电信及企业应用程序的需求
4、具有跨地域复制功能的多站点集群 跨地域复制使多个集群可以分布在不同的地点,从而提高了灾难恢复能力和全球
   Web 服务的扩展能力。
5、联机扩展和模式升级为支持持续运营,MySQL Cluster 允许向正在运行的数据库模式中联机添加节点和更新内容,
   因而能支持快速变化和高度动态的负载。
缺点:
1、基于内存,数据库的规模受集群总内存的大小限制
2、多个节点通过网络实现通讯和数据同步、查询等操作,因此整体性受网络速度影响
3、NDB的事务隔离级别只支持Read Committed,即一个事务在提交前,查询不到在事务内所做的修改
4、Data Node节点数据会被尽量放在内存中,对内存要求大。
5、外键支持:虽然最新的Cluster版本已经支持外键,但性能有问题(因为外键所关联的记录可能在别的分片节点中),
   所以建议去掉所有外键。
 
方案2  Mysql组复制
参考:https://blog.csdn.net/weixin_34162695/article/details/85997711
     https://www.cnblogs.com/f-ck-need-u/p/9197442.html
     https://blog.csdn.net/wwy0324/article/details/81572312
     https://blog.51cto.com/ylw6006/1971139
优点:
1、高一致性
   基于原生复制及 paxos 协议的组复制技术,并以插件的方式提供,提供一致数据安全保证;
2、高容错性
   只要不是大多数节点坏掉就可以继续工作,有自动检测机制,当不同节点产生资源争用冲突时,不会出现错误,
   按照先到者优先原则进行处理,并且内置了自动化脑裂防护机制;
   高扩展性
3、节点的新增和移除都是自动的,新节点加入后,会自动从其他节点上同步状态,直到新节点和其他节点保持一致,
   如果某节点被移除了,其他节点自动更新组信息,自动维护新的组信息;
4、高灵活性
   有单主模式和多主模式,单主模式下,会自动选主,所有更新操作都在主上进行;多主模式下,所有 server
   都可以同时处理更新操作。
缺点:
1、InnoDB存储引擎:数据必须存储在事务型的InnoDB存储引擎中
2、Primary Keys:每张需要被组复制的表都必须显式定义一个主键
3、使用IPv4 地址:MySQL组复制使用的组通信引擎组件只支持 IPv4
4、良好的网络性能:组复制设计的初衷是部署在集群环境中,集群中的节点相互之间都非常近,因此除了网络延迟,网络带宽也会影响组复制。
5、如果只是实现高可用,数据同步,组复制需要添加中间件,数据同步是集群内部操作,而直接用JDBC去连接是不能实现自动的高可用。
 
方案3  基于主从复制的高可用方案:双节点主从 + keepalived
方案4  基于主从复制的高可用方案:多节点主从+MHA/MMM
 
方案5  基于Galera协议的高可用方案:PXC
优点:
1、服务高可用 多个节点的数据是相同的,只要最后一个节点可用,就还能运行。
   无需集中管理。可以在任何时间点失去任何节点,但是集群将照常工作,不受影响。
2、同步复制,事务要么在所有节点提交或不提交。各节点间无延迟且节点宕机不会导致数据丢失。
3、多主复制,可以在任意节点进行写操作。
4、在从服务器上并行应用事件,真正意义上的并行复制。
5、节点自动配置。无需手工备份当前数据库并拷贝至新节点。
6、数据一致性,不再是异步复制。
7、PXC最大的优势:强一致性、无同步延迟
8、应用程序的兼容性:无需更改应用程序
缺点:
1、对InnoDB的事物控制是支持的,其他的不支持,5.7版本
2、加入新节点,开销大。需要复制完整的数据。新加入节点采用SST时代价高;
3、不能有效的解决写缩放问题,所有的写操作都将发生在所有节点上。
4、有多少个节点就有多少重复的数据。
5、写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。
   集群吞吐量/性能取决于短板;
6、所有表都要有主键;
7、锁冲突、死锁问题相对更多
8、不支持LOCK TABLE等显式锁操作;
9、不支持XA;
XA百度百科解释:分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。
 
参考:http://blog.itpub.net/15498/viewspace-2135219/
 
2、PXC原理
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架构示意图
Galera是Codership提供的多主数据同步复制机制,可以实现多个节点间的数据同步复制以及读写,
并且可保障数据库的服务高可用及数据一致.


-->

PXC集群资料整理的相关教程结束。

《PXC集群资料整理.doc》

下载本文的Word格式文档,以方便收藏与打印。