Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何组建高性能、高可用、可扩展的MySQL集群?

如何组建高性能、高可用、可扩展的MySQL集群?

作者头像
灵雀云
发布于 2022-11-23 13:05:51
发布于 2022-11-23 13:05:51
67100
代码可运行
举报
运行总次数:0
代码可运行

作者:王三岁

灵雀云后端工程师

mysql高可用-PXC集群(安装和特性)

PXC是基于Galera的面向OLTP的多主同步复制插件,mysql自带的主从集群方案(replication)异步复制无法保证主从复制的完整一致。

OLAP强调数据分析数据挖掘,比较适合MyISAM,OLTP强调事务一致性和增删改查,比较适合InnoDB,而Galara只支持InnoDB,PXC主要用于解决MySQL集群中数据同步强一致性的问题,PXC是MySQL集群方案中公认的优选方案之一。

集群的特点

多主架构:真正的多点读写的集群,没有主从节点之分,在任何节点读写数据,都是最新的

同步复制:事务在所有集群节点同时提交,任何一个节点失败都算作事务失败,这样不同节点之间数据同步,没有延迟,在数据库挂掉之后,数据不会丢失

强一致性:所有节点的数据保持一致,数据不仅在本地写入,还要同步到所有节点才成功(这种情况下当pxc节点过多时,每个节点都要跟其他节点进行数据同步,节点越多同步关系越复杂,同步效率越慢)

并发复制:从节点APPLY数据时,支持并行执行,更好的性能

故障切换:在出现数据库故障时,因支持多点写入,切换容易

热插拔:在服务期间,如果数据库挂了,只要监控程序发现的够快,不可服务时间就会非常少。在节点故障期间,节点本身对集群的影响非常小

自动节点克隆:在新增节点,或者停机维护时,增量数据或者基础数据不需要人工手动备份提供,集群会自动拉取在线节点数据,最终集群会变为一致

对应用透明:集群的维护,对应用程序是透明的

PXC集群的缺点

1、只能对InnoDB写入的数据进行同步,就算在其他引擎写数据,也无法完成同步。

2、新节点加入需要全量拷贝数据,有时会导致数据同步的提供者无法提供读写,只有等待整个拷贝完成

3、集群的性能取决于集群中性能最差的节点的性能(全局校验过程)

4、所有表都要有主键

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

6、PXC 集群节点越多,数据同步的速度就越慢

安装pxc集群

删除MariaDB程序包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum -y remove mari*

开放防火墙端口

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
firewall-cmd --zone=public --add-port=3306/tcp --permanent
firewall-cmd --zone=public --add-port=4444/tcp --permanent
firewall-cmd --zone=public --add-port=4567/tcp --permanent
firewall-cmd --zone=public --add-port=4568/tcp --permanent

3306(mysql服务端口):对外提供mysql的服务端口 4567(集群通讯端口):集群中mysql节点间通信的端口 4444 (SST(State Snaphot Transfer)端口):请求全量同步端口 4568(IST(Incremental State Transfer)端口):请求增量同步的端口

关闭SELINUX

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/selinux/config
# 把SELINUX属性值设置成disabled
reboot

在所有节点下载并安装pxc

下载安装包

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

下载以上安装包后额外需要下载qpress-11-1.el7.x86_64包。

进入RPM文件目录,执行安装命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum localinstall *.rpm

修改配置文件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/my.cnf
#里面有两个文件目录 my.cnf.d 和 percona-xtradb-cluster.conf.d
cd /etc/percona-xtradb-cluster.conf.d
vi mysqld.cnf #配置mysql常用信息
#加入如下信息
#数据库字符集
character_set_server = utf8
#允许远程访问的IP地址
bind-address = 0.0.0.0
#跳过DNS解析
skip-name-resolve

