博客
关于我
Docker搭建MySQL集群
阅读量:91 次
发布时间:2019-02-26

本文共 3128 字,大约阅读时间需要 10 分钟。

Docker简易搭建MySQL集群

MySQL集群通过PXC 集群方案( Percona XtraDB Cluster )搭建

1.下载percona

docker pull percona/percona-xtradb-cluster

2.创建内部网络

出于安全考虑,将PXC集群放置于docker内部网络中。只需将宿主的端口与之映射并开放出来即可

docker network create --subnet=172.18.0.0/24 net1

执行成功后,查看net1详细信息执行如下命令

docker inspect net1

返回结果

[    {        "Name": "net1",        "Id": "cfe8279ff4bff1561c33bc2aec88f37800829f7fd5377ac284005c4c8a275e07",        "Created": "2020-04-27T00:12:30.448769804+08:00",        "Scope": "local",        "Driver": "bridge",        "EnableIPv6": false,        "IPAM": {            "Driver": "default",            "Options": {},            "Config": [                {                    "Subnet": "172.18.0.0/24"                }            ]        },        "Internal": false,        "Attachable": false,        "Ingress": false,        "ConfigFrom": {            "Network": ""        },        "ConfigOnly": false,        "Containers": {},        "Options": {},        "Labels": {}    }]

3.创建Docker卷

PXC较为特殊,无法直接使用映射目录的方法做映射(使用后会闪退),故使用docker卷

docker volume create --name volume1

执行成功后,想查看映射的地址执行如下命令

docker inspect volume1

返回结果

[    {        "CreatedAt": "2020-05-15T13:04:24+08:00",        "Driver": "local",        "Labels": {},        "Mountpoint": "/var/lib/docker/volumes/volume1/_data",        "Name": "volume1",        "Options": {},        "Scope": "local"    }]
  • 由于要多个数据库,所以建立数据卷volume2,volume3,volume4,volume5
docker volume create --name volume2docker volume create --name volume3docker volume create --name volume4docker volume create --name volume5

4. 创建PXC容器

docker run -d -p 3306:3306 -v volume1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 --privileged --name=node1 --net=net1 --ip 172.18.0.2 percona/percona-xtradb-cluster
-d:默认在后台运行,为守护进程-p:3306(宿主):3306(容器)端口映射,将容器3306端口映射到宿主3306坤口-v  v1:/var/lib/mysql:目录映射,将第三步创建的v1映射到容器/var/lib/mysql-e MYSQL_ROOT_PASSROWD:创建的用户实例的密码,默认实例root-e CLUSTER_NAME:集群名称-e XTRABACKUP_PASSWORD:数据库之间同步使用的密码--privileged:权限给予最高权限--name:给容器容命名--net:使用内部网段--ip:内部网段分到的地址percona:percona镜像
  • 建立多个PXC容器
docker run -d -p 3307:3306 -v volume2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node2 --net=net1 --ip 172.18.0.3 percona/percona-xtradb-clusterdocker run -d -p 3308:3306 -v volume3:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node3 --net=net1 --ip 172.18.0.4 percona/percona-xtradb-clusterdocker run -d -p 3309:3306 -v volume4:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node4 --net=net1 --ip 172.18.0.5  percona/percona-xtradb-clusterdocker run -d -p 3310:3306 -v volume5:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD=123456 -e CLUSTER_JOIN=node1 --privileged --name=node5 --net=net1 --ip 172.18.0.6 percona/percona-xtradb-cluster

5.测试

用Navicat for mysql连接到之前四个节点的数据库,在四个节点数据库中 在任意一个数据库进行建库、建表、增删改查数据等操作后,再查看其它节点进行查看,或者在其它不同的节点进行操作看是否数据能成功进行同步

转载地址:http://nenk.baihongyu.com/

你可能感兴趣的文章
Nginx 常用配置清单
查看>>
nginx 常用配置记录
查看>>
nginx 开启ssl模块 [emerg] the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx
查看>>
Nginx 我们必须知道的那些事
查看>>
Nginx 源码完全注释(11)ngx_spinlock
查看>>
Nginx 的 proxy_pass 使用简介
查看>>
Nginx 的 SSL 模块安装
查看>>
Nginx 的优化思路,并解析网站防盗链
查看>>
Nginx 的配置文件中的 keepalive 介绍
查看>>
nginx 禁止以ip形式访问服务器
查看>>
Nginx 结合 consul 实现动态负载均衡
查看>>
Nginx 负载均衡与权重配置解析
查看>>
Nginx 负载均衡详解
查看>>
nginx 配置 单页面应用的解决方案
查看>>
nginx 配置https(一)—— 自签名证书
查看>>
nginx 配置~~~本身就是一个静态资源的服务器
查看>>
Nginx 配置服务器文件上传与下载
查看>>
Nginx 配置清单(一篇够用)
查看>>
Nginx 配置解析:从基础到高级应用指南
查看>>
Nginx 集成Zipkin服务链路追踪
查看>>