Docker实现MySQL主从复制(主主复制同理)

 

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

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

一、准备主从服务器

  1、创建主服务器

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

  

  2、创建从服务器

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

  

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

操作系统(OS):Ubuntu 14.04

主服务器IP:172.17.0.2

从服务器IP:172.17.0.3

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

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

$ apt-get update

  

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

apt-get install mysql-server

 

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

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

再确认一次密码

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

 三、搭建MySQL主从复制

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

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

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

$ find -name mf.cnf

表示配置文件在这个目录

然后修改该文件

$ vi /etc/mysql/my.cnf

 

 

然后就进到这个界面

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

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

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

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

其他可以先不用管。

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

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

登录MySQL

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

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

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

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

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

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

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

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

 2、配置从服务器

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

这样既可

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

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

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

master_host:发送日志文件的主机

master_user:被授权的用户

master_password:用户密码

master_log_file:日志文件名

master_log_pos:日志文件位置

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

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

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

最后就来验证一下吧。

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

 

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

 

 

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

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

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

 

posted @ 2018-06-19 20:32  宛如一个ZD  阅读(401)  评论(0编辑  收藏  举报