Docker搭建PXC集群

如何创建MySQL的PXC集群

下载PXC集群镜像文件

下载

docker pull percona/percona-xtradb-cluster

重命名

[[email protected] ~]# docker tag docker.io/percona/percona-xtradb-cluster pxc

创建内部网络

处于安全考虑,需要给PXC集群实例创建Docker内部网络

创建网段:

  1. [[email protected] ~]# docker network create --subnet=172.18.0.0/24 net1

  2.  

    ad5c096baebe656f530576344ecde9a3674b907134aced66df27a8d72feefc63

查看网段

  1. [[email protected] ~]# docker network inspect net1

  2.  

    [

  3.  

    {

  4.  

    "Name": "net1",

  5.  

    "Id": "ad5c096baebe656f530576344ecde9a3674b907134aced66df27a8d72feefc63",

  6.  

    "Created": "2018-06-06T10:06:28.55654238+08:00",

  7.  

    "Scope": "local",

  8.  

    "Driver": "bridge",

  9.  

    "EnableIPv6": false,

  10.  

    "IPAM": {

  11.  

    "Driver": "default",

  12.  

    "Options": {},

  13.  

    "Config": [

  14.  

    {

  15.  

    "Subnet": "172.18.0.0/24"

  16.  

    }

  17.  

    ]

  18.  

    },

  19.  

    "Internal": false,

  20.  

    "Attachable": false,

  21.  

    "Containers": {},

  22.  

    "Options": {},

  23.  

    "Labels": {}

  24.  

    }

  25.  

    ]

删除网段

[[email protected] ~]# docker network rm net1

创建Docker卷

Docker容器使用原则:一旦创建出容器,尽量不要在容器中保存数据。一般通过目录映射将数据保存在宿主机里面(我们把宿主机的一个目录映射到容器内,然后容器的数据都保存到映射目录,这样就保存到了宿主机,即使容器损坏,宿主机也有数据保存)。但是,PXC技术在使用Docker的时候无法直接使用映射目录,需要另外一种映射技术—Docker卷。

容器中的PXC节点映射数据目录的解决办法

  1. 创建Docker卷:[[email protected] ~]# docker volume create --name v1

  2.  

    --name:设置卷名 可以不写

我们创建的Docker卷是在宿主机上可以看到的具体映射真实目录

  1. [[email protected] ~]# docker inspect v1

  2.  

    [

  3.  

    {

  4.  

    "Driver": "local",

  5.  

    "Labels": {},

  6.  

    "Mountpoint": "/var/lib/docker/volumes/v1/_data",

  7.  

    "Name": "v1",

  8.  

    "Options": {},

  9.  

    "Scope": "local"

  10.  

    }

  11.  

    ]

  12.  

    我们看到Docker卷v1映射到了/var/lib/docker/volumes/v1/_data

删除Docker卷

[[email protected] ~]# docker volume rm v1

创建PXC容器

只需要向PXC镜像传入运行参数就能创建出PXC容器

  1. [[email protected] ~]# docker run -d -p 3307: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

  2.  

    1da51c2b8817f414ad825ba48f69a46c176f0b5ba7539e3b31e9ac54de056877

  3.  

  4.  

    参数解释:

  5.  

    -d:表示后台运行

  6.  

    -v:映射Docker卷到容器的mysql数据目录

  7.  

    MYSQL_ROOT_PASSWORD:表示创建的数据库密码

  8.  

    CLUSTER_NAME: 表示创建出的集群名字

  9.  

    XTRABACKUP_PASSWORD:表示集群通信密码

  10.  

    --privileged:表示分配最高权限

  11.  

    --net:指定网段

  12.  

    --ip:指定IP

  13.  

  14.  

    [[email protected] ~]# docker ps -a

  15.  

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  16.  

    1da51c2b8817 pxc "/entrypoint.sh " 7 seconds ago Up 5 seconds 4567-4568/tcp, 0.0.0.0:3307->3306/tcp node1

这样我们就创建了第一个PXC节点

下面依次创建剩余四个节点

创建Docker卷

  1. [[email protected] ~]# docker volume create --name v2

  2.  

    v2

  3.  

    [[email protected] ~]# docker volume create --name v3

  4.  

    v3

  5.  

    [[email protected] ~]# docker volume create --name v4

  6.  

    v4

  7.  

    [[email protected] ~]# docker volume create --name v5

  8.  

    v5

创建容器

  1. 创建node2:

  2.  

    [[email protected] ~]# docker run -d -p 3308:3306 -v v2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc

  3.  

  4.  

    创建node3:

  5.  

    [[email protected] ~]# docker run -d -p 3309:3306 -v v3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc

  6.  

  7.  

    创建node4:

  8.  

    [[email protected] ~]# docker run -d -p 3310:3306 -v v4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc

  9.  

  10.  

    创建node5:

  11.  

    [[email protected] ~]# docker run -d -p 3311:3306 -v v5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=abc123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=abc123456 -e CLUSTER_JOIN=node1 --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

  12.  

  13.  

    查看当前有哪些运行容器:

  14.  

    [[email protected] ~]# docker ps -a

  15.  

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

  16.  

    f7638daaa09b pxc "/entrypoint.sh " 7 seconds ago Up 4 seconds 4567-4568/tcp, 0.0.0.0:3311->3306/tcp node5

  17.  

    909261673fac pxc "/entrypoint.sh " 25 seconds ago Up 24 seconds 4567-4568/tcp, 0.0.0.0:3310->3306/tcp node4

  18.  

    763dca13edcd pxc "/entrypoint.sh " 43 seconds ago Up 42 seconds 4567-4568/tcp, 0.0.0.0:3309->3306/tcp node3

  19.  

    9a3f92074ad0 pxc "/entrypoint.sh " About a minute ago Up About a minute 4567-4568/tcp, 0.0.0.0:3308->3306/tcp node2

  20.  

    1da51c2b8817 pxc "/entrypoint.sh " 15 minutes ago Up 15 minutes 4567-4568/tcp, 0.0.0.0:3307->3306/tcp node1

