使用docker部署mysql主从复制集群
一、环境搭建
虚拟机环境:centos7 IP:192.168.37.134 用户名:root 密码:
启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309
docker pull mysql:5.7 docker run -p : --name mysql-master -e MYSQL_ROOT_PASSWORD= -d mysql:5.7
docker run -p : --name mysql-slaver1 -e MYSQL_ROOT_PASSWORD= -d mysql:5.7
docker run -p : --name mysql-slaver2 -e MYSQL_ROOT_PASSWORD= -d mysql:5.7
二、配置mysql-master
进入mysql-master容器,修改/etc/mysql/my.cnf,添加
[mysqld]
server-id= ##自定义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= ##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=, master_log_file='mysql-bin.000001', master_log_pos= , master_connect_retry=;
查看连接状态
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=, master_log_file='mysql-bin.000001', master_log_pos= , master_connect_retry=;
start slave;
show dlave status \G;
当看到两个Yes的时候,说明slave配置成功了,并且已经开启了主从复制。
mysql-slaver2配置相同。
四、测试
mysql-master上创建一个数据库,创建表,插入数据
create database test charset utf8;
use test;
create table user(id int(),name varchar())charset utf8;
insert into user(id,name) values(,'tom'),(,'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就可以啦。
使用docker部署mysql主从复制集群的更多相关文章
- Kubernetes 部署Mysql 主从复制集群
Mysql主从参考文章: https://www.jianshu.com/p/509b65e9a4f5 http://blog.51cto.com/ylw6006/2071864 Statefulse ...
- 手把手教你用Docker部署一个MongoDB集群
MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中最像关系数据库的.支持类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引 ...
- Docker 部署 RocketMQ Dledger 集群模式( 版本v4.7.0)
文章转载自:http://www.mydlq.club/article/97/ 系统环境: 系统版本:CentOS 7.8 RocketMQ 版本:4.7.0 Docker 版本:19.03.13 一 ...
- 基于Docker的Mysql Cluster集群
参考 mysql-cluster镜像 https://medium.com/@ahmedamedy/mysql-clustering-with-docker-611dc28b8db7 使用Docker ...
- docker部署Ceph分布式存储集群
1.环境准备 3台virtualbox虚拟机,用来安装ceph集群,已用docker-machine安装上了docker,每台虚拟机虚拟创建一个5G的硬盘,用于存储osd数据,例如:/dev/sdb ...
- docker 部署 HFish(集群部署)
主节点部署: docker run -d --name hfish-master -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : -p : ...
- docker中mysql pxc集群
PXC集群 https://hub.docker.com/r/percona/percona-xtradb-cluster 安装PXC镜像 下载镜像或者导入本地镜像 docker pull perco ...
- Linux Centos7 环境搭建Docker部署Zookeeper分布式集群服务实战
Zookeeper完全分布式集群服务 准备好3台服务器: [x]A-> centos-helios:192.168.19.1 [x]B-> centos-hestia:192.168.19 ...
- Docker搭建MySQL主从集群,基于GTID
写在前边 搭建MySQL读写分离主从集群,这里未使用binlog方式,使用的是GTID方式 源码见我的Github https://github.com/hellxz/mysql-cluster-do ...
随机推荐
- SIP中的SDP offer/answer交换初探
1.引言 SDP的offer/answer模型本身独立与于利用它的高层协议.SIP是使用offer/answer模型的应用之一.RFC 3264 定义了offer/answer模型,但没有规定使用哪个 ...
- 关于SpringMVC拦截器和异常
一.文件上传 1.文件上传 SpringMVC为文件上传提供了直接的支持,这种类型是通过即插即用的MultipartResolver技术的.Spring用Jakarta Commons FileUpl ...
- 关于SpringMVC映射模型视图的几点小事
一.SpringMVC概述 SpringMVC为展现层提供的基于MVC设计理念的优秀的Web框架,是目前最主流的MVC框架之一. SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器, ...
- ASE19团队项目alpha阶段model组 scrum10 记录
本次会议于11月14日,19时整在微软北京西二号楼sky garden召开,持续5分钟. 与会人员:Jiyan He, Kun Yan, Lei Chai, Linfeng Qi, Xueqing W ...
- Spring Cloud(二)服务提供者 Eureka + 服务消费者(rest + Ribbon)
Ribbon是什么? Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时 ...
- spark streaming消费kafka: Java .lang.IllegalStateException: No current assignment for partition
1 原因是: 多个相同的Spark Streaming同时消费同一个topic,导致的offset问题.关掉多余的任务,就ok了.
- (备忘)Nodepad++常用快捷键
Ctrl-H 打开Find / Replace 对话框 Ctrl-D 复制当前行 Ctrl-L 删除当前行 Ctrl-T 上下行交换 F3 找下一个 Shift-F3 找上一个 Ctrl-Shift- ...
- GetHashCode之于引用类型和值类型及其特性
GetHashCode 方法可由派生类型重写.如果 GetHashCode 未重写,则通过调用基类的 Object.GetHashCode 方法来计算引用类型的哈希代码. 引用类型:Object.Ge ...
- PyTorch 启程&拾遗
1..Tensors are similar to NumPy’s ndarrays, with the addition being that Tensors can also be used on ...
- 2019牛客暑期多校训练营(第一场)E ABBA
题意问你有多少个长度为2*(n+m)的字符串满足A和B数量相等 且可以分割为n个AB子序列和m个BA子序列 很容易得出前n个A肯定是可以给AB的 后面的m个A给BA 所以当一个字符串满足条件时要满足任 ...