初始化所有节点的mysql

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#启动mysql
systemctl start mysqld
#查看MySQL初始密码
cat /var/log/mysqld.log | grep "A temporary password"
#修改MySQL密码
mysql_secure_installation
#创建远程管理员账户
mysql -u root -p
CREATE USER 'admin'@'%' IDENTIFIED BY 'Abc_123456';
GRANT all privileges ON *.* TO 'admin'@'%';
FLUSH PRIVILEGES;
exit

停止所有节点的mysql并构建数据库集群

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop mysqld
#修改配置信息
vi wsrep.cnf #配置了pxc集群信息
#需要增加节点的配置信息,三个节点都要操作,server-id,wsrep_node_name,wsrep_node_address这三个参数是不能重复的值
server-id=1 #PXC集群中MySQL实例的唯一ID,不能重复,必须是数字
wsrep_provider=/usr/lib64/galera3/libgalera_smm.so
wsrep_cluster_name=pxc-cluster #PXC集群的名称 自定义
wsrep_cluster_address=gcomm://1.1.1.1,1.1.1.2,1.1.1.3 #这写PXC所有集群的ip地址,逗号分割
wsrep_node_name=pxc1 #当前节点的名称 自定义
wsrep_node_address=1.1.1.1 #当前节点的IP
wsrep_sst_method=xtrabackup-v2 #同步方法(mysqldump、rsync、xtrabackup)
wsrep_sst_auth= admin:Abc_123456 #同步使用的帐户
pxc_strict_mode=ENFORCING #开启同步严厉模式,不允许数据同步不一致
binlog_format=ROW #基于ROW复制(安全可靠)
default_storage_engine=InnoDB  #默认引擎,只支持这个
innodb_autoinc_lock_mode=2 #主键自增长不锁表

#启动第一个节点
systemctl start mysql@bootstrap.service 
#这是第一个节点的操作指令
#systemctl stop mysql@bootstrap.service
#systemctl restart mysql@bootstrap.service
#启动其他节点
service mysql start #其他节点会根据配置信息自动添加到第一个节点,合成一个集群
#这是其他节点的操作指令
service mysql stop 
service mysql restart

验证

