docker部署mysql集群

刺骨的言语ヽ痛彻心扉 2022-01-14 10:21 474阅读 0赞

Replication方案:

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

日志 新闻 帖子

PXC 方案

速度慢 强一致性 高价值

订单 账户 财务

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

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

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

下载 | 本地导入

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

创建内部网络

  1. # 搭建5节点的sql集群
  2. # 出于安全考虑,需要给PXC集群实例创建docker内部网络
  3. # 创建网段
  4. docker network create net1
  5. # 查看相关信息
  6. docker network inspect net1
  7. # 删除网段
  8. docker network rm net1
  9. # 如,执行
  10. docker network create --subnet=172.18.0.0/24 net1

创建docker卷

  1. # 容器内不要保存数据,将数据保存到宿主机上
  2. # 使用目录映射技术
  3. # 创建 数据卷
  4. docker volume create --name v1
  5. # 查看数据卷详情,可以查看路径
  6. docker inspect v1

创建PXC容器

  1. docker run -d -p 3306:3306
  2. -v v1:/var/lib/mysql
  3. -e MYSQL_ROOT_PASSWORD=abc123456
  4. -e CLUSTER_NAME=PXC
  5. -e XTRABACKUP_PASSWORD=abc123456
  6. --privileged --name=node1 --net=net1 --ip 172.18.0.2
  7. pxc
  8. -v 目录映射,此处写v1v2v3即可,不能写真实目录/var/lib/docker/volumes/v2/_data
  9. MYSQL_ROOT_PASSWORD 密码(用户名只能root
  10. CLUSTER_NAME 集群的名字
  11. XTRABACKUP_PASSWORD 容器同步密码
  12. --privileged 给最高权限
  13. --name=node1 容器名字
  14. --net=net1 指定网段
  15. --ip 172.18.0.2 网段内ip
  16. pxc 镜像名字

PXC其他节点创建

  1. docker run -d -p 3307:3306 # 端口错开
  2. -e MYSQL_ROOT_PASSWORD=abc123456
  3. -e CLUSTER_NAME=PXC
  4. -e XTRABACKUP_PASSWORD=abc123456
  5. -e CLUSTER_JOIN=node1
  6. -v v3:/var/lib/mysql
  7. --privileged --name=node3 --net=net1 --ip 172.18.0.3
  8. pxc
  9. # 端口错开
  10. # 加入集群 主节点node1
  11. # -v3
  12. # name node3
  13. # ip 172.18.0.3

数据库负载均衡

  1. Haproxy 一个中间件 转发器
  2. docker pull haproxy
  3. # 本机创建一个配置文件,参考 https://zhangge.net/5125.html
  4. touch /../haproxy.cfg
  5. docker run -it -d -p 8888:8888 -p 8001:8001 -v /home/soft/haproxy:/usr/lcoal/etc/haproxy --name haproxy --privileged --net=net1
  6. # 配置文件编写见下链接
  7. # 注意,修改IP地址与端口号,若使用docker ,server IP 为net1
  8. # 宿主机 centos安装haproxy过程
  9. https://blog.csdn.net/sunt2018/article/details/92581802

双机热备

  1. keepalived 安装在Haproxy所在容器之内
  2. # 安装,因为haproxy容器是ubuntu的,so 使用
  3. apt-get update
  4. apt-get install keepalived
  5. 宿主机也需要安装keepalived,为的是映射网卡内的虚拟ip
  6. /etc/keepalived/keepalived.conf
  7. # 参考
  8. https://blog.csdn.net/sunt2018/article/details/92762063

PXC全量备份

  1. 备份工具 XtraBackup

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

  1. # 创建网段
  2. docker network create --subnet=172.18.0.0/24 net1
  3. # 创建数据卷
  4. docker volume create --name v1
  5. # 主
  6. 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
  7. # 从
  8. 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

发表评论

表情:
评论列表 (有 0 条评论,474人围观)

还没有评论,来说两句吧...

相关阅读