创建MySQL集群

  • PXC集群安装介绍

Docker的镜像仓库中包含了PXC数据库的镜像,下载即可

https://hub.docker.com/r/percona/percona-xtradb-cluster

  • 安装PXC镜像

1.从docker官方仓库中拉下PXC镜像

docker pull percona/percona-xtradb-cluster

或者本地安装

docker load < /home/soft/pxc.tar.gz

2.修改镜像名称,删除原来镜像

[root@localhost ~]# docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
docker.io/percona/percona-xtradb-cluster   latest              70b3670450ef        3 months ago        408 MB
docker.io/java                             latest              d23bdf5b1b1b        2 years ago         643 MB
[root@localhost ~]# ^C
[root@localhost ~]# docker tag docker.io/percona/percona-xtradb-cluster pxc
[root@localhost ~]# docker images
REPOSITORY                                 TAG                 IMAGE ID            CREATED             SIZE
docker.io/percona/percona-xtradb-cluster   latest              70b3670450ef        3 months ago        408 MB
pxc                                        latest              70b3670450ef        3 months ago        408 MB
docker.io/java                             latest              d23bdf5b1b1b        2 years ago         643 MB
[root@localhost ~]# docker rmi docker.io/percona/percona-xtradb-cluster
Untagged: docker.io/percona/percona-xtradb-cluster:latest
Untagged: docker.io/percona/percona-xtradb-cluster@sha256:17c64dacbb9b62bd0904b4ff80dd5973b2d2d931ede2474170cbd642601383bd
[root@localhost ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
pxc                 latest              70b3670450ef        3 months ago        408 MB
docker.io/java      latest              d23bdf5b1b1b        2 years ago         643 MB

  • 创建内部网络

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

docker network create net1
docker network inspect net1
docker network rm net1
[root@localhost ~]# docker network create --subnet=172.18.0.0/24 net1
9b5d44bff3eec1d5e17345447e97c5b713144123a2f9211eb7bb6cc83cf876d8
[root@localhost ~]# docker inspect net1
[
    {
        "Name": "net1",
        "Id": "9b5d44bff3eec1d5e17345447e97c5b713144123a2f9211eb7bb6cc83cf876d8",
        "Created": "2019-06-22T20:35:31.303994112+08:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/24"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {},
        "Options": {},
        "Labels": {}
    }
]
[root@localhost ~]# docker network rm net1
  • 创建Docker卷

使用Docker时,业务数据应保存在宿主机中,采用目录映射,这样可以使数据与容器独立。但是容器中的PXC无法直接使用映射目录,解决办法是采用Docker卷来映射

docker volume create --name v1
#删除数据卷
docker volume rm v1
[root@localhost ~]# docker volume create v1
v1
[root@localhost ~]# docker inspect v1
[
    {
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/v1/_data",
        "Name": "v1",
        "Options": {},
        "Scope": "local"
    }
]
[root@localhost ~]#  docker volume rm v1

1.创建5个数据卷

# 创建5个数据卷
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
docker volume create --name v4
docker volume create --name v5

2.创建5个PXC容器

注意,每个MySQL容器创建之后,因为要执行PXC的初始化和加入集群等工作,耐心等待1分钟左右再用客户端连接MySQL。另外,必须第1个MySQL节点启动成功,用MySQL客户端能连接上之后,再去创建其他MySQL节点。

#创建第1个MySQL节点
docker run -d --restart=always -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=net1 --ip 172.18.0.2 pxc

#创建第2个MySQL节点
docker run -d --restart=always -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=net1 --ip 172.18.0.3 pxc

#创建第3个MySQL节点
docker run -d --restart=always -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql --privileged --name=node3 --net=net1 --ip 172.18.0.4 pxc

#创建第4个MySQL节点
docker run -d --restart=always -p 3309:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v4:/var/lib/mysql --privileged --name=node4 --net=net1 --ip 172.18.0.5 pxc

#创建第5个MySQL节点
docker run -d --restart=always -p 3310:3306 -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 -v v5:/var/lib/mysql -v backup:/data --privileged --name=node5 --net=net1 --ip 172.18.0.6 pxc

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值