Percona XtraDB Cluster学习笔记

Percona XtraDB Cluster(PXC)

Percona XtraDB Cluster(简称PXC)集群是基于Galera 2.x library,事务型应用下的通用的多主同步复制插件,主要用于解决强一致性问题,使得各个节点之间的数据保持实时同步以及实现多节点同时读写。提高了数据库的可靠性,也可以实现读写分离,是MySQL关系型数据库中大家公认的集群优选方案之一。本文简要介绍其原理并给出安装指导。

  • 一、PXC结构及特性 1、结构及基本描述

    快速体验Percona XtraDB Cluster(PXC)_MySQL

    群集由节点组成。建议的配置是至少有3个节点,但你可以使它 
    2节点运行。

    每个节点可以是常规MySQL或者Percona Server程序。支持将现有的MySQL/Percona Server为节点提升为集群节点。也可以从集群中分离节点,使它作为一个普通的服务器。

    每个节点包含完整的数据副本。

    2、优点及限制

    PXC的优点:

      服务高可用

      数据同步复制(并发复制),几乎无延迟;

      多个可同时读写节点,可实现写扩展,不过最好事先进行分库分表,让各个节点分别写不同的表或者库,避免让galera解决数据冲突;

      新节点可以自动部署,部署操作简单;

      数据严格一致性,尤其适合电商类应用;

      完全兼容MySQL;

    PXC局限性:

      只支持InnoDB引擎;

      所有表都要有主键;

      不支持LOCK TABLE等显式锁操作;

      锁冲突、死锁问题相对更多; 如果DDL有问题则会破坏集群

      不支持XA;(分布式交易处理的规范,资源管理器(数据库)与事务管理器的接口标准)

      集群吞吐量/性能取决于短板;

      新加入节点采用SST时代价高;(State Snapshot Transfer (SST) is when all data is copied from one node to another)

      存在写扩大问题;(指实际写入的内容远大与所要写入的逻辑内容)

      如果并发事务量很大的话,建议采用InfiniBand网络,降低网络延迟;


此方案无法解决较大MySQL数据场景的数据保存问题,即不能实现分库分表,但是提供了一个高冗余的环境,适合于业务不是很大但是要求数据绝对安全的环境。

Percona XtraDB Cluster与MySQL Replication区别在于:
分布式系统的CAP理论:
C— 一致性,所有节点的数据一致;
A— 可用性,一个或多个节点失效,不影响服务请求;
P— 分区容忍性,节点间的连接失效,仍然可以处理请求;
任何一个分布式系统,需要满足这三个中的两个。

MySQLReplication: 可用性和分区容忍性;
Percona XtraDBCluster: 一致性和可用性。
因此MySQL Replication并不保证数据的一致性,而Percona XtraDB Cluster提供数据一致性

数据库备份

1、冷备时,数据库为mount模式,不需要开启归档,还原时只能还原到冷备时数据,备份数据库需要停库,也无法做到还原到任意时间点。
2、热备,也就是通常用的方法,数据库正常运行,开启归档,保证了数据库能够还原到任意时间点,(归档日志为在线重做日志导出的离线数据),当在做恢复操作时,可以根据需求追加归档日志恢复到一个时间点,这种备份不需要数据库停库。

数据库热备份优点

灾难恢复:当出现不可抗灾难(海啸、地震、911)数据库不可用,可以利用备库的数据,丢失率仅为几秒数据。
高可用性:当出现主库数据异常情况时,备库随时可用,保证任何数据都能查询,0秒修复将大大提升企业竞争力。
负载均衡:有效利用系统资源,将大量统计分析查询的操作分担到备库,可大大减轻主库压力,业务系统可用资源极大提升。
数据审计:所有主库操作数据均可在同步过程中进行还原,保证数据及操作审计的可实现。

Features

High Availablity

两种不同的节点增加方式,SST(状态快照传输)和 IST(增量状态传输)

状态快照传输(SST)是当所有数据从一个节点复制到另一个时。通常在新节点加入集群并从现有节点接收所有数据时使用SST。 有Percona XtraDB集群中有三种可用的SST方法:
- mysqldump
- rsync
- xtrabackup。
mysqldump和rsync的缺点是您的群集在数据处于READ-ONLY状态时变为READ-ONLY复制(SST应用FLUSH TABLES WITH READ LOCK命令)。使用xtrabackup的SST不需要用于整个同步过程的READ LOCK命令,仅用于同步.frm文件(与常规备份相同)。

mysqldump和rsync的缺点是施主节点在数据被复制时变为READ-ONLY。另一方面,Xtrabackup SST使用备份锁定,这意味着Galera提供程序根本不会暂停FTWRL(Flush Tables with Read Lock)。 SST方法可以使用wsrep_sst_method进行配置变量。


增量状态传输(IST)是指仅将增量更改从一个节点复制到另一个节点时。即使没有将群集锁定在只读状态,SST可能会侵入并干扰您的群集的正常运行服务。 IST可以避免这种情况。 如果一个节点短时间停机,它只能获取这些更改它发生的时候发生了事情。 IST在节点上使用缓存机制来实现。 每个节点包含缓存,最后N次更改的环形缓冲区(大小可配置),并且该节点能够传输该缓存的一部分。显然,只有当传输所需的变化量小于N时才能完成IST。如果它超过N,那么加入节点必须执行SST。

MULTI-MASTER REPLICATION多主复制

多主复制意味着您可以写入任何节点并确保写入对于所有节点都是一致的在集群中。 这与常规MySQL复制不同,在这种情况下,您必须将写入应用到主机才能确保它将被同步。
使用多主复制时,任何写入或者在所有节点上提交,或者根本不提交。

猜你喜欢

转载自blog.csdn.net/u014156250/article/details/80731639