目录
一、PXC集群方案与传统的Replication复制方案的区别
6.1: 安装EPEL源,上传 epel-release-7-12.noarch.rpm 到home目录下
6.2: 安装perl 组件 (xtrabackup 需要的组件,建议使用yum来安装),安装 socat, libev 这两个PXC的依赖组件。
6.4: 官网下载Percona XtraDB Cluster 集群包,每个节点都需要安装。
前言
传统MySQL的主从模式天生地不能完全保证数据一致性。
PXC结构如图1-1,有3个几点,组成了一个MySQL集群。这3个节点与普通的主从架构不通,它们都可以作为主节点,这3个节点不分从属,是平等的关系。
此方案无法解决海量数据场景的数据保存问题,既不能实现分库分表,但是提供了一个高冗余的环境,适合要求数据绝对安全的环境。
图1-1
一、PXC集群方案与传统的Replication复制方案的区别
-
PXC集群方案所有节点都是可读可写的,Repkication从节点不能写入,因为主从同步是单向的,无法从slave节点向master节点同步。
-
PXC集群方案保证数据的强一致性,在一个事务的提交过程中,一个节点提交一个事务,必须其它所有节点通过这个事务请求,并且返回成功(OK)或者失败(conflict)信号之后才真正地提交返回结果给用户。
-
PXC同步机制是同步进行的,Replication同步机制是异步进行的。
二、PXC集群的优缺点
-
多主复制,多个可同时读写节点,真正的多节点读写集群。
-
新加入的节点可以自动部署,Galera Cluster会自动拉取在线节点数据,无须提供手动备份,维护起来非常方便。
-
完全兼容MySQL,实现数据库高可用和数据强一致性,由于是多节点写入,因此数据库故障切换很容易。
三、PXC集群的局限性
-
只支持InnoDB存储引擎表,所有的表都必须要有主键,不然操作数据时会报错。
-
因为要保证数据的一致性,所以在多节点并发写的时候:锁冲突,死锁问题相对要多一些。
-
PXC集群采用的是强一致性原则,任何更新事务都需要全局验证通过才能在每个节点上执行,一个更改操作在所有节点都是成功的才算成功,写入的效率取决于集群中性能最差的节点,也就是所谓的短板效应。
-
新加入节点采用SST传输开销大,需要复制完整的数据。
-
存在写扩大的问题,所有节点都会发生写操作。
四、PXC有两种节点数据传输方式
-
一种是SST全量传输(增量同步,有mysqldump, rsync, xtrabackup3种方法)
-
另一种是IST增量传输(xtrabackup).
备注:如果在生产环境中有一个新节点加入集群,此时有需要大量数据的SST传输,就有可能因此而拖垮整个集群性能,可以考虑先建立主从关系再加入集群。
五、pxc大概会使用4个端口号
-
3306:数据库对外服务端口号。
-
4444:请求SST(SST指数据一个镜像传输)在新节点加入时候起作用。
-
4567:组成员之间进行沟通的一个端口号。
-
4568:传输IST用的,是相对于SST来说的一个增量,节点下线,重启加入是起作用。
六、PXC集群部署实战
安装之前,要确保3台机器的防火墙iptables,selinux 都关闭了,3台机器的server-id不能一样。编辑 /etc/hosts 文件,把IP和主机名称写到hosts 文件里。
#关闭防火墙
firewall-cmd --state
systemctl stop firewalld.service
systemctl disable firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
reboot
#配置hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6172.16.25.21 node0
172.16.25.22 node1
172.16.25.23 node2
6.1: 安装EPEL源,上传 epel-release-7-12.noarch.rpm 到home目录下
cd /home
yum localinstall epel-release-7-12.noarch.rpm
-
要是没有安装,通过yum 就可能无法安装 socat、libev, 会出现 “No pack socat available”报错。
-
装上了EPEL源,就相当于添加了一个第三方库。
-
通过rpm -ivh 来安装,需要自己解决它依赖的问题,yum localinstall 来安装本地rpm包,就可以自动解决依赖的问题。
yum install 报错:
解决:编辑 /etc/yum.repos.d/epel.repo 文件,把所有baseurl前面的#去掉,在metalink前面加上#
6.2: 安装perl 组件 (xtrabackup 需要的组件,建议使用yum来安装),安装 socat, libev 这两个PXC的依赖组件。
yum install perl-DBD-MySQL perl-DBI perl-Time-HiRes
yum install socat libev
6.3: 添加mysql组和用户
groupadd mysql
useradd -g mysql -M -s /sbin/nologin mysql
备注:参数-M表示不创建主目录,-s表示不允许登录, -g表示加入mysql组。
6.4: 官网下载Percona XtraDB Cluster 集群包,每个节点都需要安装。
官网地址:Percona – The Database Performance Experts
因为还需要使用XtraBackup 的 SST传输方式,所以还需要下载安装Percona-xtrabackup.
后期持续更新中....