docker搭建基于percona-xtradb-cluster方案的mysql集群
一、部署环境
| 序号 | 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集群的更多相关文章
- 移动基于Percona XTRADB Cluster的大数据解决方式
移动基于Percona XTRADB Cluster的大数据解决方式 一.移动的去IOE之旅 近期由于"棱镜门"事件的曝光.引起了国家对信息安全问题的注 ...
- Mycat搭建负载均衡,读写分离的Mysql集群
Mycat搭建负载均衡,读写分离的Mysql集群 准备环境 1.mysql-5.7.24-linux-glibc2.12-x86_64.tar.gz 2.Mycat-server-1.6.7.4-te ...
- 项目进阶 之 集群环境搭建(三)多管理节点MySQL集群
上次的博文项目进阶 之 集群环境搭建(二)MySQL集群中,我们搭建了一个基础的MySQL集群,这篇博客咱们继续讲解MySQL集群的相关内容,同时针对上一篇遗留的问题提出一个解决方案. 1.单管理节点 ...
- Haproxy Mysql cluster 高可用Mysql集群
-----client-----------haproxy---------mysql1----------mysql2------192.168.1.250 192.168.1.1 192.168. ...
- Installing Percona XtraDB Cluster on CentOS
PXC简介 Percona XtraDB Cluster(简称PXC集群)提供了MySQL高可用的一种实现方法. 1.集群是有节点组成的,推荐配置至少3个节点,但是也可以运行在2个节点上. 2.每个节 ...
- mysql高可用之PXC(Percona XtraDB Cluster)
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1).同步复制,事务要么在所有节点提交或不提交 ...
- Percona XtraDB Cluster
简介 Percona XtraDB Cluster是MySQL高可用性和可扩展性的解决方案,Percona XtraDB Cluster提供的特性如下: 1.同步复制,事务要么在所有节点提交或不提交. ...
- PXC(Percona XtraDB Cluster)集群的安装与配置
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
- Percona XtraDB Cluster(转)
Percona XtraDB Cluster是针对MySQL用户的高可用性和扩展性解决方案,基于Percona Server .其包括了Write Set REPlication补丁,使用Galera ...
随机推荐
- 关于controller和apicontroller的跨域实现过滤器的不同
1.controller的跨域访问 filter的实现请继承System.Web.Mvc.ActionFilterAttribute 2.apicontroller的跨域访问 filter的实现请继承 ...
- Dozer 实现对象间属性复制
使用场景:两个领域之间对象转换. 比如:在系统分层解耦过程中, 对外facade接口,一般使用VO对象,而内core业务逻辑层或者数据层通常使用Entity实体. VO对象 package com.m ...
- rest-framework框架——认证、权限、频率组件
一.rest-framework登录验证 1.models.py添加User和Token模型 class User(models.Model): name = models.CharField(max ...
- 10th week task -2 Object 的起源
Objective-C与C++.Java等面向对象语言类似,不过很多方面有所差别.若是用过另一种面向对象语言,那么就能理解Objective-C所用的许多范式与模版了.然而语法上也许会显得陌生,因为该 ...
- matlab练习程序(全景图到穹顶图)
这个程序我最初是用FreeImage写的,这两天改成了matlab,再不贴上来,我就要忘了. 看到一篇文章有这样的变换,挺有意思的,就拿来试了一下,文章点此. 全景图到穹顶图变换,通俗的说就是将全景图 ...
- day009-IO流
什么叫流?就是数据的流动.以内存为基准,分为输入input和输出output.输入也叫做读取数据,输出也叫写出数据. 分类 按数据的流向分: 输入流.输出流 按数据类型分: 字节流.字符流 1. ...
- Struts的学习-配置
1.进入官网http://struts.apache.org/download.cgi#struts2513,这里为下载地址,(ps:struts-2.5.13-all版本). 2.将..\strut ...
- Oracle 11.1.0.6 导入导出bug
实验环境: 11.1.0.6.0 对ANONYMOUSUSER_ALL表中分区进行备份 SQL> select TABLE_NAME,PARTITION_NAME,HIGH_VALUE,PA ...
- OA环境搭建及卸载操作帮助文档
目 录 项目介绍 JDK的安装与验证 1.安装JDK 2.添加环境变量 3.验证JDK MySql的安装与验 1.安装MySql 2.登录Mysql帐号 3.导入数据库 Tomcat的安装与验证 ...
- python解析HTML之:PyQuery库的介绍与使用
本篇大部分转载于https://www.jianshu.com/p/c07f7cd1b548 先放自已自己解析techweb一个网站图片的代码 from pyquery import PyQuery ...