基于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 命令如下:

  1. docker run -d -p 3306:3306
  2. -v v1:/var/lib/mysql
  3. -e MYSQL_ROOT_PASSWORD=abc123456
  4. -e CLUSTER_NAME=PXC
  5. -e XTRABACKUP_PASSWORD=abc123456
  6. privileged name=node1 net=net1 ip 172.18.0.2 pxc
  7. ###### 命令解释:
  8. -d 代表后台运行
  9. -v 表示 v1卷映射到dockermysql中,mysql路径为 /var/lib/mysql
  10. MYSQL_ROOT_PASSWORD=abc123456 表示mysql 的密码,用户名默认为root
  11. CLUSTER_NAME=PXC 表示集群的名字
  12. XTRABACKUP_PASSWORD=abc123456 集群之间同步的密码
  13. privileged 为权限
  14. name :给创建出来的容器起一个名字
  15. net 容器分到的内部网段
  16. ip : 容器分到的 ip地址
  17. pxc 为镜像名

假设我们要创建3个数据库的集群

  1. docker volume create --name v1
  2. docker volume create --name v2
  3. docker volume create --name v3
  4. /**
  5. - 集群中数据库端口映射不一样、docker卷不一样、
  6. - 集群中各个容器名不一样、ip地址不一样
  7. - 注意修改这四个地方和 创建其他容器时添加:-e CLUSTER_JOIN=node1。
  8. */
  9. 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 #主节点执行
  10. // 多了一个加入集群的命令
  11. 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上执行
  12. 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集群的更多相关文章

  1. docker安装pxc集群

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

  2. 基于Docker部署ETCD集群

    基于Docker部署ETCD集群 关于ETCD要不要使用TLS? 首先TLS的目的是为了鉴权为了防止别人任意的连接上你的etcd集群.其实意思就是说如果你要放到公网上的ETCD集群,并开放端口,我建议 ...

  3. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  4. docker安装hadoop集群

    docker安装hadoop集群?图啥呢?不图啥,就是图好玩.本篇博客主要是来教大家如何搭建一个docker的hadoop集群.不要问 为什么我要做这么无聊的事情,答案你也许知道,因为没有女票.... ...

  5. Docker搭建PXC集群

    如何创建MySQL的PXC集群 下载PXC集群镜像文件 下载 docker pull percona/percona-xtradb-cluster 重命名 [root@hongshaorou ~]# ...

  6. 基于Docker的redis集群搭建

    Redis集群官方介绍:http://www.redis.cn/topics/cluster-tutorial.html 基于Docker搭建Redis集群 环境:6个节点,三主三从 制作Redis镜 ...

  7. Docker安装Consul集群

    Docker 安装Consul集群 使用windows 环境,Docker desktop community 构建consul集群. 1.docker 容器网络 docker安装后,默认会创建三种网 ...

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

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

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

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

随机推荐

  1. KDE-解决.docx .xlsx .pptx文档默认由Ark打开的问题

    安装KDE后,默认的压缩解压程序变成了Ark,并且原来默认用WPS Office打开的.docx .xlsx .pptx文档,从文件管理器双击打开时,也变成了用Ark打开. 查了下网上的资料,可通过如 ...

  2. 在java中异常中的题目---重要的一点

    public classTest { public static void main(String[] args) { System.out.println(newTest().test()); } ...

  3. e4a 记录

    自动点击 浏览框.跳转("javascript:document.getElementById('按钮的ID').clcik();")

  4. postman 请求接口 Could not get any response

    前提: 今天用postman请求接口的时候,能请求到接口,但是打断点后发现方法里面要抛出异常就出现错误: 错误原因: 返回的 http 的 code不是3位的,如下我写成了四位 4002: <? ...

  5. java小技巧:如何分批次导入大量数据

    //List 需要导入的数据int count = 1000;//每批次导入的数目int Lastindex = count;List<List<T>> shareList = ...

  6. [bzoj3887][Usaco2015 Jan]Grass Cownoisseur_trajan_拓扑排序_拓扑序dp

    [Usaco2015 Jan]Grass Cownoisseur 题目大意:给一个有向图,然后选一条路径起点终点都为1的路径出来,有一次机会可以沿某条边逆方向走,问最多有多少个点可以被经过?(一个点在 ...

  7. 记日杂-log4net组件使用

    下面我给大家介绍一下记日杂-log4net组件使用,当程序发布有服务器上,有时出现了错误, 都不知道出现在那,所以log4net组件很好解决这个问题. 1.添加开发包,并对log4net.dll的引用 ...

  8. 基于 CentOS 7 搭建 Git服务器

    Git 是一款免费.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. ⒈安装依赖库和编译工具 1.安装依赖库 yum install -y curl-devel expat-devel ...

  9. 01背包方案数(变种题)Stone game--The Preliminary Contest for ICPC Asia Shanghai 2019

    题意:https://nanti.jisuanke.com/t/41420 给你n个石子的重量,要求满足(Sum<=2*sum<=Sum+min)的方案数,min是你手里的最小值. 思路: ...

  10. DEDE升级5.7版本后生成页面空白_解…

    今天将DEDECMS V5.6升级到DEDECMS V5.7并升级5.7 SP1后,发现生成首页.栏目.内容页均为空白,没有任何反应,今天发布一个解决方法. 发现每个模板中调用过 Html2Text ...