一、部署环境

序号 hostname ip 备注
1 manager107 10.0.3.107 centos7;3.10.0-957.1.3.el7.x86_64
2 worker68 10.0.3.68 centos7;3.10.0-957.1.3.el7.x86_64
3 worker80 10.0.3.80 centos7;3.10.0-957.1.3.el7.x86_64

docker 版本

docker version
Client:
 Version:           18.09.0
 API version:       1.39
 Go version:        go1.10.4
 Git commit:        4d60db4
 Built:             Wed Nov  7 00:48:22 2018
 OS/Arch:           linux/amd64
 Experimental:      false Server: Docker Engine - Community
 Engine:
  Version:          18.09.0
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.10.4
  Git commit:       4d60db4
  Built:            Wed Nov  7 00:19:08 2018
  OS/Arch:          linux/amd64
  Experimental:     false

二、安装docker(略)

三、创建swarm集群

选择一台服务器作为manager,比如:manager107,在manager107上执行:

docker swarm init

将加入口令,比如:

docker swarm join --token SWMTKN--06on43srtyq7pzogivo8hvja2lvew7zey9wpdf9cy1h8ju18nc-4l3ic9ur29h8yb30ntl0f2v6x 10.0.3.107:

分别拷到worker68和worker80上执行,即可创建swarm集群。

查看集群节点,在manager107上执行:

docker node ls

结果类似:

ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
2uuuareav7n9phpfhmpnfscml * manager107 Ready Active Leader 18.09.
w0val5pdhhnhgwzuvbtb2qys9 worker68 Ready Active 18.09.
h4bcpsgw2q9r46qbgbd8erbx7 worker80 Ready Active 18.09.

四、创建一个overlay网络用于mysql集群之间通信

docker network create -d overlay --attachable pxc-net

查看network:

docker network ls
NETWORK ID NAME DRIVER SCOPE
846a843726ca bridge bridge local
35ca60480ba7 docker_gwbridge bridge local
fd148d0596c6 host host local
8f8ohxutlvam ingress overlay swarm
bd8bdb46dd54 none null local
qlvzoa8gmi3k pxc-net overlay swarm

五、拉取percona-xtradb-cluster镜像,并改名

docker pull docker.io/percona/percona-xtradb-cluster

修改tag

docker tag percona/percona-xtradb-cluster pxc

六、分别在三台服务器上创建数据卷和备份卷

在manager107上执行:

[root@manager107 ~]# docker volume create v1
[root@manager107 ~]# docker volume create backup

在worker68上执行:

[root@worker68 ~]# docker volume create v2
[root@worker68 ~]# docker volume create backup

在worker80上执行:

[root@worker80 ~]# docker volume create v3
[root@worker80 ~]# docker volume create backup

七、创建基于percona-xtradb-cluster集群的mysql容器

在manager107上执行:

[root@manager107 ~]# docker run -d -p : -e MYSQL_ROOT_PASSWORD= -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD= -v v1:/var/lib/mysql -v backup:/data --privileged --name=node1 --net=pxc-net pxc

在worker68上执行:

[root@worker68 ~]# docker run -d -p : -e MYSQL_ROOT_PASSWORD= -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD= -e CLUSTER_JOIN=node1 -v v2:/var/lib/mysql -v backup:/data --privileged --name=node2 --net=pxc-net pxc

在worker80上执行:

[root@worker80 ~]# docker run -d -p : -e MYSQL_ROOT_PASSWORD= -e CLUSTER_NAME=PXC -e XTRABACKUP_PASSWORD= -e CLUSTER_JOIN=node1 -v v3:/var/lib/mysql -v backup:/data --privileged --name=node3 --net=pxc-net pxc

说明:

  • CLUSTER_NAME:集群名称
  • XTRABACKUP_PASSWORD:同步密码
  • CLUSTER_JOIN:加入的集群节点

好了,现在可以随便连接一台服务器的3310接口,访问mysql,对该数据库的任何操作都可以实时同步到另外两台。

八、可能出现的问题

容器node1在manager107上正常运行,容器node2或者node3无法启动

进入manager107上的node1容器中的mysql

docker exec -it node1 bash

查看mysql日志

more /var/lib/mysql/innobackup.backup.log

可能出现错误(用户没有RELOAD和PROCESS权限)

