博客
关于我
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/

你可能感兴趣的文章
mysql 用户管理和权限设置
查看>>
MySQL 的 varchar 水真的太深了!
查看>>
mysql 的GROUP_CONCAT函数的使用(group_by 如何显示分组之前的数据)
查看>>
MySQL 的instr函数
查看>>
MySQL 的mysql_secure_installation安全脚本执行过程介绍
查看>>
MySQL 的Rename Table语句
查看>>
MySQL 的全局锁、表锁和行锁
查看>>
mysql 的存储引擎介绍
查看>>
MySQL 的存储引擎有哪些?为什么常用InnoDB?
查看>>
Mysql 知识回顾总结-索引
查看>>
Mysql 笔记
查看>>
MySQL 精选 60 道面试题(含答案)
查看>>
mysql 索引
查看>>
MySQL 索引失效的 15 种场景!
查看>>
MySQL 索引深入解析及优化策略
查看>>
MySQL 索引的面试题总结
查看>>
mysql 索引类型以及创建
查看>>
MySQL 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>