基于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 < pxc.tar.gz路径
二,创建内部网络
出于安全考虑,创建出来的 PXC集群不要直接对接Docker以外的网络,因此要给PXC集群实例创建 Docker内部网络。Docker内部网段外部无法直接访问,我们可通过 docker端口映射技术将端口对外开发。
docker 内部网络操作 ( 内部默认网段为 172.17.0.XX ):
docker network create 网络名
docker network inspect 网络名 : 查看某网络详细信息
docker network rm 网络名
例如:
docker network create –subnet=172.18.0.0/24 net1 :net1为网段名
docker network inspect net1
docker network rm net1
三、创建 Docker卷
通常我们通过 docker的目录映射机制将业务数据存储到我们的宿主机上。但是PXC集群技术比较特殊,如果为PXC集群使用了docker的目录映射技术,PXC会闪退,因此要采用另外一种目录映射技术,即使用 docker卷。
docker卷的常用操作:
docker volume create –name v1
docker inspect v1 : 查看卷的信息,知道卷在哪。
docker volume rm v1
创建的卷v1 是可以直接在宿主机上看到目录的。将这个卷映射给容器,此时启动容器,这样PXC容器启动就能将数据映射到卷中,我们通过宿主机中也能看到映射出来的数据。
四、创建PXC容器
只需要向PXC镜像传入运行参数就能创建出PXC容器
创建PXC 命令如下:
docker run -d -p 3306: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
###### 命令解释:
-d 代表后台运行
-v 表示 v1卷映射到docker的mysql中,mysql路径为 /var/lib/mysql
MYSQL_ROOT_PASSWORD=abc123456 表示mysql 的密码,用户名默认为root
CLUSTER_NAME=PXC 表示集群的名字
XTRABACKUP_PASSWORD=abc123456 集群之间同步的密码
–privileged 为权限
–name :给创建出来的容器起一个名字
–net : 容器分到的内部网段
–ip : 容器分到的 ip地址
pxc 为镜像名
假设我们要创建3个数据库的集群
docker volume create --name v1
docker volume create --name v2
docker volume create --name v3
/**
- 集群中数据库端口映射不一样、docker卷不一样、
- 集群中各个容器名不一样、ip地址不一样
- 注意修改这四个地方和 创建其他容器时添加:-e CLUSTER_JOIN=node1。
*/
docker run -d -p 3306: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 #主节点执行
// 多了一个加入集群的命令
docker run -d -p 3307: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 #node2上执行
docker run -d -p 3308: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 #node3上执行
注意事项:容器的创建是很快的,但是数据库创建比较慢(2分钟以上),一定要确保第一个容器的mysql 初始化好了在创建其他容器,其他容器需要集群到第一个容器的mysql上。可以通过mysql客户端连接来判断是否初始化好了。
数据库客户端连接时,主机为公网ip,端口为映射到宿主机上的端口,用户名root,密码为在 run容器时所指定的那个。
此时通过 docker ps -a 查看后台运行的容器即可。
查看日志:
docker logs -f [Container Id]
or
docker logs -f [Container Name]
基于docker安装pxc集群的更多相关文章
- docker安装pxc集群
前言 现在mysql自建集群方案有多种,keepalived.MHA.PXC.MYSQL主备等,但是目前根据自身情况和条件,选择使用pxc的放来进行搭建,最大的好处就是,多主多备,即主从一体,没有 ...
- 基于Docker部署ETCD集群
基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...
- 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现
庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介 在第七篇文章<庐山真面目之七微服务架构Consul ...
- docker安装hadoop集群
docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问 为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.... ...
- Docker搭建PXC集群
如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...
- 基于Docker的redis集群搭建
Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...
- Docker安装Consul集群
Docker 安装Consul集群 使用windows 环境,Docker desktop community 构建consul集群. 1.docker 容器网络 docker安装后,默认会创建三种网 ...
- Docker 搭建pxc集群 + haproxy + keepalived 高可用(二)
上一节我们有了两个分片的pxc集群,这一节我们接着安装haproxy和keepalived的实现集群的高可用 一.先下载haproxy的镜像 [root@localhost ~]# docker pu ...
- Docker 搭建pxc集群 + haproxy + keepalived 高可用(一)
一.首先需要安装好docker,安装方法可以参考之前一篇博文Centos7安装docker [root@localhost ~]# systemctl start docker [root@local ...
随机推荐
- 实战keras——用CNN实现cifar10图像分类
原文:https://blog.csdn.net/zzulp/article/details/76358694 import keras from keras.datasets import cifa ...
- Java虚拟机new对象
类加载检查java虚拟机在遇到一条 new 指令时,首先会检查是否能在常量池中定位到这个类的符号引用,并且是否已被加载过.解析和初始化过.如果没有,那必须先执行类加载过程 类加载的相关知识可参考:JV ...
- bootstrap让footer固定在顶部和底部
一.原理 使用fixed进行固定定位,相对于浏览器窗口进行定位,然后再设置其z-index的值即可. 二.Bootstrap中使用的类 1.顶部固定:navbar-fixed-top 2.底部固定:n ...
- 谈谈Java中的集合list、set、map之间的区别
参考文献:https://www.cnblogs.com/IvesHe/p/6108933.html 我这里只总结其区别,具体的说明,请查看参考文献,讲的很详细. A.list接口,实现子类有:arr ...
- python入门小结
以下划线开头的标识符是有特殊意义的.以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用"from xxx import *"而导入: 以双下划 ...
- P1373 小a和uim之大逃离(DP)
(点击此处查看原题) 题意 中文题,题意看题面吧. 解题思路 注意到我们只能向右和下移动,由此想到开二维的dp数组dp[i][j],代表当前所在位置 我们需要让两人取数的差值为0,由于起点和走法的不同 ...
- Forest Program(dfs方法---树上的环)
题意:http://acm.hdu.edu.cn/showproblem.php?pid=6736 沙漠中的每一个连通块都是一棵仙人掌:一个连通块是一棵仙人掌当且仅当连通块中不存在重边和自环,并且每一 ...
- python — 进程
目录 1. 进程 1.进程就是一个运行中的程序(是对正在运行程序的一个抽象). 2.程序和进程之间的区别: 程序只是一个文件 进程是这个文件被CPU运行起来了 程序是永久的,进程是暂时的. 3.进程- ...
- 网易Java程序员两轮面试,这些问题你能答对几个?
一转眼,2018 年已经过去了,你是否在满意的公司?拿着理想的薪水? 虽然"钱多.事少.离家近"的工作可能离技术人比较远,但是找到一份合适的工作,其实并不像想象中那么难.但是,有些 ...
- T100——接口代码记录,jsonArray和json
{<section id="cs_t1client.description" >} #應用 a00 樣板自動產生(Version:) #+ Version..: T10 ...