Error: failed to execute query LOCK TABLES FOR BACKUP: Access denied; you need (at least one of) the RELOAD privilege(s) for this operation
Error: failed to execute query SHOW ENGINE INNODB STATUS: Access denied; you need (at least one of) the PROCESS privilege(s) for this operation

然后进入mysql

mysql -uroot -p

查看是否有“xtrabackup”和“sstuser”两个用户

use mysql;
select * from user;

没有的话,先创建这两个用户,有的话直接授权

创建用户:

create user 'xtrabackup'@'localhost' identified by '';
create user 'sstuser'@'localhost' identified by '';

或者查看权限(以“xtrabackup”为例):

select user,host,Reload_priv,Process_priv from user where user='xtrabackup';

授权:

grant reload, process,create tablespace,lock tables ,replication client,super on *.* to 'xtrabackup'@localhost;

刷新权限:

flush privileges;

docker搭建基于percona-xtradb-cluster方案的mysql集群的更多相关文章

  1. 移动基于Percona XTRADB Cluster的大数据解决方式

    移动基于Percona XTRADB Cluster的大数据解决方式          一.移动的去IOE之旅      近期由于"棱镜门"事件的曝光.引起了国家对信息安全问题的注 ...

  2. Mycat搭建负载均衡,读写分离的Mysql集群

    Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...

  3. 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群

    上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...

  4. Haproxy Mysql cluster 高可用Mysql集群

    -----client-----------haproxy---------mysql1----------mysql2------192.168.1.250 192.168.1.1 192.168. ...

  5. Installing Percona XtraDB Cluster on CentOS

    PXC简介 Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法. 1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上. 2.每个节 ...

  6. mysql高可用之PXC(Percona XtraDB Cluster)

    简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...

  7. Percona XtraDB Cluster

    简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1.同步复制,事务要么在所有节点提交或不提交. ...

  8. PXC(Percona XtraDB Cluster)集群的安装与配置

    Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...

  9. Percona XtraDB Cluster(转)

    Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...

随机推荐

  1. html中通过移除空格的方法来解决浏览器上的留白间距该怎么理解?

    今天在切图的时候,碰到一个兼容性的问题,很幸运最后通过张金鑫老师的文章解决了这个问题!但在阅读张老师文章的时候,我有个地方不明白,在网上查了下也没找到我想要的答案,后来自己想了半天好像是这么回事,现在 ...

  2. Eclipse中搭建Android开发环境

    一.搭建Android开发环境 准备工作:下载Eclipse.JDK.Android SDK.ADT插件 下载地址:Eclipse:http://www.eclipse.org/downloads/ ...

  3. Android 马甲包制作流程

    一.马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android { signingConfigs { confi ...

  4. linux下的动态链接库管理

    LD_LIBRARY_PATH Linux环境变量名,该环境变量主要用于指定查找共享库(动态链接库)时除了默认路径之外的其他路径.(该路径在默认路径之前查找) 移植程序时的经常碰到需要使用一些特定的动 ...

  5. maven学习(二)maven常用的命令

    参考博客:(http://blog.csdn.net/keda8997110/article/details/20925449) 以下命令都是基于命令行的操作,也可以直接在eclipse等IDE上ma ...

  6. 新发布 | 微软开源之路最新进展:FreeBSD落地由世纪互联营运的Microsoft Azure

    微软和开源,是近几年业界孜孜不倦的讨论话题,微软也在开源之路越走越宽.最近与 FreeBSD 基金更紧密的合作踏出了微软在开源之路上的又一大步. 自2012年开始,微软在 FreeBSD 与其虚拟化平 ...

  7. 源码安装mysql5.6.37

    MYSQL 源码安装: 修改参数文件:vi /etc/security/limits.confmysql soft nproc 2047mysql hard nproc 16384mysql soft ...

  8. 一个查看UI5控件所有公有方法的小技巧

    一个很小的tip:比如我想把UI5表格控件里的每列设置成宽度根据显示的内容自适应,需要知道应该调用控件的哪个方法来实现. 一种办法当然是查SAP帮助文档,得知需要调用控件的公有方法setAutoSiz ...

  9. Android(java)学习笔记23:finally关键字的作用

    1. finally 关键字的作用 package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDate ...

  10. FFT抄袭笔记

    你看我都不好意思说是学习笔记了,毕竟\(FFT\)我怎么可能学得会 那就写一篇抄袭笔记吧ctrl+c真舒服 先从多项式说起吧 1.多项式 我们定义一个多项式 \[F(x)=\sum_{i=0}^{n- ...