如何创建MySQL的PXC集群

下载PXC集群镜像文件

下载

docker pull percona/percona-xtradb-cluster

重命名

[root@hongshaorou ~]# docker tag docker.io/percona/percona-xtradb-cluster pxc

创建内部网络

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

创建网段:

  1.  
    [root@hongshaorou ~]# docker network create --subnet=172.18.0.0/24 net1
  2.  
    ad5c096baebe656f530576344ecde9a3674b907134aced66df27a8d72feefc63

查看网段

  1.  
    [root@hongshaorou ~]# 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.  
    ]

删除网段

[root@hongshaorou ~]# docker network rm net1

创建Docker卷

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

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

  1.  
    创建Docker卷:[root@hongshaorou ~]# docker volume create --name v1
  2.  
    --name:设置卷名 可以不写

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

  1.  
    [root@hongshaorou ~]# 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卷

[root@hongshaorou ~]# docker volume rm v1

创建PXC容器

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

  1.  
    [root@hongshaorou ~]# 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.  
    [root@hongshaorou ~]# 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.  
    [root@hongshaorou ~]# docker volume create --name v2
  2.  
    v2
  3.  
    [root@hongshaorou ~]# docker volume create --name v3
  4.  
    v3
  5.  
    [root@hongshaorou ~]# docker volume create --name v4
  6.  
    v4
  7.  
    [root@hongshaorou ~]# docker volume create --name v5
  8.  
    v5

创建容器

  1.  
    创建node2:
  2.  
    [root@hongshaorou ~]# 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.  
    [root@hongshaorou ~]# 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.  
    [root@hongshaorou ~]# 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.  
    [root@hongshaorou ~]# 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.  
    [root@hongshaorou ~]# 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集群

Docker搭建PXC集群的更多相关文章

  1. Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)

    上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pu ...

  2. Docker 搭建pxc集群 + haproxy + keepalived 高可用(一)

    一.首先需要安装好docker,安装方法可以参考之前一篇博文Centos7安装docker [root@localhost ~]# systemctl start docker [root@local ...

  3. docker安装pxc集群

      前言 现在mysql自建集群方案有多种,keepalived.MHA.PXC.MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有 ...

  4. Docker 搭建 etcd 集群

    阅读目录: 主机安装 集群搭建 API 操作 API 说明和 etcdctl 命令说明 etcd 是 CoreOS 团队发起的一个开源项目(Go 语言,其实很多这类项目都是 Go 语言实现的,只能说很 ...

  5. Docker搭建RabbitMQ集群

    Docker搭建RabbitMQ集群 Docker安装 见官网 RabbitMQ镜像下载及配置 见此博文 集群搭建 首先,我们需要启动运行RabbitMQ docker run -d --hostna ...

  6. docker搭建etcd集群环境

    其实关于集群网上说的方案已经很多了,尤其是官网,只是这里我个人只有一个虚拟机,在开发环境下建议用docker-compose来搭建etcd集群. 1.拉取etcd镜像 docker pull quay ...

  7. docker 搭建zookeeper集群和kafka集群

    docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...

  8. 基于docker安装pxc集群

    基于docker安装pxc集群 一.PXC 集群的安装 PXC集群比较特殊,需要安装在 linux 或 Docker 之上.这里使用 Docker进行安装! Docker的镜像仓库中包含了 PXC数据 ...

  9. 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)

    上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...

随机推荐

  1. 树形结构表的存储【转自:http://www.cnblogs.com/huangfox/archive/2012/04/11/2442408.html】

    在数据库中存储树形结构的数据,这是一个非常普遍的需求,典型的比如论坛系统的版块关系.在传统的关系型数据库中,就已经产生了各种解决方案. 此文以存储树形结构数据为需求,分别描述了利用关系型数据库和文档型 ...

  2. MySQL的BLOB类型(解决mysql不支持mb4编码的时候存储emoji表情问题)

    今天在存储emoji表情的时候,发现无法存储,mysql版本太低也没办法使用uft8mb4格式编码,只能将数据字段设置为blob BLOB是一个二进制大对象,可以容纳可变数量的数据.有4种BLOB类型 ...

  3. SpringMvc开发报找不到springmvc配置文件

    param-name标签属性值必须为contextConfigLocation

  4. vue学习笔记 - 篇2

    1.借助Vue.extend()方法创建组件 注意点 var Aaa = Vue.extend({ template: "<h1>这是标题</h1>" }) ...

  5. wpf UI 元素类型

  6. 蓝牙协议分析(8)_BLE安全机制之白名单

    1. 前言 在万物联网的时代,安全问题将会受到非常严峻的挑战(相应地,也会获得最大的关注度),因为我们身边的每一个IOT设备,都是一个处于封印状态的天眼,随时都有被开启的危险.想想下面的场景吧: 凌晨 ...

  7. day 08 字符编码和文件的读写操作

    打开文件的语法 f=open("test.txt",encoding=:"utf-8") #给系统发送一个指令,让操作系统去打开文件 使用上面的方法打开文件的方 ...

  8. django中向用户发送邮件信息

    发送邮件来让用户激活,因此,邮件中需要包含用户信息.但用户信息需要加密才可以.因此加密采用的是itsdangerous中的TimedJSONWebSignatureSerializer. 参考链接:h ...

  9. AutoHotKey (AHK) 按键表+自定义快捷键简化操作的教程

    自定义快捷键简化操作的教程 ① 下载安装AutoHotKey,并用记事本新建一个MyHotKey.ahk文件,录入如②中信息 ② 下图可以实现,按F6即可触发“Ctrl+C”的复制快捷键,同理F7可实 ...

  10. 12.python-metaclass元类

    1.python中一切皆是对象,类本身也是一个对象,当使用关键字class的时候,python解释器在加载class的时候会创建一个对象(这里的对象指的是类而非类的实例) class Foo: #cl ...