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 ...
随机推荐
- 首页的css
html,body{ margin:; padding:; background-color: lavenderblush; } a{ color:darkgray; } li{ list-style ...
- Ubuntu16.04安装Hadoop2.6+Spark1.6+开发实例
Ubuntu16.04安装Hadoop2.6+Spark1.6,并安装python开发工具Jupyter notebook,通过pyspark测试一个实例,調通整个Spark+hadoop伪分布式开发 ...
- Android自定义之流式布局
流式布局,好处就是父类布局可以自动的判断子孩子是不是需要换行,什么时候需要换行,可以做到网页版的标签的效果.今天就是简单的做了自定义的流式布局. 具体效果: 原理: 其实很简单,Measure La ...
- qt 创建线程
http://www.cnblogs.com/xinxue/p/6840315.html Qt 之 QtConcurrent 本文以 Qt 中的 QtConcurrent::run() 函数为例,介绍 ...
- day014-反射、注解
1. Junit 1.1什么是Junit Junit是Java语言编写的第三方单元测试框架(工具). 1.2单元测试 在Java中,一个类就是一个单元. 单元测试:开发中编写的一小段代码,用来检测类中 ...
- JSP实现用户登录样例
业务描述 用户在login.jsp页面输入用户名密码登录: 如果用户名为xingoo,密码为123,则跳转到成功界面login_success.jsp,并显示用户登录的名字: 如果用户名密码错误,则跳 ...
- Windows 系统 Unicode 文件名操作(新建、重命名、枚举、复制)全攻略
常见的那些文件操作函数都不支持,于是为了达到目的,需要各种方法配合,应该是不如其他语言方便.我只是想看看Perl到底是否适合做这件事,于是折腾了一回. 文件的建立: 模块:Win32 Code: [全 ...
- C/C++ 修改控制台程序文字颜色
可以修改前景色(字体颜色)和背景色. 示例代码如下: #include <iostream> #include <Windows.h> //需要引用Windows.h usin ...
- python 带BOM头utf-8的响应解码
接口响应编码格式为带BOM头utf-8.直接获取响应的text出现乱码. '''dinghanhua2018-11requests text与content,指定响应的encoding''' api ...
- 纠结的一天 —— 由base64编解码与加号、空格引起
2014年3月14日,星期五, 23点22分 忙碌.焦头烂额.充实而又幸福的一天! 写在篇头的话: 许多时候,别人分享的经验(成功或失败),个中滋味,听者很难真正体会,直到自己遇到的那一瞬间,才会泪如 ...