在创建剩余容器的时候需要注意的是网络和端口的映射不同,以及多了-e CLUSTER_JOIN=node1 表示加入node1节点。

注意:第一个节点创建时间较长,必须等待两分钟左右再创建剩余节点。

创建好之后我们就可以使用客户端连接数据库

转自:https://zhaobugs.com/2018/06/06/Docker搭建PXC集群

原文地址:https://www.cnblogs.com/EikiXu/p/10109205.html

时间: 2024-07-28 19:23:27

Docker搭建PXC集群的相关文章

docker 搭建PXC集群 与 redis集群

docker基本指令: 更新软件包 yum -y update 安装Docker虚拟机(centos 7) yum install -y docker 运行.重启.关闭Docker虚拟机 service docker start service docker stop 搜索镜像 docker search 镜像名称 下载镜像 docker pull 镜像名称 查看镜像 docker images 删除镜像 docker rmi 镜像名称 运行容器 docker run 启动参数 镜像名称 查看容

Docker搭建RabbitMQ集群

Docker搭建RabbitMQ集群 Docker安装 见官网 RabbitMQ镜像下载及配置 见此博文 集群搭建 首先,我们需要启动运行RabbitMQ docker run -d --hostname my-rabbit -p 5671:5671 -p 5672:5672 -p 15671:15671 -p 15672:15672 -p 25672:25672 -p 4369:4369 -v $PWD/rabbitmq-data:/var/rabbitmq/lib --name my_rab

docker 搭建zookeeper集群和kafka集群

docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之一,负责快速在集群中部署分布式应用. Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.Compose 定位是 「定义和运行多个 Docker 容器的应用(Defining and running multicontainer Docker appl

搭建PXC集群指引

目录 背景 架构图 PXC的特点 优点 缺点 搭建指引 机器准备 安装前准备 安装 安装依赖 各节点PXC软件的下载和安装 创建配置文件 安装xtrabackup 各个节点无密码初始化 引导第一个节点 引导第二.三个节点 检查测试 补充 PXC传输数据有两种方式 PXC使用的限制 背景 因为客户有一套PXC(Percona Xtradb Cluster)集群,有运维的需求,所以需要研究和测试PXC,现整理一套完整的搭建PXC标准文档,以供后面测试和学习用途. mariadb的MGC(MariaD

基于docker安装pxc集群

基于docker安装pxc集群 一.PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上.这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据库的官方镜像, 地址:https://hub.docker.com/r/percona/percona-xtradb-cluster/ 如下图所示: 一,镜像的安装 安装镜像的两种方式: docker pull percona/percona-xtradb-cluster docker load <

使用 Docker搭建 ZooKeeper 集群

1.镜像下载 docker pull zookeeper 2.启动 ZK 镜像 >>> docker run --name my_zookeeper -d zookeeper:latest 这个命令会在后台运行一个 zookeeper 容器, 名字是 my_zookeeper, 并且它默认会导出 2181 端口.接着我们使用: docker logs -f my_zookeeper 3.使用 ZK 命令行客户端连接 ZK 因为刚才我们启动的那个 ZK 容器并没有绑定宿主机的端口, 因此我

通过docker搭建ELK集群

单机ELK,另外两台服务器分别有一个elasticsearch节点,这样形成一个3节点的ES集群. 可以先尝试单独搭建es集群或单机ELK https://www.cnblogs.com/lz0925/p/12018209.html // 单机ELK https://www.cnblogs.com/lz0925/p/12011026.html // 三节点es集群 注意点 服务器内存:要求不低于8G,如果4G,没有跑其他程序的话,应该也可以,低于4G基本不用考虑. 我的系统:阿里云centOS7

Docker搭建redis-cluster集群三主三备

环境准备 系统:centos7.7 redis:5.0.5 master1:192.168.33.9:7071 master2:192.168.33.10:7072 master3:192.168.33.11:7073 slave1:192.168.33.9:7074 slave2:192.168.33.10:7075 slave3:192.168.33.11:7076 一.搭建redis集群(以下步骤在每台服务器上都要执行) 1.>安装docker yum -y install docker

docker搭建Hadoop集群

一个分布式系统基础架构,由Apache基金会所开发. 用户可以在不了解分布式底层细节的情况下,开发分布式程序.充分利用集群的威力高速运算和存储. 首先搭建Docker环境,Docker版本大于1.3.2 安装主机监控程序和加速器(curl -sSL https://get.daocloud.io/daomonit/install.sh | sh -s 7a029f60d36056fe1b85fabca6a133887245abe6) docker pull daocloud.io/library