码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2018-06-19 21:33:00      阅读:322      评论:0      收藏:0      [点我收藏+]

标签:sql   bubuko   原因   docker   主从   img   搭建   虚拟   接收   

 

  因为最近在学习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进行配置就好

 

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

标签:sql   bubuko   原因   docker   主从   img   搭建   虚拟   接收   

原文地址:https://www.cnblogs.com/inttochar/p/9200953.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!