docker中mysql pxc集群

复制代码
PXC集群
https://hub.docker.com/r/percona/percona-xtradb-cluster
安装PXC镜像
下载镜像或者导入本地镜像
docker pull percona/percona-xtradb-cluster

docker load < /home/soft/pxc.tar.gz 

修改镜像名字
docker tag docker.io/percona/percona-xtradb-cluster pxc
删除镜像
docker rmi  docker.io/xx
查看镜像
docker images

创建内部网络
docker network create net1
docker network inspect net1
docker network rm net1

创建Docker卷
容器中的pxc节点映射数据目录的解决办法
docker volume create --name v1
查看
docker inspect v1
删除
docker volume rm v1 

实战
docker volume create v1
docker volume create v2
docker volume create v3
docker volume create v4
docker volume create v5

docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=ABC123456 -V V1:/var/lib/mysql --privileged --name=node --net=net1 --ip 172.18.0.2 pxc 


数据库负载均衡
安装Haproxy镜像
docker pull haproxy
创建Haproxy配置文件
touch /home/soft/haproxy.cfg


创建Haproxy容器
docker run -it -d -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name haproxy --privileged --net=net1 haproxy

haproxy -f /usr/local/etc/haproxy/haproxy.cfg


进入一个允许容器
docker exec -it h1 bash 

haproxy -f /usr/local/etc/haproxy/haproxy.cfg

CREATE USER 'haproxy'@'%’ IDENTIFIED BY '';
配置keepalived


启动 Keepalived 
service keepalived start 


数据库热备份

MYSQL常见的热备有LVM和XtraBackUp两种方案

全量备份和增量备份
创建数据卷 用于映射宿主机内和容器内路径
docker volume create backup


docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged -e CLUSTER_JOIN=node2 --name=node1 --net=net1 --ip 172.18.0.2 pxc




pxc全量备份步骤
apt-get update
apt-get install percona-xtrabackup-24
全量备份
innobackupex --user=root --password=abc123456 /data/backup/full



pxc全量恢复步骤  
第一步 删除 mysql数据
rm -rf /var/lib/mysql/*
第二步 apply-back 回滚没有提交的事务
innobackupex --user=root --password=abc123456 --apply-back /data/backup/full/2018-04-15_05-09-07/
第三步 copy-back还原的意思
innobackupex --user=root --password=abc123456 --copy-back /data/backup/full/2018-04-15_05-09-07/



还原冷备份 数据 前提工作

docker stop node1 node2 node3 node4 node5  停掉5个pxc节点
docker rm node1 node2 node3 node4 node5 删除5个pxc节点
docker volume rmn v1 v2 v3 v4 v5 删除映射的数据卷
docker volume create v1 创建新的数据卷

启动一个pxc节点
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -v v1:/var/lib/mysql -v backup:/data --privileged -e CLUSTER_JOIN=node2 --name=node1 --net=net1 --ip 172.18.0.2 pxc
进入node1节点容器 
docker exec -it node1 bash 
执行冷还原 pxc全量恢复步骤  

退出一下容器 exit
重启下node1节点 
docker stop node1
docker start node1
复制代码

 

posted @   山河永慕~  阅读(396)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
历史上的今天:
2017-07-18 Spring+SpringMVC+MyBatis深入学习及搭建(十三)——SpringMVC入门程序(二)
点击右上角即可分享
微信分享提示