「实战篇」开源项目docker化运维部署-搭建mysql集群(四)

本文介绍了利用Docker部署Percona Xtradb Cluster(PXC)来构建MySQL集群,强调了PXC相对于传统主从复制的强一致性优势。通过详细步骤展示了如何在Docker环境中搭建PXC,包括创建内部网络、配置Docker卷,以及使用Haproxy进行负载均衡。文章还讨论了高可用性的解决方案,如Keepalived实现双机热备,确保集群的稳定运行。
摘要由CSDN通过智能技术生成

有了docker虚拟机,就需要利用平台部署数据库的集群,在实际操作之前介绍下数据库集群的方案和各自的特点。源码:https://github.com/limingios/netFuture/tree/master/mysql-pxc/

集群的方案

单节点的弊病

  1. 大型互联网程序用户群体庞大,所以架构必须要特殊设计
  2. 单节点的数据库无法满足性能的要求

案例15年前,高考成绩可以在网上查(河南几十万考生),那时候基本家里都没电脑,都是去网吧白天去网吧也查不了,太慢了,后来半夜通宵有时候可以查到,也就是说白天基本查不了人太多了。晚上看运气。一个数据库的实例1万多人就无法反应了。

  1. 单节点的数据库没有冗余设计,无法满足高可用互联网科技发展蓬勃兴起,人工智能时代来临,抓住下一个风口。为帮助那些往想互联网方向转行想学习,却因为时间不够,资源不足而放弃的人。我自己整理的一份最新的大数据进阶资料和高级开发教程,大数据学习群: 740041381就可以找到组织学习  欢迎进阶中和进想深入大数据的小伙伴加入

常用的mysql集群设计方案

  • Replication
  1. 速度快
  2. 弱一致性
  3. 低价值
  4. 场景:日志,新闻,帖子
  • PXC
  1. 速度慢
  2. 强一致性
  3. 高价值
  4. 场景:订单,账户,财务

Percona Xtradb Cluster,简称PXC。是基于Galera插件的MySQL集群。相比那些比较传统的基于主从复制模式的集群架构MHA和MM+keepalived,galera cluster最突出特点就是解决了诟病已久的数据复制延迟问题,基本上可以达到实时同步。而且节点与节点之间,他们相互的关系是对等的。本身galera cluster也是一种多主架构。galera cluster最关注的是数据的一致性,对待事物的行为时,要么在所有节点上执行,要么都不执行,它的实现机制决定了它对待一致性的行为非常严格,这也能非常完美的保证MySQL集群的数据一致性。在PXC里面任何一个节点都是可读可写的。在其他的节点一定是可以读取到这个数据。

  • 建议PXC使用PerconaServer(MYSQL的改进版,性能提升很大)

  • PXC方案和Replication方案的对比

PXC任意一个节点都可以存在读写的方案,也就是任意一个节点都可以当读或者当写。同步复制。保证强一致性。

Replication方案,主从的方式,他是采用异步的方式。

  • PXC的数据强一致性

同步复制,事务在所有节点要提交都提交。要么都不提交

  • Replication弱一致性,主要master成功就成功了。返回给调用者。如果slave失败,也没办法。因为已经告诉调用者成功了,调用者获取查询的时候查询不到信息。例如:在淘宝买个东西,付款也成功了,查询订单没信息是不是要骂娘。

环境搭建

应用 IP地址 服务 配置 安装应用 安装方式
docker-mysql 192.168.66.100 docker-mysql 双核 8g内存 docker-mysql docker

(1). 虚拟机vagrant讲述安装的步骤

vagrant up

(2).机器window/mac开通远程登录root用户下

su -
# 密码
vagrant
#设置 PasswordAuthentication yes
vi /etc/ssh/sshd_config
sudo systemctl restart sshd

PXC集群安装介绍

PXC既可以在linux系统安装,也可以在docker上面安装。

  • 安装镜像PXC镜像
docker pull percona/percona-xtradb-cluster
#本地安装
docker load </home/soft/pxc.tar.gz
  • 创建内部网络的

处于安全,需要给PXC集群实例创建Docker内部网络,都出可虚拟机自带的网段是172.17.0., 这是内置的一个网段,当你创建了网络后,网段就更改为172.18.0.

docker network create net1
docker network inspect net1
docker network rm net1
#设置网段
docker network create  --subnet=172.18.0.0/24 net1

  • 创建Docker 卷

一旦生成docker容器,不要在容器内保存业务的数据,要把数据放到宿主机上,可以把宿主机的一个目录映射到容器内,如果容器出现问题,只需要吧容器删除,重新建立一个新的容器把目录映射给新的容器。

之前一直有个疑问,如果直接映射目录的吧,存在失败的问题,现在终于知道解决方案了,直接映射docker卷就可以可以忽略这个问题了。

容器中的PXC节点映射数据目录的解决方法

docker volume create n
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值