Percona-XtraDB-Cluster-57 安装操作记录
Percona-XtraDB-Cluster-57 安装操作记录
一、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引擎
2)PXC集群一致性控制机制,有可能被终止,原因如下:集群允许在两个节点上同时执行操作同一行的两个事务,但是只有一个能执行成功,另一个会被终止,集群会给被终止的客户端返回死锁错误(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
节点规划:
node1 |
192.168.164.131 |
node2 |
192.168.164.132 |
node3 |
192.168.164.124 |
端口:
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集群
node1 192.168.164.131 |
node2 192.168.164.132 |
node3 192.168.164.124 |
systemctl start mysql@bootstrap.service |
|
|
|
systemctl start mysqld |
|
|
|
systemctl start mysqld |
mysql -uroot -p123456 -e “show status like ‘wsrep%’;” |
|
|
mysqladmin -uroot -p123456 shutdown |
|
|
|
mysql -uroot -p123456 -e “show status like ‘wsrep%’;” |
mysql -uroot -p123456 -e “show status like ‘wsrep%’;” |
systemctl start mysqld |
|
|
mysql -uroot -p123456 -e “show status like ‘wsrep%’;” |
|