数据库之MySQL部署PXC方案
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库之MySQL部署PXC方案相关的知识,希望对你有一定的参考价值。
零、简介
PXC是Percona公司的(Percona XtraDB Cluster) 简称PXC。它是基于Galera协议的高可用集群方案。可以实现多个节点间的数据同步复制以及读写,并且可保障数据库的服务高可用及数据强一致性。
优点:
1、实现mysql数据库集群架构的高可用性和数据的 强一致性。
2、完成了真正的多节点读写的集群方案。
3、改善了传统意义上的主从复制延迟问题,基本上达到了实时同步。
4、新加入的节点可以自动部署,无须提供手动备份,维护起来很方便。
5、由于是多节点写入,所以数据库故障切换很容易。
缺点:
1、新加入的节点开销大,需要复制完整的数据。采用SST传输开销太大。
2、任何更新事务都需要全局验证通过,才会在每个节点库上执行。集群性能受限于性能最差的节点,也就是经常说的短板效应。
3、因为需要保证数据的一致性,所以在多节点并发写时,锁冲突问题比较严重。
4、存在写扩大问题,所有的节点上都会发生些操作。
5、没有表级别的锁定,执行DDL语句操作会把整个集群锁住,而且也 kill 不了(建议使用Osc操作,即在线DDL)
6、所有的表必须含有主键,不然操作数据时会报错。
一、安装
1、环境规划
192.168.1.30:3307 node1 192.168.1.30:3308 node2 192.168.1.30:3309 node3
2、环境部署
1) 拉取PXC镜像 注(我拉latest版部署的时候失败了,换5.7.30版本部署成功) docker pull percona/percona-xtradb-cluster:5.7.30 2) 为PXC镜像改名 docker tag percona/percona-xtradb-cluster:5.7.30 pxc 3) 创建pxc网段 docker network create --subnet=172.18.0.0/16 dz-pxc-net 4) 先创3个数据卷和一个备份数据卷(用于热备份数据) docker volume create --name v1 docker volume create --name v2 docker volume create --name v3 docker volume create --name backup 5) 创建3个容器 docker run -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v1:/var/lib/mysql -v backup:/data --privileged=true --name=node1 --net=dz-pxc-net --ip 172.18.0.2 pxc docker run -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged=true --name=node2 --net=dz-pxc-net --ip 172.18.0.3 pxc docker run -d -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v backup:/data --privileged=true --name=node3 --net=dz-pxc-net --ip 172.18.0.4 pxc
以上是关于数据库之MySQL部署PXC方案的主要内容,如果未能解决你的问题,请参考以下文章