zoukankan      html  css  js  c++  java
  • 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进行配置就好

  • 相关阅读:
    线段树、最短路径、最小生成树、并查集、二分图匹配、最近公共祖先--C++模板
    数据结构中各种树
    你必须知道的基本位运算技巧(状压DP、搜索优化都会用到)
    memset为int型数组初始化问题
    Dev-C++添加代码格式化(format source code)工具Artistic Style
    让vs IIS Express支持本地静态Json文件
    什么是「供给侧改革」? 原标题:中央提的“供给侧改革”是啥意思?有谁能解说下吗?
    PowerDesigner用法和技巧
    php 调用 web Server(短信接口示例)
    sae相关配置
  • 原文地址:https://www.cnblogs.com/inttochar/p/9200953.html
Copyright © 2011-2022 走看看