一、PXC集群的一些特性

Percona官网服务器位于境外,访问很困难。本次安装使用的是其官网提供的最新版本5.7.23-31.31.1.el7,当前日期为2018.10.10。

PXC集群中,存储引擎使用的是percona xtrabackup,集群架构采用的是Galera Cluster,一种多主结构的集群。所以要安装percona存储引擎与 Galera依赖。

一般来说,中小型规模的时候,采用这种架构是最省事的。两个节点可以采用简单的一主一从模式,或者双主模式,并且放置于同一个VLAN中,在master节点发生故障后,利用keepalived/heartbeat的高可用机制实现快速切换到slave节点。

优点:

1)同步复制,事务要么在所有节点提交或不提交。

2)多主复制,可以在任意节点进行写操作。

3)在从服务器上并行应用事件,真正意义上的并行复制。

4)节点自动配置,数据一致性,不再是异步复制。

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

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

7)完全兼容MySQL

 

PXC最大的优势:强一致性、无同步延迟

缺点:

1)只支持InnoDB引擎

2PXC集群一致性控制机制,有可能被终止,原因如下:集群允许在两个节点上同时执行操作同一行的两个事务,但是只有一个能执行成功,另一个会被终止,集群会给被终止的客户端返回死锁错误(Error: 1213 SQLSTATE: 40001 (ER_LOCK_DEADLOCK)).

3)写入效率取决于节点中最弱的一台,因为PXC集群采用的是强一致性原则,一个更改操作在所有节点都成功才算执行成功。

4)所有表都要有主键;

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

6)锁冲突、死锁问题相对更多;

7)不支持XA

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

9)新加入节点采用SST时代价高;

10)存在写扩大问题;

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

事实上,采用PXC的主要目的是解决数据的一致性问题,高可用是顺带实现的。因为PXC存在写扩大以及短板效应,并发效率会有较大损失,类似semi sync replication机制。

二、安装环境

操作系统:CentOS Linux release 7.3

节点规划:

端口:

3306 数据库对外服务的端口号
4444 请求SST SST: 指数据一个镜象传输 xtrabackup , rsync ,mysqldump 
4567 : 组成员之间进行沟通的一个端口号
4568 : 传输IST用的。相对于SST来说的一个增量。

确保以上端口在防火墙中开放,或者直接关闭关闭防火墙服务,注意在CentOS版本的更新过程中,管理防火墙的指令变化较大

systemctl disable firewalld

在PXC官方文档中,建议关闭selinux服务,

setenforce 0

三 安装过程

1、在所有节点,执行:

yum install -y  http://www.percona.com/downloads/percona-release/redhat/0.1-4/percona-release-0.1-4.noarch.rpm

安装EPEL源,percona官网提供的0.1-6版本,一般最新的版本坑很多,这里使用的是0.1-4版本。

2、重载yum缓存

yum clean all

yum  makecache

3、安装

yum install -y Percona-XtraDB-Cluster-57

到这里,安装已经结束。因为我这里是可以连接外网的环境,yum工具会自动完成所有依赖包的匹配与安装。

如果是无外网环境,那么就需要到官网:

https://www.percona.com/downloads/Percona-XtraDB-Cluster-LATEST/

去把依赖包一个一个下载下来,再手动安装。

四、配置集群

1、在所有节点,创建SST的账户。

systemctl start mysqld #启动mysql进程

grep "temporary password" /var/log/mysqld.log   #获取初始密码

mysql -uroot -p

alter user 'root'@'localhost' identified by '123456';

GRANT RELOAD,LOCK TABLES,PROCESS,REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost' IDENTIFIED BY 'password';  #创建SST用户

FLUSH PRIVILEGES;

注意,退出后,要关闭mysql进程。

# mysqladmin -uroot -p123456 shutdown

2、确保mysql进程关闭,在所有节点:vi /etc/my.cnf

[mysqld]

wsrep_provider=/usr/lib64/galera3/libgalera_smm.so    #Galera库文件路径

wsrep_cluster_name=pxc-cluster                        #集群的逻辑名称,各节点应该统一

wsrep_cluster_address=gcomm://192.168.164.131,192.168.164.132,192.168.164.124  #列出集群内所有节点的IP

wsrep_node_name=pxc1                                  #当前节点的逻辑名称

wsrep_node_address=192.168.164.131                       #当前节点的IP

wsrep_sst_method=xtrabackup-v2                        #全量同步(SST)方式

wsrep_sst_auth=sstuser:password                       #用于SST的账户信息(需要自行创建)

pxc_strict_mode=ENFORCING                             #PXC严格模式,建议开启

binlog_format=ROW                                     #binlog格式,PXC只支持格式为ROW的binlog

default_storage_engine=InnoDB                         #PXC对InnoDB存储引擎有最好的支持

innodb_autoinc_lock_mode=2                            #在向有auto_increment 列的表插入数据时,PXC只支持interleaved(2)交错锁

注意在节点2、节点3,黄标内容要对应改为pxc2、pxc3,与对应的内网IP,公网IP不能识别

五、启动PXC集群

10-11 10:14