一、环境搭建

虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:123

启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309

docker pull mysql:5.7docker run-p 3307:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7docker run-p 3308:3306 --name mysql-slaver1 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7docker run-p 3309:3306 --name mysql-slaver2 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7

二、配置mysql-master

进入mysql-master容器,修改/etc/mysql/my.cnf,添加

[mysqld]

server-id=3307##自定义id号,不要重

log-bin=mysql-bin ##开启二进制日志

注意:在使用vim时,可能会出现not found,需要apt-get install vim

修改好my.cnf后,需要重启一下mysql,重启一下mysql-master容器,重新进入容器

service mysql restart

docker start mysql-master

docker exec -it mysql-master /bin/bash

进入容器后,登录mysql,为slaver分配一个账号

CREATE USER 'slave'@'%' IDENTIFIED BY '123abc'; ##用户名是slave,密码是123abc

GRANT REPLICATION SLAVE, REPLICATION CLIENT ON*.* TO 'slave'@'%'; ##指定访问权限

查看当前主机状态,注意:查看完状态后就不要再进行其他的操作了,slaver会引用mster的Position编码,每次操作Position都会变。

到这里,master就配置完成了,等待slaver的连接。

三、配置mysql-slaver

以mysql-slaver1为例

进入容器和配置master一样

修改/etc/mysql/my.cnf文件,添加

[mysqld]

server-id=3308##id号,自定义,不要重就行

log-bin=mysql-slave-bin ##开启二进制日志功能

relay_log=edu-mysql-relay-bin ##配置中继日志

然后是重启mysql,重启容器,重新进入容器,登录mysql进行下一步配置

service mysql restart

docker start mysql-slaver1

docker exec-it mysql-slaver2 /bin/bash

mysql-u root -p

执行命令进行master的连接,需要配置master的ip,用户名,密码,日志文件和当前版本号

change master to master_host='192.168.37.134', master_user='slave', master_password='abc123', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos= 789, master_connect_retry=30;

查看连接状态

show slave status \G;

可以看到当前状态是未开启主从复制,接下来开启,再查看状态

start slave;

show slave status \G;

当看到这个的时候,说明我们的配置出现了问题,原因是密码写错了,出现这种情况一般就是在连接配置的时候出现了问题。现在改回来重新执行如下代码

stop slave; #修改之前需要先stop一下

change master to master_host='192.168.37.134', master_user='slave', master_password='123abc', master_port=3307, master_log_file='mysql-bin.000001', master_log_pos= 789, master_connect_retry=30;

start slave;

show dlave status \G;

当看到两个Yes的时候,说明slave配置成功了,并且已经开启了主从复制。

mysql-slaver2配置相同。

四、测试

mysql-master上创建一个数据库,创建表,插入数据

create database test charset utf8;

use test;

create table user(idint(11),name varchar(255))charset utf8;

insert into user(id,name) values(100,'tom'),(101,'jerry');

在其中一台mysql-slaver1上查看数据

五、说明一下

1. mysql是按/etc/my.cnf

-> /etc/mysql/my.cnf

-> /usr/local/mysql/etc/my.cnf

-> ~/.my.cnf的顺序读取配置文件的。

如果几个配置文件中都有相同的参数,mysql会以读取的最后一个文件配置参数为准。

2. 集群结构

当前的结构是slaver1和slaver2作为master的从机,需要在slaver1和slaver2上配置master的相关信息。

也可以使用串行结构

只不过是slaver2把slaver1认为是master,配置的是slaver1的相关信息

在spring项目中,可以配置两个数据源,一个读,一个写。然后DAO层的类分别注入不同的数据源,产生读的bean和写的bean,service调用的时候注入指定的bean就可以啦。

自动化部署mysql主从复制集群_使用docker部署mysql主从复制集群相关推荐

  1. 部署go的web应用_使用Docker部署Go Web应用

    为什么需要Docker? 使用docker的主要目标是容器化.也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机. 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很 ...

  2. docker安装mysql后怎么链接_使用docker安装mysql并连接

    1.查找镜像: docker search mysql 2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版): docker run -p 3306:3306 --name mymysql ...

  3. hadoop集群_使用docker部署hadoop集群

    0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程. 目标:使用docker搭建一个一主两从三台机器的hadoop2.7.7版本的集群 准备: 首先要有一台内存8G ...

  4. mysql分片做主从_使用mycat部署mysql集群(分片,读写分离,主从复制)

    在s201,s202,s203上安装MySQL (安装jdk) 配置MySQL 5.7的yum源 sudo tee -a /etc/yum.repos.d/mysql-community.repo & ...

  5. docker集群_使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署...

    docker集群 Docker非常适合在单个节点上运行隔离的容器. 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行. 我要解决的 ...

  6. 二进制安装mysql集群_基于二进制安装Cloudera Manager集群

    一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...

  7. mysql设置success信息_【原创】MySQL Cluster安装部署(Success)

    参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html 安装要求 安装环境:centos6.3(X64) 软件名称 :mysq ...

  8. amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离

    在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...

  9. mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?

    Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库. 本文中,我们会重点关注如下重点: 为M ...

最新文章

  1. (Mybatis)使用注解开发
  2. 方法引用_通过super引用父类的成员方法
  3. HDU - 3613 Best Reward(字符串哈希)
  4. Shit和trash不是评价设计的词汇
  5. 终于可以和 QQ 彻底说再见了!
  6. 教你三种Model(AR)中自定义验证规则的方法
  7. 卸载ie8的一些方法
  8. VMware Horizon view 7 云桌面终端安全解决方案
  9. 《福州往事》(抒情散文)
  10. linux系统线程通信的几种方式,Linux的进程/线程通信方式总结
  11. 怎么使用SolidPlant3D创建管道?
  12. C++Builder:定时器Timer控件
  13. linux常用命令、linux系统、linux属于什么操作系统、linux系统安装、linux怎么读、linux和windows的区别、linux配置ip地址、linux系统一般用来,在线查询工具
  14. 视频用txt文件播放物联网
  15. 怎么把线稿提取出来_99%的人不知道!教你怎么提取绘画作品的线稿!
  16. nacos怎么修改服务分组_【Java】nacos服务注册如何配置分组?
  17. 计算机ps基础考试题,2017年计算机一级PS考试模拟题及答案
  18. Niushop 开源电商系统
  19. Swagger注释@API详细说明
  20. 重磅 | 产业大咖汇集 见证2017ICT产业多个重要奖项颁布

热门文章

  1. mfc之ListControl控件的使用
  2. 自动生成相机标定轨迹
  3. react build后直接从浏览器打开
  4. 2018年内蒙古孕产妇、婴儿死亡率实现双下降
  5. Android6.0指纹识别开发
  6. LEADTOOLS v19试用版安装指南图文详解
  7. linux计算圆周率程序,科学网—[转载]关于Linux中使用bc命令计算圆周率(π):可以计算上千位或上万位,顺便评测CPU的计算能力 - 张成岗的博文...
  8. Avro 序列化操作原理与应用
  9. 计算机休眠变关机,笔记本电脑一进入睡眠休眠就关机!重启后就显 – 手机爱问...
  10. 模块说和神经网络学说_让神经网络解释自己:牛津大学博士小姐姐,用毕业论文揭示“炼丹炉”结构...