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
原文地址:https://www.cnblogs.com/shanheyongmu/p/11206181.html