docker部署mysql集群

Replication方案:

速度快 弱一致性 低价值数据

日志 新闻 帖子

PXC 方案

速度慢 强一致性 高价值

订单 账户 财务

PXC数据库任何一个节点都是可以读写的。

使用PXC技术,创建mysql集群,

使用docker仓库中pxc的官方镜像。

下载 | 本地导入

# docker仓库下载安装
docker pull percona/percona-xtradb-cluster
# 本地镜像安装
docker load < /home/soft/pxc.tar.gz
# 修改名字
docker tag 原名 新名字

创建内部网络

# 搭建5节点的sql集群
# 出于安全考虑,需要给PXC集群实例创建docker内部网络

# 创建网段
docker network create net1
# 查看相关信息
docker network inspect net1
# 删除网段
docker network rm net1

# 如,执行
docker network create --subnet=172.18.0.0/24 net1

创建docker卷

# 容器内不要保存数据,将数据保存到宿主机上
# 使用目录映射技术

# 创建 数据卷
docker volume create --name v1
# 查看数据卷详情,可以查看路径 
docker inspect v1

创建PXC容器

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


-v 目录映射,此处写v1、v2、v3即可,不能写真实目录/var/lib/docker/volumes/v2/_data
MYSQL_ROOT_PASSWORD 密码(用户名只能root)
CLUSTER_NAME 集群的名字
XTRABACKUP_PASSWORD 容器同步密码
--privileged 给最高权限
--name=node1 容器名字
--net=net1 指定网段
--ip 172.18.0.2 网段内ip
pxc 镜像名字

PXC其他节点创建

docker run -d -p 3307:3306 # 端口错开
-e MYSQL_ROOT_PASSWORD=abc123456
-e CLUSTER_NAME=PXC
-e XTRABACKUP_PASSWORD=abc123456
-e CLUSTER_JOIN=node1
-v v3:/var/lib/mysql
--privileged --name=node3 --net=net1 --ip 172.18.0.3
pxc

# 端口错开
# 加入集群 主节点node1
# -v3
# name node3
# ip 172.18.0.3

数据库负载均衡

Haproxy 一个中间件 转发器
docker pull haproxy

# 本机创建一个配置文件,参考 https://zhangge.net/5125.html
touch /../haproxy.cfg
docker run -it -d -p 8888:8888 -p 8001:8001 -v /home/soft/haproxy:/usr/lcoal/etc/haproxy --name haproxy --privileged --net=net1
# 配置文件编写见下链接
# 注意,修改IP地址与端口号,若使用docker ,server IP 为net1

# 宿主机 centos安装haproxy过程
https://blog.csdn.net/sunt2018/article/details/92581802


双机热备

keepalived 安装在Haproxy所在容器之内
# 安装,因为haproxy容器是ubuntu的,so 使用
apt-get update
apt-get install keepalived
宿主机也需要安装keepalived,为的是映射网卡内的虚拟ip 
/etc/keepalived/keepalived.conf

# 参考
https://blog.csdn.net/sunt2018/article/details/92762063

PXC全量备份

备份工具 XtraBackup

https://blog.csdn.net/attwice/article/details/81434920
参考资料
慕课网《Docker环境下的前后端分离项目部署与运维》

# 创建网段
docker network create --subnet=172.18.0.0/24 net1
# 创建数据卷
docker volume create --name v1
# 主
docker run -d -p 8002:3306 -v /var/lib/docker/volumes/v2/_data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 --privileged --name=node2 --net=net1 --ip 172.18.0.2 pxc
# 从
docker run -d -p 8003:3306 -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node2 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.3 pxc

你可能感兴趣的:(docker部署mysql集群)