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
三 安装过程
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-
到这里,安装已经结束。因为我这里是可以连接外网的环境,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 ''; 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%';" |
如果一切顺利,会有如下参数信息:
wsrep_incoming_addresses | 192.168.164.124:3306,192.168.164.132:3306,192.168.164.131:3306
安装过程中的一些问题:
防火墙 是否关闭,selinux配置文件是静态文件,更改后是否已经重启。
sst用户的权限,使用sst账户能否在其他节点登录。
节点间是否能PING通。
Percona-XtraDB-Cluster-57 安装操作记录的更多相关文章
- PXC(Percona XtraDB Cluster)集群的安装与配置
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
- 搭建高可用mysql系列(2)-- Percona XtraDB Cluster 安装
本文主要介绍在 centos 下 Percona XtraDB Cluster(下文简称PXC) 的安装, 个人的系统版本信息如下: [root@c2-d09 worker]# more /etc/r ...
- Percona XtraDB Cluster(PXC) -集群环境安装
Percona XtraDB Cluster(PXC) ---服务安装篇 1.测试环境搭建: Ip 角色 OS PXC-version 172.16.40.201 Node1 Redhat/C ...
- Percona XtraDB Cluster简易入门 - 安装篇
说明 Percona XtraDB Cluster(简称PXC),是由percona公司推出的mysql集群解决方案.特点是每个节点都能进行读写,且都保存全量的数据.也就是说在任何一个节点进行写入操作 ...
- docker1.12 安装pxc(Percona XtraDB Cluster )测试
docker1.12 安装pxc(Percona XtraDB Cluster )测试
- Percona Xtradb Cluster的设计与实现
Percona Xtradb Cluster的设计与实现 Percona Xtradb Cluster的实现是在原mysql代码上通过Galera包将不同的mysql实例连接起来,实现了multi ...
- 如何搭建Percona XtraDB Cluster集群
一.环境准备 主机IP 主机名 操作系统版本 PXC 192.168.244.146 node1 ...
- 使用percona xtradb cluster的IST方式添加新节点
使用percona xtradb cluster的IST(Incremental State Transfer)特性添加新节点,防止新节点加入时使用SST(State SnapShop Transfe ...
- mysql高可用之PXC(Percona XtraDB Cluster)
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...
- MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解
MySQL高可用方案-PXC(Percona XtraDB Cluster)环境部署详解 Percona XtraDB Cluster简称PXC.Percona Xtradb Cluster的实现是在 ...
随机推荐
- Kafka学习笔记(四)—— API使用
Kafka学习笔记(四)-- API使用 1.Producer API 1.1 消息发送流程 Kafka的Producer发送消息采用的是异步发送的方式.在消息发送的过程中,涉及到了两个线程--mai ...
- DOCKER学习_006:Docker存储驱动
一 镜像的分层特性 在说docker的文件系统之前,我们需要先想清楚一个问题.我们知道docker的启动是依赖于image,docker在启动之前,需要先拉取image,然后启动.多个容器可以使用同一 ...
- 【题解】Comet OJ Round 70 简要题解
[题解]Comet OJ Round 70 简要题解 A 将放在地上的书按照从小到大排序后,问题的本质就变成了合并两个序列使得字典序最小.可以直接模拟归并排序.直接用循环和std::merge实现这个 ...
- [gitHub实践] 实践记录
[gitHub实践] 实践记录 版权2019.4.19更新 Q1:本地仓库和远程仓库连接提示输入用户名密码 本地仓库和远程仓库连接有两种方式 本地初始化建立一个仓库,远程也建立了一个仓库 本地建立仓库 ...
- 1048 数字加密 (20 分)C语言
本题要求实现一种数字加密方法.首先固定一个加密用正整数 A,对任一正整数 B,将其每 1 位数字与 A 的对应位置上的数字进行以下运算:对奇数位,对应位的数字相加后对 13 取余--这里用 J 代表 ...
- ENS使用指南系列之一 [ 注册 .eth 域名详细教程 ]
ENS 域名系统中目前支持三种顶级域名,分别是 .eth .xyz .luxe.其中, .eth 是 ENS 系统的原生域名,是由一系列智能合约控制的去中心化的域名,另外两种是从互联网域名中接入的,要 ...
- window bat批处理 实用脚本
一行一行读取txt里的内容 @echo off for /f %%i in (C:\Users\86132\Desktop\name.txt) do ( echo %%i>>name2.t ...
- linux下安装cmake方法(2)---直接用命令安装
1.linux环境下打开网页,输入上网账号密码,确保已经联网 2.打开终端:输入cmake --version,如果出现版本号,表明已经安装,如果显示没有安装cmake,则需要安装 3.在终端里输入: ...
- Netty 的基本简单实例【服务端-客户端通信】
Netty是建立在NIO基础之上,Netty在NIO之上又提供了更高层次的抽象. 在Netty里面,Accept连接可以使用单独的线程池去处理,读写操作又是另外的线程池来处理. Accept连接和读写 ...
- leetcode腾讯精选练习之两数相加
两数相加 题目: 给出两个非空的链表用来表示两个非负的整数.其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字.如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们 ...