自动化部署mysql主从复制集群_使用docker部署mysql主从复制集群
一、环境搭建
虚拟机环境: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主从复制集群相关推荐
- 部署go的web应用_使用Docker部署Go Web应用
为什么需要Docker? 使用docker的主要目标是容器化.也就是为你的应用程序提供一致的环境,而不依赖于它运行的主机. 想象一下你是否也会遇到下面这个场景,你在本地开发了你的应用程序,它很可能有很 ...
- docker安装mysql后怎么链接_使用docker安装mysql并连接
1.查找镜像: docker search mysql 2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版): docker run -p 3306:3306 --name mymysql ...
- hadoop集群_使用docker部署hadoop集群
0. 写在前面 网上也已经有很多教程了,但是其中都有不少坑,在此记录一下自己安装的过程. 目标:使用docker搭建一个一主两从三台机器的hadoop2.7.7版本的集群 准备: 首先要有一台内存8G ...
- mysql分片做主从_使用mycat部署mysql集群(分片,读写分离,主从复制)
在s201,s202,s203上安装MySQL (安装jdk) 配置MySQL 5.7的yum源 sudo tee -a /etc/yum.repos.d/mysql-community.repo & ...
- docker集群_使用Docker,Chef和Amazon OpsWorks进行集群范围的Java / Scala应用程序部署...
docker集群 Docker非常适合在单个节点上运行隔离的容器. 但是,大多数软件系统都在多个节点上运行,因此,除了Docker之外,我们还需要某种方法来指定哪些容器应在哪些节点上运行. 我要解决的 ...
- 二进制安装mysql集群_基于二进制安装Cloudera Manager集群
一.环境准备 参考链接:https://www.cnblogs.com/zhangzhide/p/11108472.html 二.安装jdk(三台主机都要做) 下载jdk安装包并解压:tar xvf ...
- mysql设置success信息_【原创】MySQL Cluster安装部署(Success)
参考:http://www.cnblogs.com/zhoulf/archive/2013/01/30/2883207.html 安装要求 安装环境:centos6.3(X64) 软件名称 :mysq ...
- amoeba实现mysql主从读写分离_利用Amoeba实现MySQL主从复制和读写分离
在实际生产环境中,如果对数据库的读和写都在同一个数据库服务器中操作,无论是在安全性.高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(Master-Slave) ...
- mysql显示表已存在_「Docker系列」 如何在Docker中部署MySQL数据库?
Docker为部署和测试应用程序和数据库提供了许多优势,这些应用程序和数据库是应用程序不可或缺的一部分,因此很值得学习如何在Docker容器中部署和运行数据库. 本文中,我们会重点关注如下重点: 为M ...
最新文章
- (Mybatis)使用注解开发
- 方法引用_通过super引用父类的成员方法
- HDU - 3613 Best Reward(字符串哈希)
- Shit和trash不是评价设计的词汇
- 终于可以和 QQ 彻底说再见了!
- 教你三种Model(AR)中自定义验证规则的方法
- 卸载ie8的一些方法
- VMware Horizon view 7 云桌面终端安全解决方案
- 《福州往事》(抒情散文)
- linux系统线程通信的几种方式,Linux的进程/线程通信方式总结
- 怎么使用SolidPlant3D创建管道?
- C++Builder:定时器Timer控件
- linux常用命令、linux系统、linux属于什么操作系统、linux系统安装、linux怎么读、linux和windows的区别、linux配置ip地址、linux系统一般用来,在线查询工具
- 视频用txt文件播放物联网
- 怎么把线稿提取出来_99%的人不知道!教你怎么提取绘画作品的线稿!
- nacos怎么修改服务分组_【Java】nacos服务注册如何配置分组?
- 计算机ps基础考试题,2017年计算机一级PS考试模拟题及答案
- Niushop 开源电商系统
- Swagger注释@API详细说明
- 重磅 | 产业大咖汇集 见证2017ICT产业多个重要奖项颁布
热门文章
- mfc之ListControl控件的使用
- 自动生成相机标定轨迹
- react build后直接从浏览器打开
- 2018年内蒙古孕产妇、婴儿死亡率实现双下降
- Android6.0指纹识别开发
- LEADTOOLS v19试用版安装指南图文详解
- linux计算圆周率程序,科学网—[转载]关于Linux中使用bc命令计算圆周率(π):可以计算上千位或上万位,顺便评测CPU的计算能力 - 张成岗的博文...
- Avro 序列化操作原理与应用
- 计算机休眠变关机,笔记本电脑一进入睡眠休眠就关机!重启后就显 – 手机爱问...
- 模块说和神经网络学说_让神经网络解释自己:牛津大学博士小姐姐,用毕业论文揭示“炼丹炉”结构...