首先需要安装docker镜像:

docker pull mysql:5.7

由于需要启动数据库才可以进入数据修改my.cnf文件,可以选择安装vi命令,也可以选择挂在

在此选择是挂载的方法进行安装:

docker run --name mastermysql -d -p : -e MYSQL_ROOT_PASSWORD=1234 -v /usr/master/data:/var/lib/mysql -v /usr/master/conf/my.cnf:/etc/mysql/my.cnf  mysql:5.7
docker run --name slavermysql -d -p : -e MYSQL_ROOT_PASSWORD= -v /usr/slaver/data:/var/lib/mysql -v /usr/slaver/conf/my.cnf:/etc/mysql/my.cnf  mysql

这样就可以创建两个mysql容器,但是需要修改my.cnf,上面创建的是文件文件夹

进入 cd /usr/master

执行 rm -rf my.cnf

再执行 vi my.cnf

加入:

[mysqld]
## 同一局域网内注意要唯一
server-id=
## 开启二进制日志功能,可以随便取(关键)
log-bin=mysql-bin

在从数据库中也是如此操作:

在文件中加入:

[mysqld]
## 设置server_id,注意要唯一
server-id=
## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
log-bin=mysql-slave-bin
## relay_log配置中继日志
relay_log=edu-mysql-relay-bin

这样就可以了:

再次启动两个mysql容器:

首先进入主数据:

docker exec -it mastermysql bash

mysql -u root -p

输入密码

执行:
GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by ''; show master status; 这里是需要记住相关内容的

还需要给两个实例设置独立的ip

执行:

docker inspect --format='{{.NetworkSettings.IPAddress}}' slavermysql
docker inspect --format='{{.NetworkSettings.IPAddress}}' mastermysql

再进入从数据库:

docker exec -it slavermysql bash

 mysql -u root -p
输入密码 change master to master_host='172.17.0.3',master_user='backup',master_password='',master_log_file='mysql-bin.0000003',master_log_pos=,master_port=; 执行
start slave;
再执行
show slave status\G;

master_host :Master的地址,指的是容器的独立ip,可以通过docker inspect --format='{{.NetworkSettings.IPAddress}}' 容器名称|容器id查询容器的ip

master_port:Master的端口号,指的是容器的端口号

master_user:用于数据同步的用户

master_password:用于同步的用户的密码

master_log_file:指定 Slave 从哪个日志文件开始复制数据,即上文中提到的 File 字段的值

master_log_pos:从哪个 Position 开始读,即上文中提到的 Position 字段的值

然后就可以看到:

再在主数据库中创建test数据库:

再进入从数据库中查看:

代表已经安装成功

docker搭建数据库主从复制的更多相关文章

  1. Docker搭建MySQL主从复制

    Docker搭建MySQL主从复制 主从服务器上分别安装Docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 [root@localhost ~]# uname -r ...

  2. MySQL(14)---Docker搭建MySQL主从复制(一主一从)

    Docker搭建MySQL主从复制(一主一从) 上一篇博客写了MYSQL主从复制原理 : MySQL(13)---MYSQL主从复制原理 这篇我们来写 Docker搭建MYSQL主从复制(一主一从) ...

  3. Docker搭建 MySQL 主从复制

    为什么选 Docker 搭建主从复制需要两个以上的MySQL, 使用 Docker 非常方便.如果以前没用过,找个简单的文档看看,熟悉一下命令. 搭建过程 1.下载镜像 docker pull mys ...

  4. docker搭建数据库高可用方案PXC

    前言 本方案主要目的是学习, 该方案不太合适于企业项目 是什么? 白话点, 是个提供了必要环境的虚拟机(类似于java的导入部分包一样和c++的头文件差不多), 所以它比普通的VMWare或者Virt ...

  5. 基于Docker搭建MySQL主从复制

    摘要: 本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 本篇博文相对简单,因为是初次使用D ...

  6. 基于 Docker 搭建 MySQL 主从复制

    本篇博文相对简单,因为是初次使用Docker,MySQL的主从复制之前也在Centos环境下搭建过,但是也忘的也差不多了,因此本次尝试在Docker中搭建. 根据网上教程走还是踩了一些坑,不过所幸最终 ...

  7. 基于Docker的Mysql主从复制搭建

    来源:https://www.cnblogs.com/songwenjie/p/9371422.html?tdsourcetag=s_pctim_aiomsg   为什么基于Docker搭建? 资源有 ...

  8. Mongodb数据库学习系列————(一)Mongodb数据库主从复制的搭建

    Mongodb数据库主从复制的搭建 Writeby:lipeng                                    date:2014-10-22 最近项目上用到了位置查询,在网上 ...

  9. Mysql数据库主从复制搭建

    Mysql数据库主从复制原理: 主库开启bin-log日志,同时生成IO线程.IO线程负责将用户写入数据库的sql语句记录在二进制日志bin-log,该记录过程可并发进行:生成标识号 server i ...

随机推荐

  1. oracle 远程tns配置

    BYRUIY = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = rui-oracle11g)(PORT = )) (CONNECT_DATA = ...

  2. Android编译系统产品线

    1.Android源码中的产品线解析 通常产品厂商在拿到Android源码后会在Android源码基础上进行定制修改,以匹配适应自己的产品.这就引入了产品线的概念.Android系统源码中,产品相关的 ...

  3. JVM实用参数(二)参数分类和即时(JIT)编译器诊断

    JVM实用参数(二)参数分类和即时(JIT)编译器诊断 作者: PATRICK PESCHLOW     原文地址    译者:赵峰 校对:许巧辉 在这个系列的第二部分,我来介绍一下HotSpot J ...

  4. Windows系统 安装 Qt 5.7.0

    Windows系统 安装 Qt 5.7.0 我们的电脑系统:Windows 10 64位 Qt5 软件:Qt 5. 7. 0 下载 Qt 5.7.0 软件 在这个网站里面,下载:Qt 5.7.0 fo ...

  5. Blender 工具使用——模式切换

    Blender 工具使用--模式切换 制作骨架时 在物件模式(Object Mode)下使用鼠标右键选中一个骨架,按Tab键,可以切换为编辑模式(Edit Mode),按Ctrl + Tab可以进入骨 ...

  6. GCD 学习(一)简介

    文章摘抄至:http://zhuyanfeng.com/archives/3015 并有一些改动 GCD(Grand Central Dispatch)是从OS X Snow Leopard和iOS ...

  7. p4301 [CQOI2013]新Nim游戏

    传送门 分析 通过nim游戏我们可以知道我们现在的任务就是通过两轮之后使得剩余的几堆异或和为非0数 所以我们只需要在第一步使得剩余集合的任意非空子集的异或和非0即可 于是我们考虑线性基 我们知道线性基 ...

  8. p2197 nim游戏

    传送门 分析 我们知道最后取完的情况就是所有的a[i]异或和为0 所以只要开始的异或和不为0则先手一定可以将它转化为0 否则不行 所以如果异或和非0则先手胜 代码 #include<bits/s ...

  9. C/C++中char* p = "hello" 和 const char* p = "hello"的区别

    在写代码常常都会写char * p ="hello";这样的代码,虽然不是错误,但却不建议这样用.应该加const修饰.这句话背后的内涵是什么?下面就刨根问底一下:) 这个行为在不 ...

  10. [hdu 2604] Queuing 递推 矩阵快速幂

    Problem Description Queues and Priority Queues are data structures which are known to most computer ...