1. PXC
Percona XtraDB Cluster简称PXC。是一套开源mysql高可用解决方案(XtraDb是mysql被oracle收购之前 开源一个分支 其他分支还有mariadb),Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例(新名称 Percona Server)连接起来,实现了multi-master(多个主都可以同时写入)的集群架构。pxc包含 Percona XtraBackup 组件用于提供Percone Server所有版本 在线备份解决方案
一个集群包含多个节点 每个节点互相同步包含相同的数据集 ,至少应该包含3个节点 每个节点都可以拥有读写的能力
Percona XtraDB Cluster特点
(1)同步复制,事务在所有集群节点要么同时提交,要么不提交。
(2)多主复制,可以在任意一个节点写入。
(3)从服务器上的并行应用事件,真正的“并行复制”。
(4)自动配置节点。
(5)数据一致性,没有不同步的从服务器。
Percona XtraDB Cluster与MySQL Replication区别在于:
分布式系统的CAP理论:
C—一致性,所有节点的数据一致;
A—可用性,一个或多个节点失效,不影响服务请求;
P—分区容忍性,节点间的连接失效,仍然可以处理请求;
任何一个分布式系统,需要满足这三个中的两个。
MySQLReplication: 可用性和分区容忍性;
Percona XtraDBCluster: 一致性和可用性。
因此MySQL Replication并不保证数据的一致性,而Percona XtraDB Cluster提供数据一致性。
官方文档参考 (https://www.percona.com/doc/percona-xtradb-cluster/LATEST/index.html)
2. Replication
MySQL Replication是MySQL的一个非常重要的功能,主要用于主服务器和从服务器之间的数据复制操作。
MySQL复制是指从一个MySQL主服务器(master)将数据复制到另一台或者多台MySQL从服务器(slaves)的过程,将主数据库的DDL和DML操作通过二进制日志传递到复制服务器上,然后在服务器上对这些日志重新执行,从而使得主从服务器的数据保持同步;
在MySQL中,复制操作时异步进行的,slaves服务器不需要持续地保持连接接收master服务器的数据。
MySQL支持一台主服务器同时向多台从服务器进行复制操作,从服务器同时可以作为其他从服务器的主服务器,如果MySQL主服务器的访问量比较大,可以通过复制数据,然后在从服务器上进行查询操作,从而降低主服务器的访问压力,同时从服务器作为主服务器的备份,可以避免主服务器因为故障数据丢失的问题;
MySQL数据库复制操作大致可以分为三个步骤:
(1)主服务器将数据改变记录到二进制日志(binary log)中;
(2)从服务器将主服务器的binary log events 复制到它的中继日志(relay log)中;
(3)从服务器重做中继日志中的事件,将数据的改变与从服务器保持同步;
首先,主服务器会记录二进制日志,每个事务更新数据完成之前,主服务器将这些操作的信息记录在二进制日志里面,在事件写入二进制日志完成之后,主服务器通知存储引擎提交事务。
Slave上面的I/O进程连接上Master,并发出日志请求,Master接收到来自Slave的I/O进程的请求之后,通过负责复制的I/O进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave的I/O进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;
Slave的I/O进程接收到信息之后,将接收到的日志内容依次的添加到Slave端的relay-log文件的最末端,并将读取到的Master端的bin-log的文件名和位置记录到master-info文件中。
Slave的SQL进程检测到relay-log中新增加了内容之后,会马上解析relay-log的内容成为Master端真实执行时候的那些可执行的内容,并在自身执行;
MySQL复制环境90%以上都是一个Master带一个或者多个Slave的架构模式。如果Master和Slave的压力不是太大的话,异步复制的延时一般都很少。尤其是Slave端的复制方式改成进程处理之后,更是减少了Slave端的延时;
提示:对于数据实时性要求不是特别严格的应用,只需要通过廉价的电脑服务器来扩展Slave的数量,将读压力分散到多台Slave的机器上面,即可解决数据库端读压力瓶颈。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至有些大型的网站也在使用类似的方案解决数据库的瓶颈;
3. MyCat
能满足数据库数据大量存储;提高了查询性能
官网