在任何一个节点的mysql执行以下sql可以查看集群状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
show status like 'wsrep_cluster%'
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
在CentOS8下搭建PXC集群
PXC是Percona XtraDB Cluster的缩写,是 Percona 公司出品的免费MySQL集群产品。PXC的作用是通过mysql自带的Galera集群技术,将不同的mysql实例连接起来,实现多主集群。在PXC集群中每个mysql节点都是可读可写的,也就是主从概念中的主节点,不存在只读的节点。
端碗吹水
2020/09/23
1.1K0
在CentOS8下搭建PXC集群
基于CentOS 7 安装Percona XtraDB Cluster(PXC) 5.7
Percona XtraDB Cluster(简称PXC)是很多企业基于MySQL实现集群方案的不二选择。PXC它支持服务高可用,数据同步复制(并发复制),几乎无延迟;多个可同时读写节点,可实现写扩展等等。之前整理过一篇PXC 5.6的文章,本文是基于CentOS 7 PXC 5.7版一个更为标准的安装,可供大家参考。
Leshami
2018/08/06
2.5K0
CentOS7 下 MySQL 数据库 PXC 集群部署操作指导
背景 最近在进行 MySQL 的 PXC 集群搭建使用和研究 前期已完成了一篇记录文章 : 【CentOS7 下 MySQL 之 PXC 集群部署【Docker+多机多节点】】 但是,毕竟不是所有人都熟悉 docker 而作为开发人员,还是习惯于原生状态的安装流程 所以,在此整理官方指导的PXC 集群配置步骤 欢迎指摘 … 【注】:Percona XtraDB Cluster(简称 PXC 集群) —— 业界主流的 MySQL 集群方案 环境 CentOS 版本: CentOS Linux
泥豆芽儿 MT
2021/02/01
2.1K0
CentOS7 下 MySQL 数据库 PXC 集群部署操作指导
MySQL高可用方案-PXC环境部署记录
之前梳理了Mysql+Keepalived双主热备高可用操作记录,对于mysql高可用方案,经常用到的的主要有下面三种: 一、基于主从复制的高可用方案:双节点主从 + keepalived 一般来说,中小型规模的时候,采用这种架构是最省事的。 两个节点可以采用简单的一主一从模式,或者双主模式,并且放置于同一个VLAN中,在master节点发生故障后,利用keepalived/heartbeat的高可用机制实现快速 切换到slave节点。 在这个方案里,有几个需要注意的地方: 采用keepalived作为
洗尽了浮华
2018/01/22
6K0
MySQL高可用方案-PXC环境部署记录
PXC安装+keepalived配置
💡 PXC(Percona XtraDB Cluster)是一个开源的、高可用性的MySQL解决方案,它基于Galera集群技术,提供了内置的多主节点、同步复制和故障转移等功能。PXC支持无需共享存储就能实现可扩展性和高可用性,使得应用程序能够更好地应对高并发访问和故障恢复。PXC集群主要由两部分组成:Percona Server with XtraDB和Write Set Replication patches(同步、多主复制插件)
救救404
2023/09/15
5020
docker搭建pxc集群
随着mysql存储的数据量越来越大,mysql查询单表时的响应速度也会随之变慢,尤其是当单节点承载的数据量超出一定的范围后,比如单表超过2000万之后,查询响应速度会下降的很快,因此,一方面可以考虑mysql集群,另一方面可以考虑读写分离,这两种方案的出发点不同,集群更多是从单节点可容纳的并发连接数考虑,比如单节点的mysql服务器支持的最大连接数是有限的;而读写分离可以提升mysql服务总体的读写性能,避免读请求和写请求都打到同一个节点上,分摊压力
1850810
2021/06/07
1.2K0
MySQL高可用之PXC
PXC简介 PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案。他将Percona Server和XtraBackup与Galera库集成,以实现同步多主复制。基于Galera的高可用方案主要有MariaDB Galera Cluster和Percona XtraDB Cluster,目前PXC架构在生产线上用的更多而且更成熟一些。PXC相比那些传统的基于主从模式的集群架构MHA和双主,Galera Cluster 最突出的特点就是解决了诟病已久的复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,它们互相的关系是对等的。本身Galera Cluster也是一种多主架构。PXC是在存储引擎层实现的同步复制,而非异步复制,所以其数据的一致性是相当高的。
小手冰凉
2020/07/06
2.7K0
MySQL PXC 集群运维指南
Percona XtraDB Cluster (PXC) 是一个完全开源的 MySQL 数据库集群解决方案,它可确保高可用性,防止停机和数据丢失,并为不断增长的环境提供线性可扩展性。它将 Percona Server 和 Percona XtraBackup 与 Galera 库集成在一起,以实现同步多源复制。
雪人
2022/10/13
2.2K0
CentOS 7.2下安装PXC 5.7.21
https://www.percona.com/downloads/Percona-XtraDB-Cluster-57/LATEST/
星哥玩云
2022/08/17
3930
CentOS7 下 MySQL 之 PXC 集群部署【Docker+单机多节点】
背景 【注意】: 鄙人认为本篇适合做入门测试/学习之用,选择的 "单机多节点配置" 建议移步: “多机多节点部署” —— 【CentOS7.9 下 MySQL 之 PXC 集群部署【Docker+多机多节点】 近期正突击学习数据库知识 想着对 PXC 集群部署实际操作一番,提高技能点,为后续的升职加薪做充足的准备 于是,在此记录一下, 既能作为采坑笔记,又能帮助到后期有需要的道友,欢迎指摘 … 【注】:Percona XtraDB Cluster(简称 PXC 集群) PXC的优缺点 PXC
泥豆芽儿 MT
2022/01/06
1.2K0
CentOS7 下 MySQL 之 PXC 集群部署【Docker+单机多节点】
Docker搭建pxc
pxc是基于Galera,可以实现多节点间的数据同步以及不需要读写分离可以随时访问任一节点,保证数据库的强一致性(无延迟)以及高可用,但牺牲了部分性能
风起--追风
2021/11/08
9290
ABP 框架 数据库底层迁移 Mysql 集群
我的各种github 开源项目和代码:https://github.com/linbin524
林滨
2018/12/20
2.6K0
如何部署 Galera 数据库集群
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,10.0.9版起使用XtraDB来代替MySQL的InnoDB。
大数据弄潮儿
2018/11/29
1.6K0
如何部署 Galera 数据库集群
Percona XtraDB Cluster 集群参数配置说明(PXC 5.7)
从PXC5.7版本开始,集群的配置主要是通过wsrep.cnf配置来实现。这个文件有几个常用的参数配置。下文对其做简要说明。
Leshami
2018/08/06
1.1K0
Percona XtraDB Cluster网络安全配置(PXC5.7)
Percona XtraDB Cluster(下称PXC)数据库集群节点在多台机器中分布,尽管这些节点在大多数情况下,位于同一个局域网内,其安全依旧有必要重视。PXC在各节点之间进行通信,通常使用了4个端口。这4个端口需要防火墙准许放行。其次节点间数据通信并没有加密,如果要考虑这部分安全增强,也需要采取相应的策略。下文基于这两点进行描述。
Leshami
2018/08/06
7310
MariaDB Galera Cluster部署实战
背景 项目中使用的mariadb+gelera集群模式部署,之前一直用的是mysql的master/slave方式部署数据库的,这种集群模式以前没怎么搞过,这里研究并记录一下。 MariaDB Galera Cluster 介绍 MariaDB 集群是 MariaDB 同步多主机集群。它仅支持 XtraDB/ InnoDB 存储引擎(虽然有对 MyISAM 实验支持 - 看 wsrep_replicate_myisam 系统变量)。 主要功能: 同步复制 真正的 multi-master,即所有节点可以同时
jeremyxu
2018/05/10
6.8K0
搭建高可用的Replication集群归档大量的冷数据
业务不断地在增长,集群分片中的数据也会随着时间的推移而增加,其中有相当一部分的数据是很少被使用的,例如几年前的订单记录、交易记录、商品评论等数据。这部分数据就称之为冷数据,与之相反经常被使用的数据则称之为热数据。
端碗吹水
2020/09/23
8200
搭建高可用的Replication集群归档大量的冷数据
如何在Ubuntu 16.04上使用MySQL 5.6配置Galera集群
集群通过不同服务器分发更改来为数据库添加高可用性。如果其中一个实例失败,则其他已可以的实例还能继续服务。
圣人惠好可爱
2018/09/20
1.1K0
Percona XtraDB Cluster 如何在一台服务器上安装两个集群节点
我认为在单个物理服务器上运行2个或多个Percona XtraDB Cluster(PXC)节点这样没有什么意义,除了教育和测试目的,但在这种情况下这样做仍然是有用的。最受欢迎的实现方式似乎是服务器的虚拟化,比如利用流浪盒子。但是同样的方式你可以运行多个MySQL实例在并行操作系统级别上,还有并发的mysqld的形成过程,因此你也可以有多个Percona XtraDB Cluster节点。而且实现这一目标的方法是恰恰相同的:使用专用的datadirs和为每个节点设置不同的端口。
星哥玩云
2022/07/03
6600
使用pacemaker配置mariadb高可用集群
Galera cluster是一个多主同步数据库集群,基于同步复制技术和 Oracle 的 MYSQL/InnoDB。使用Galera Cluster时,您可以直接任意节点读取和写入。并且在丢失任何单个节点时可以不中断操作且无需处理复杂故障转移过程。
tanmx
2018/12/12
2.7K0
相关推荐
在CentOS8下搭建PXC集群
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验