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 目录映射
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

双机热备

keepalived 安装在Haproxy所在容器之内
宿主机也需要安装keepalived,为的是映射网卡内的虚拟ip 
/etc/keepalived/keepalived.conf

PXC全量备份

备份工具 XtraBackup

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

猜你喜欢

转载自blog.csdn.net/sunt2018/article/details/91958220