一、部署环境

序号 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. sort属性

    学习文章---链接 总结笔记 ①sort是Array.prototype的属性, ②如果不写入参数,则按照转换为的字符串的每个字符的unicode位点进行排序, ③如果传入一个比较函数sort(fun ...

  2. CSS垂直居中的四种方法

    写在前面的话 最近在Stack Overflow上看到 一个不错的回答 ,以下是我对其的总结,分享给大家. 垂直居中的四种方法 ①基础的方法 设置父元素的line-height等于height,这种方 ...

  3. for计算位置坐标

    代码1效果图: 代码2效果图: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"&g ...

  4. 类数组转数组Array.prototype.slice.call(arrayLike)

    转换方式:Array.prototype.slice.call(arrayLike) 附:(http://www.jianshu.com/p/f8466e83cef0) 首先Array.prototy ...

  5. Xshell连接不上虚拟机的问题和解决办法

    第一次用xshell,一直连不上linux,搞了好久,也查了很多办法,但是最后也终于解决了,在这里我分享一下自己的解决办法,再列举网上的办法,希望可以帮助其他人. 1,你的linux ip地址没有配置 ...

  6. GUID 格式化

    1.Guid.NewGuid().ToString("N") 结果为: 38bddf48f43c48588e0d78761eaa1ce6 2.Guid.NewGuid().ToSt ...

  7. ORACLE中一个字符占多少字节?

    问题描述 或许你会说一个中文字符占2个字节,这是一定的?如何计算一个字符串的字节数? 解决方案 在oracle中一个字符特别是中文占几个字节是不同的. 比如我创立一个表create table tes ...

  8. 在 Windows Vista、Windows 7 和 Windows Server 2008 上设置 SharePoint 2010 开发环境

    适用范围: SharePoint Foundation 2010 | SharePoint Server 2010 本文内容 步骤 1:选择和预配置操作系统 步骤 2:安装 SharePoint 20 ...

  9. Azure进阶攻略丨共享访问签名是个什么东东?

    Azure 进阶攻略]一经推出便受到了广大粉丝的热情追捧,大家纷纷表示涨了姿势,并希望能了解更多的攻略~根据大家的投票结果,本期,小编将为大家讲解“如何生成 Shared Access Signatu ...

  10. Django问卷调查项目思路流程

    Django问卷调查项目思路流程: 1 后端思路 : 需求分析 ---- 找出各实体对应关系 ---- 设计model架构 ---- 统一资源封装 --- 提供资源API入口 ---- 设计项目实体功 ...