mysql docker 主从_Docker实现MySQL主从复制(主主复制同理)

因为最近在学习MySQL,看到很多地方有“分库分表”,“读写分离”的字眼,就想尝试一下吧!

首先,因为本人经济能力有限,买不起那么多服务器,所以就借用Docker来搭建虚拟机来作为两台服务器。

一、准备主从服务器

1、创建主服务器

$docker run -it --name=mysql_master ubuntu:14.04 /bin/bash

b3f70362d5f3a2075e5395e2e99bb576.png

2、创建从服务器

$docker run -it --name=mysql_slave ubuntu:14.04 /bin/bash

6394d7210d903ee6b55e2f6a52fa6fc6.png

至此,两台服务器准备完毕,参数如下:

操作系统(OS):Ubuntu 14.04

主服务器IP:172.17.0.2

从服务器IP:172.17.0.3

二、在主从服务器上安装MySQL

因为版本问题,需要先更新一下软件源(如果不更新的话,后面安装MySQL的时候会提示没有安装包)

$ apt-get update

d28a6ebf5462d4e36ce80311d63444cc.png

我这里安装MySQL也只需要一步就可以了

apt-get install mysql-server

d8945e263b79d968c002b27683c2230a.png

中间会出现确认的停止,按“y”即可。

最后会出现让你输入MySQL的root用户的登录密码,后面会用到。

f6500f4f8cfeac8cec8eb382b17f83b6.png

再确认一次密码

f1fe552fb434fc9edf5d657ce5c9e3b7.png

至此,主从服务器MySQL的安装完成

三、搭建MySQL主从复制

这里简单说一下主从复制的原理,就是根据MySQL的日志文件,将主服务器的MySQL操作日志文件发送给从服务器,让从服务器执行日志文件,达到主从复制的目的。

1、配置主服务器(以下在主服务器中操作)

在主服务器中找到MySQL的配置文件(my.cnf),修改该配置文件。(最近也在学习Linux基础,小秀一把)

$ find -name mf.cnf

9a29bac257b8675debb0f85ba7f8d086.png

表示配置文件在这个目录

然后修改该文件

$ vi /etc/mysql/my.cnf

b3630ca9039169aa5094b5113a43a193.png

然后就进到这个界面

1631133dfa59ce536457c9e4e35879f2.png

然后找到这么几行,这个就是我们要配置的地方了

aad8f5b13d3cf03da49e044599d9930f.png

把server-id和log_bin前面的“#”的注释符去掉即可。

server-id:用于识别服务器MySQL,以后只要是有关于做MySQL集群的,server-id在集群中一定是要唯一的。

log_bin:用于存放二进制日志文件的,其他MySQL就是根据这个文件进行复制的。

其他可以先不用管。

保存退出即可。之后需要重启MySQL服务(service mysql restart)

然后在MySQL进行授权,至于为什么要授权呢?其他服务器的MySQL要获取日志文件总要一些权限吧

登录MySQL

2eca2d42bfc4e462070193468a9d5706.png

这个就比较尴尬,是MySQL服务没开起来的原因

eabc8daa051d406107687e3c459cdbc5.png

出现红色一行即为开启成功,然后再登录MySQL就可以了。

然后就是授权了,因为是主从复制,所以授权命令有点特殊,正常的话可以看下我之前写的一篇。

e6f4c51f1cb7ef21ffd81e2e958c025f.png

其中以后会用到的是,用户名和密码,即“usr”和“123”,其中“flush privileges”是更新权限的命令。

然后就是查看主服务器相关日志文件的信息。

dfcf68e94400f680d626c521eb498f42.png

这里的文件“mysql-bin.000001”和“48481”我们会用到。

然后退出MySQL,再来看看我们的日志文件生产没有。日志文件生成的目录在上面的配置中也有。

4338d0df6328eb1d43e31a90e53844ff.png

有了这个文件就说配置已经生效了

2、配置从服务器

进入从服务器,也是一样,要修改MySQL的配置文件(my.cnf),server-id一定不能与主服务器的相同

7be41d3be3b23bb601f3baade06aa876.png

这样既可

保存退出,重启MySQL服务(service mysql restart)

然后进入MySQL,接收主服务器的日志文件。

ab9d7fb950f0204321115093fba167a1.png

是不是在这里看到很多熟悉的信息?

master_host:发送日志文件的主机

master_user:被授权的用户

master_password:用户密码

master_log_file:日志文件名

master_log_pos:日志文件位置

最后在查看从服务器的状态。

ce8c24b0ddff8c5f7e9bd36f3c691c23.png

红框里的两行都为Yes,即为成功了!!!

如果不是,就多检查检查以上步骤。

最后就来验证一下吧。

1、在主服务器创建数据库

3eda226fc47cbb9e795315630152d9cd.png

2、在从服务器创建数据库

1a7522f982c8af020bdc7e1ef714481e.png

最后结果说明,主从复制只是单向的复制,那如何进行双向的复制,这个就是主主复制了。

实现主主复制的效果也很简单,在配置的时候,将在主从服务器所做的再反过做一次就好。

即,在从服务器进行一次授权,在主服务器MySQL进行配置就好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值