MySQL之高可用PXC集群部署实战

目录

前言

一、PXC集群方案与传统的Replication复制方案的区别

二、PXC集群的优缺点

三、PXC集群的局限性

四、PXC有两种节点数据传输方式

五、pxc大概会使用4个端口号

六、PXC集群部署实战

6.1: 安装EPEL源,上传 epel-release-7-12.noarch.rpm 到home目录下

6.2: 安装perl 组件 (xtrabackup 需要的组件,建议使用yum来安装),安装 socat, libev 这两个PXC的依赖组件。

6.3: 添加mysql组和用户

6.4: 官网下载Percona XtraDB Cluster 集群包,每个节点都需要安装。

总结



前言

     传统MySQL的主从模式天生地不能完全保证数据一致性。

     PXC结构如图1-1,有3个几点,组成了一个MySQL集群。这3个节点与普通的主从架构不通,它们都可以作为主节点,这3个节点不分从属,是平等的关系。

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

MySQL之高可用PXC集群部署实战_第1张图片

                                                                    图1-1

一、PXC集群方案与传统的Replication复制方案的区别

  1. PXC集群方案所有节点都是可读可写的,Repkication从节点不能写入,因为主从同步是单向的,无法从slave节点向master节点同步。

  2. PXC集群方案保证数据的强一致性,在一个事务的提交过程中,一个节点提交一个事务,必须其它所有节点通过这个事务请求,并且返回成功(OK)或者失败(conflict)信号之后才真正地提交返回结果给用户。

  3. PXC同步机制是同步进行的,Replication同步机制是异步进行的。

二、PXC集群的优缺点

  1. 数据同步复制,几乎无延迟,基本上达到实时同步,在数据库挂掉后数据不会丢失。

  2. 多主复制,多个可同时读写节点,真正的多节点读写集群。

  3. 新加入的节点可以自动部署,Galera Cluster会自动拉取在线节点数据,无须提供手动备份,维护起来非常方便。

  4. 完全兼容MySQL,实现数据库高可用和数据强一致性,由于是多节点写入,因此数据库故障切换很容易。

三、PXC集群的局限性

  1. 只支持InnoDB存储引擎表,所有的表都必须要有主键,不然操作数据时会报错。

  2. 因为要保证数据的一致性,所以在多节点并发写的时候:锁冲突,死锁问题相对要多一些。

  3. PXC集群采用的是强一致性原则,任何更新事务都需要全局验证通过才能在每个节点上执行,一个更改操作在所有节点都是成功的才算成功,写入的效率取决于集群中性能最差的节点,也就是所谓的短板效应。

  4. 新加入节点采用SST传输开销大,需要复制完整的数据。

  5. 存在写扩大的问题,所有节点都会发生写操作。

四、PXC有两种节点数据传输方式

  1. 一种是SST全量传输(增量同步,有mysqldump, rsync, xtrabackup3种方法)

  2. 另一种是IST增量传输(xtrabackup).

备注:如果在生产环境中有一个新节点加入集群,此时有需要大量数据的SST传输,就有可能因此而拖垮整个集群性能,可以考虑先建立主从关系再加入集群。

五、pxc大概会使用4个端口号

  1. 3306:数据库对外服务端口号。

  2. 4444:请求SST(SST指数据一个镜像传输)在新节点加入时候起作用。

  3. 4567:组成员之间进行沟通的一个端口号。

  4. 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.localdomain6

172.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

MySQL之高可用PXC集群部署实战_第2张图片

  1. 要是没有安装,通过yum 就可能无法安装 socat、libev, 会出现 “No pack socat available”报错。

  2. 装上了EPEL源,就相当于添加了一个第三方库。

  3. 通过rpm -ivh 来安装,需要自己解决它依赖的问题,yum localinstall 来安装本地rpm包,就可以自动解决依赖的问题。

yum install 报错:

MySQL之高可用PXC集群部署实战_第3张图片

 解决:编辑 /etc/yum.repos.d/epel.repo 文件,把所有baseurl前面的#去掉,在metalink前面加上#

MySQL之高可用PXC集群部署实战_第4张图片

6.2: 安装perl 组件 (xtrabackup 需要的组件,建议使用yum来安装),安装 socat, libev 这两个PXC的依赖组件。

yum install perl-DBD-MySQL perl-DBI perl-Time-HiRes

yum install socat libev

MySQL之高可用PXC集群部署实战_第5张图片

6.3: 添加mysql组和用户

groupadd mysql

useradd -g mysql -M -s /sbin/nologin mysql

 备注:参数-M表示不创建主目录,-s表示不允许登录, -g表示加入mysql组。MySQL之高可用PXC集群部署实战_第6张图片

6.4: 官网下载Percona XtraDB Cluster 集群包,每个节点都需要安装。

官网地址:Percona – The Database Performance Experts

因为还需要使用XtraBackup 的 SST传输方式,所以还需要下载安装Percona-xtrabackup.

Percona Software downloads for databases

后期持续更新中....

你可能感兴趣的:(MySQL,python,开发语言)