当前位置: 首页 > article >正文

MySQL高可用方案之PXC(Percona XtraDB Cluster)

MySQL高可用方案之PXC(Percona XtraDB Cluster)

  • 1、PXC(Percona XtraDB Cluster)是什么?
    • 1.1、PXC优缺点(对比mysql主从集群)
    • 1.2、PXC注意点
  • 2、docker安装PXC高可用
    • 2.1 安装环境准备
    • 2.2 初始化第一个pxc节点
    • 2.3 初始化第二(多)个pxc节点
    • 2.4 pxc集群安装注意

1、PXC(Percona XtraDB Cluster)是什么?

PXC(Percona XtraDB Cluster)是一个开源的MySQL高可用解决方案,它将Percona server和XtraBackup与galera库集成,实现mysql的高可用,并且完全兼容mysql。。。
说白了,pxc就是一个代码mysql主从集群的产品。

1.1、PXC优缺点(对比mysql主从集群)

1)PXC通过Galera Cluster技术实现数据的同步复制,确保事务在所有节点上要么全部提交,要么全部不提交,从而保证了数据的一致性。而MySQL主从复制是异步的,存在数据延迟的风险‌。
2)PXC支持多主模式和自动故障转移功能,能够在节点故障时快速进行故障切换,确保服务的连续性。MySQL主从复制虽然可以通过设置从库为只读模式来分担读负载,但在主库故障时需要手动切换,恢复时间较长‌。
3)PXC支持真正的多节点读写,可以在任意节点上进行写操作,提高了写操作的扩展性。MySQL主从复制虽然可以实现读写分离,但在写操作上存在单点瓶颈,且写操作只能在主库进行‌。
4)PXC基本上可以实现实时同步,减少了数据复制的延迟。而MySQL主从复制存在复制延迟,尤其是在高负载情况下‌。
5)PXC支持新节点的自动部署,无需手动备份数据,简化了集群的扩展和维护。MySQL主从复制在新节点加入时需要手动同步数据,操作较为复杂‌。
6)PXC由于其高一致性和实时同步的特点,特别适合对数据一致性要求高的场景,如电商应用。而MySQL主从复制适用于需要数据备份、负载均衡和读写分离的场景‌。

1.2、PXC注意点

 1)加入新节点,开销大。需要复制完整的数据。
 2)写操作会在所有节点之间同步,可能会有性能损失。
 3)所有表都要有主键。
 4)只支持innodb存储引擎。
 5) pxc最少要安装三个节点,才能访问。。。
 6)如果集群中有一半的机器挂了,整个集群就挂了,比如此次配置连接了3个节点,如果关闭2个,这个集群就挂了,必须同时在线一半以上。建议集群个数为基数个。

2、docker安装PXC高可用

注意pxc中端口作用:
3306: mysql 端口
4567: PXC 集群相互通讯的端口
4444: 用于 SST(State Snapshot Transfer): 全量传输
4568: 用于 IST(Incremental state Transfer):增量传输传送

2.1 安装环境准备

安装环境准备需要在所有节点执行。

1、关闭selinux
2、关闭防火墙
3、安装docker
这三步可以参考我在安装k8s的环境准备,都有做过。

拉取PXC镜像,并修改镜像名字为pxc

docker pull percona/percona-xtradb-cluster:8.0.36
docker tag percona/percona-xtradb-cluster:8.0.36 pxc

创建docker网络

docker network create --subnet=172.18.0.0/16 pxc-net

创建docker数据卷

docker volume create mysql-data
docker volume create mysql-conf
docker inspect mysql-data
docker inspect mysql-conf

2.2 初始化第一个pxc节点

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -v mysql-data:/var/lib/mysql -v mysql-conf:/etc/mysql --privileged --name=node1 --net=pxc-net  pxc

参数解读:

-v mysql-data:/var/lib/mysql   挂载mysql数据卷
-v mysql-conf:/etc/mysql    挂载mysql配置卷
-e CLUSTER_NAME=PXC   创建的集群名字
-e MYSQL_ROOT_PASSWORD=root     mysql的root用户的密码
-e EXTRABACKUP_PASSWROD=root    PXC 集群之间数据同步的密码
--privileged   创建的容器有读写的权限
--name=node1   创建的容器名称
--net=pxc-net  docker网络

2.3 初始化第二(多)个pxc节点

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=root -e CLUSTER_JOIN=第一个pxc节点IP地址  -v mysql-data:/var/lib/mysql -v mysql-conf:/etc/mysql --privileged --name=node2 --net=pxc-net  pxc

参数解读:

CLUSTER_JOIN  表示加入第一个节点

2.4 pxc集群安装注意

1、pxc最少要安装三个节点,才能访问。。。
2、无论初始化第几个节点,CLUSTER_JOIN 都写第一个节点的IP。。。
3、如果集群中有一半的机器挂了,整个集群就挂了,比如此次配置连接了3个节点,如果关闭2个,这个集群就挂了,必须同时在线一半以上。建议集群个数为基数个。


http://www.kler.cn/a/403873.html

相关文章:

  • 设计模式之创建模式篇
  • C# 5000 转16进制 字节(激光器串口通讯生成指定格式命令)
  • 基于rkmedia的视频解码
  • 「Mac玩转仓颉内测版21」基础篇1 - 仓颉程序的基本组成
  • 从0安装mysql server
  • 7-9 求无向图连通分量的数量
  • 13 go语言(golang) - 函数
  • Excel常用技巧分享
  • Android 网络请求(二)OKHttp网络通信
  • 公安、监管等政务部门实现数字化转型的解决方案
  • 【WPF】Prism学习(三)
  • Github 2024-11-17 php开源项目日报 Top10
  • ffplay音频SDL播放处理
  • MySQL之联合查询
  • Mysql的InnoDB存储引擎中的锁机制
  • 三十八、Python(pytest框架-上)
  • 商品管理系统引领时尚零售智能化升级 降价商品量锐减30%
  • Linux-第2集-打包压缩 zip、tar WindowsLinux互传
  • 速盾:海外服务器使用CDN加速有什么好处?
  • Python JSON 数据解析教程:从基础到高级
  • 掌握C#中的异步编程:async和await关键字详解
  • Spring Boot整合Nacos启动时 Failed to rename context [nacos] as [xxx]
  • 单电源运放
  • 当企业服务器受到网络攻击该怎样处理?
  • 【1】猫眼娱乐后端开发面试题整理
  • Spring Boot实现WebSocket详解