Docker搭建MySQL主从集群,基于GTID
写在前边
搭建MySQL读写分离主从集群,这里未使用binlog
方式,使用的是GTID
方式
源码见我的Github https://github.com/hellxz/mysql-cluster-docker.git
主从目录结构
.
├── bin
│ ├── add-slave-account-to-master.sh
│ ├── reset-slave.sh
│ ├── slave-replias-master-start.sh
│ └── stop-replicas.sh
├── config
│ ├── master.cnf
│ └── slave.cnf
├── docker-compose.yml
├── .env
├── master-data
├── show-slave-status.sh
└── slave-data
目录/文件说明:
bin/add-slave-account-to-master.sh
:Master节点添加备份账户的脚本config/master.cnf
: MySQL Master节点的配置文件config/slave.cnf
: MySQL Slave节点的配置文件docker-compose.yml
: 构建主从节点与挂载数据目录的docker-compose配置文件master-data
: 主节点数据位置,当然生产环境要挂到别的位置slave-data
:从节点数据位置,当然生产环境要挂到别的位置bin/slave-replias-master-start.sh
:从节点添加主节点备份账号信息并开启备份的脚本bin/stop-replicas.sh
:关闭从节点备份的脚本bin/reset-slave.sh
: 重置从节点备份状态,修复由于主从集群重启后无法建立集群的问题.env
: 环境变量文件bin/show-slave-status.sh
: 查看主从连接状态的脚本
搭建过程:
1.修改.env
文件
# default environment arguments for docker-compose.yml
# set master data dir
MASTER_DATA=./master-data
# set slave data dir
SLAVE_DATA=./slave-data
# set master & slave root password
MASTER_PASSWD=P@ssw0rd
# set slave root passwor
SLAVE_PASSWD=P@ssw0rd
# set replicas mysql account name
REPL_NAME=replicas
# set replicas mysql password
REPL_PASSWD=replicasPasswd
MASTER_DATA
是Master节点的数据目录,需要修改到宿主机对应的位置,SLAVE_DATA亦然。
MASTER_PASSWD
是主节点的root密码,bin目录下的脚本会读取这个变量的值从而进行访问数据库
SLAVE_PASSWD
是从节点的root密码,脚本也会读
REPL_NAME
是主节点要创建的账户名,从节点通过这个账户进行访问
REPL_PASSWD
是主节点要创建的REPL_NAME
对应的密码
2.启动两个节点,执行docker-compose up -d
检查已经启动
3.进入bin目录,执行脚本
cd bin
./add-slave-account-to-master.sh #读取mysql密码,为主节点添加备份账户
./slave-replias-master-start.sh #从节点使用备份账户连接主节点,开启备份
4.查看集群状态,在bin目录下执行./show-slave-status.sh
到此搭建完成。
故障修复
1.重启MySQL集群后从节点无法正常恢复解决。
执行bin目录下的reset-slave.sh
, 之后 连接数据库尝试,问题已经解决。
本文系原创文章,拒绝转载
Docker搭建MySQL主从集群,基于GTID的更多相关文章
- docker搭建redis主从集群和sentinel哨兵集群,springboot客户端连接
花了两天搭建redis主从集群和sentinel哨兵集群,讲一下springboot客户端连接测试情况 redis主从集群 从网上查看说是有两种方式:一种是指定配置文件,一种是不指定配置文件 引用地址 ...
- 搭建mysql主从集群的步骤
前提条件是:须要在linux上安装4个mysql数据库,都须要配置完对应的信息. 须要搭建: mysql 01: 主数据库 master mysql 02 : ...
- 基于keepalived搭建MySQL热机集群
背景 MySQL的高可用方案一般有如下几种: keepalived+双主,MHA,MMM,Heartbeat+DRBD,PXC,Galera Cluster 比较常用的是keepalived+双主,M ...
- 使用docker搭建hadoop分布式集群
使用docker搭建部署hadoop分布式集群 在网上找了非常长时间都没有找到使用docker搭建hadoop分布式集群的文档,没办法,仅仅能自己写一个了. 一:环境准备: 1:首先要有一个Cento ...
- 抄来的,占个位儿【百度架构师是怎样搭建MySQL分布式集群】
1.准备集群搭建环境 使用6台虚拟机来搭建MySQL分布式集群,相应的实验环境与对应的MySQL节点之间的对应关系如下图所示: 管理节点(MGM):这类节点的作用是管理MySQLCluster ...
- 一、全新安装搭建redis主从集群
前言· 这里分为三篇文章来写我是如何重新搭建redis主从集群和哨兵集群的及原本服务器上有单redis如何通过升级脚本来实现redis集群.(redis结构:主-从(备)-从(备)) 至于为什么要搭建 ...
- 基于Dokcer搭建Redis集群搭建(主从集群)
最近陆陆续续有不少园友加我好友咨询 redis 集群搭建的问题,我觉得之前写的这篇 <基于Docker的Redis集群搭建> 文章一定是有问题了,所以我花了几分钟浏览之前的文章总结了下面几 ...
- 基于Docker的Mysql Cluster集群
参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker ...
- Docker 搭建 Redis Cluster 集群环境
使用 Docker 搭建 Redis Cluster,最重要的环节就是容器通信的问题,这一块我们在之前的文章中已经给大家解决了<Docker 网络模式详解及容器间网络通信>,本篇文章主要练 ...
随机推荐
- Linux性能测试 netstat命令
功能说明:Netstat用于显示与IP.TCP.UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况.语 法:netstat [-acCeFghilMnNoprstuvVwx][- ...
- 黑科技 —— OTG 线
OTG:On-The-Go的缩写: OTG 可将鼠标.键盘等一切终端(terminal)连接起来: OTG 技术就是实现在没有 Host 的情况下,实现从设备间的数据传送.(支持传送,显然也支持要求更 ...
- [科普]MinGW vs MinGW-W64及其它(比较有意思,来自mingw吧)
部分参照备忘录原文: bitbucket.org/FrankHB/yslib/src/50c3e6344a5a24b2382ce3398065f2197c2bd57e/doc/Workflow.Ann ...
- Nucleus PLUS系统架构和组件
(一个)方法论和软件组件 1.软件组件(Software Component)定义 从一般意义上来说.组件(Component)是系统中能够明白辨识的组成部分,一个不透明的功能实现体.软件开发中,组件 ...
- IIS运行WCF服务报错
试图加载格式不正确的程序 image 解决方法 image HTTP 错误 500.19 image 解决方法在控制面板————>程序————>启用或关闭windows功能—— ...
- 将WriteableBitmap转为byte[]
原文:将WriteableBitmap转为byte[] Win8 metro中的操作与之前的版本有所不同,因此作为一个新手,我将自己的一些问题解答记录了下来,希望与大家分享!! 下面是将Writeab ...
- C#命名约定
推荐的标识命名风格 风格名称 描述 使用建议 示例 Pascal大小写 标识符中每个单词都首字母大写 用于类型名和成员名 CarDeck, DealersHand Camel大小写 除第一个单词以外, ...
- 中芯国际在CSTIC上悉数追赶国际先进水平的布局
作为中国最大.工艺最先进的晶圆厂,中芯国际的一举一动都会受到大家的关注.在由SEMI主办的2017’中国国际半导体技术大会(CSTIC 2017)上,中芯国际CEO邱慈云博士给我们带来了最新的介绍. ...
- <%@ Application Codebehind="Global.asax.cs" Inherits="XXX.MvcApplication" Language="C#" %>
<%@ Application Codebehind="Global.asax.cs" Inherits="XXX.MvcApplication" Lan ...
- windows下Qt5.2 for android开发环境搭建
windows下Qt5.2 forAndroid开发环境配置 1.下载安装Qt 5.2.0 for Android (Windows 32-bit) http://qt-project.org/d ...