使用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.7
docker run -p 3308:3306 --name mysql-slaver1 -e MYSQL_ROOT_PASSWORD=123 -d mysql:5.7
docker 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(id int(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就可以啦。

 

转载于:https://www.cnblogs.com/wwzyy/p/11060400.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/462273.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

猛然回首 在这里4年了

猛然回首 在这里4年了 今天浏览博客园的时候 才发现 自己还有一个博客园的账号, GOD! 4年了,猛然回首 自己又老了,这些年 不知道自己 搞了些什么东西,这日子过的真是 哎!posted on 2012-01-11 17:25 RIBBIT…

.js——alert()语句

在.js文件中,通过alert()语句可以生成弹出框,弹出框中的内容message部分可以是常量字符串,也可以是含有变量的字符串连接,下面举几个例子简要说明下: 1. 参数为常量字符串 alert("warnningArray[1]:124"); 运…

Linux 编译安装Boost

http://blog.csdn.net/zgl_dm/article/details/8363843 linux平台下要编译安装除gcc和gcc-c之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装:#yum install gcc gcc-c bzip2 bzip2-deve…

如何利用System.Net.Mail类发送EMAIL

废话不多说,直接上代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net.Mail;namespace MailSender {class Program{static string strHost string.Empty;static string strAccount string.Empty;stat…

特殊的质数肋骨

特殊的质数肋骨 时间限制: 0 Sec 内存限制: 128 MB题目描述 农民约翰的母牛总是生产出最好的肋骨。你能通过农民约翰和美国农业部标记在每根肋骨上的数字认出它们。 农民约翰确定他卖给买方的是真正的质数肋骨,是因为从右边开始切下肋骨,每次还剩下的肋骨上的数字都组成一个质…

安装perl5.10.0

目的:本人使用的Linux系统CentOS5.8中最新的perl版本是5.8.8。学习perl语言入门,一般情况下够用,但是在使用given-when这种结构的时候,就必须指定5.10版本(use 5.0.10.0;)步骤:1. wget http://www.cpan.org/src/perl-5…

Linux下编译Jsoncpp

载软件包:jsoncpp-src-0.5.0.tar.gz scons-2.1.0.tar.gz # tar zxvf scons-2.1.0.tar.gz # tar zxvf jsoncpp-src-0.5.0.tar.gz 设定环境变量【关键】,绝对路径# export MYSCONS解压的路径 # export SCONS_LIB_DIR$MYSCONS/engine # cd jsoncpp-src-0.5.0 # python $MYSCONS…

逛公园

传送门 解法: 先不考虑0环 很容易想到dp 状态转移方程也很容易想到 设\(d[i]\)为n到i的最短路长度 当然此时是反向图 反向图是为了防止1能到达的点到达不了n而出错\(dp[i][j]\)表示到达i点距离为\(d[i]j\)的路径个数 则 x->y有路径 \(dp[x][k]dp[y][k-(d[y]edge(x,y)-d[x])]…

poj2299 ( bit )

树状数组求逆序数&#xff0c;先排个序&#xff0c;从大到小往插&#xff0c;计算在他的前面有几个比他大&#xff0c;就是他的逆序数。 &#xff08;PS&#xff1a;最近对数量越来越不敏感了&#xff0c;老在这上面错。多做题&#xff0c;不能断啊&#xff09; 1 #include <…

Linux下编译安装openssl

(1) 下载openssl压缩包。在 http://www.openssl.org/source/ 选择合适版本的压缩包&#xff0c;一般选择标记有“[LATEST]”的包&#xff0c;假设其link为 http://www.openssl.org/source/openssl-1.0.1c.tar.gz&#xff0c;用下面的下载&#xff1a; # wget http://www.openss…

前端小插件之手写js循环滚动特效

很多前端都离不开滚动的特效&#xff0c;调用插件繁琐&#xff0c;后期更改麻烦&#xff0c;考虑到这些因素&#xff0c;自己写了一套无限循环滚动的小特效。 首先滚动特效很好写&#xff0c;用css就可以完成&#xff0c;下面写一个基础css向上循环滚动特效 html <div class…

敏捷开发一千零一问系列之七:怎样对待有看法的徒弟?

这是敏捷开发一千零一问系列的第七篇。&#xff08;之一&#xff0c;之二&#xff0c;之三&#xff0c;问题总目录&#xff09;问题松结对编程中&#xff0c;师傅对徒弟安排任务时&#xff0c;对于有想法的徒弟提出的意见怎样解决&#xff1f;方案步骤0&#xff1a;正心&#x…

SSH远程登录失败,提示“Password authentication failed”

使用SecureCRT登陆&#xff0c;提示“Password authentication failed” 使用linux下ssh登陆&#xff0c;提示“Permission denied, please try again.” 网上收集的相关资料&#xff1a; 方法一&#xff1a; 1. vi服务器端的/etc/ssh/sshd_config 2. 把PasswordAuthentication…

触摸传感器

void setup() {pinMode(A5,INPUT); //设置引脚 A5 为输出模式 Serial.begin(9600); //设置波特率为9600 } void loop() { // put your main code here, to run repeatedly: Serial.println(analogRead(A5)); //串口输出 A5读取到的值 delay(200); //延时200毫秒 } 转…

ORACLE查询表最近更改的数据

&#xff0c;今天开发人员问我如何快速并方便的查出一张表最近被更改的记录&#xff0c;这个需求很简单&#xff0c;由于是查最近被更改的数据&#xff0c;查回滚段就可以&#xff0c;下面是我做的小实验。 SQL> create table test(id number,name varchar2(10),gender varc…

学滑冰

为什么80%的码农都做不了架构师&#xff1f;>>> http://www.cnr.cn/wcm/zhuanti/harb/bxyd/t20041230_163420.html 学滑冰&#xff08;一&#xff09; 到冰场上穿冰刀奔驰豪情一番&#xff0c;真是今人激情万千&#xff0c;你会滑冰吗&#xff1f;如果你还不会滑冰…

锡安赞歌 mp3下载

《锡安赞歌》mp3下载地址:http://pan.baidu.com/s/1i3nJLml

Java-Redis 热部署问题

项目请求时报错&#xff1a;java.lang.ClassCastException: cn.xingaohbd.seckil.model.User cannot be cast to cn.xingaohbd.seckil.model.User at cn.xingaohbd.seckil.service.impl.UserServiceImpl.getUser(UserServiceImpl.java:33) ~[classes/:na] at cn.xingaohbd.seck…

dp之二维背包poj1837(天平问题 推荐)

题意&#xff1a;给你c&#xff08;2<c<20&#xff09;个挂钩&#xff0c;g&#xff08;2<g<20&#xff09;个砝码&#xff0c;求在将所有砝码&#xff08;砝码重1~~25&#xff09;挂到天平(天平长 -15~~15)上&#xff0c;并使得天平平衡的方法数....... 思路&…

Gridview SummaryItem 格式化数字

DisplayFomrat{0:#.##}转载于:https://www.cnblogs.com/gaoshoubuduo/archive/2012/02/01/2334533.html