首先需要安装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. 【Android 多媒体应用】使用MediaCodec解码使用SurfaceView显示视频

    1.MainActivity.java import android.app.Activity; import android.os.Bundle; import android.os.Environ ...

  2. Git分支和指针

    Git中的分支本质上是个指向commit对象的指针. 在当前commit点创建一个新的分支test git branch test 创建了一个新的可变指针指向f30ab  commit Git 是如何 ...

  3. DAY11-MYSQL数据备份、pymysql模块

    一 IDE工具介绍 生产环境还是推荐使用mysql命令行,但为了方便我们测试,可以使用IDE工具 下载链接:https://pan.baidu.com/s/1bpo5mqj 掌握: #1. 测试+链接 ...

  4. day17-jdbc 1.课程介绍

  5. C++对二进制文件的操作实例

    有5个学生的数据,要求: (1)将它们存放到磁盘文件中: (2)将磁盘文件中的第1,3,5个学生数据读入程序,并显示出来: (3)将第三个学生的数据修改后存回磁盘文件中的原有位置: (4)从磁盘文件读 ...

  6. ROS Learning-010 beginner_Tutorials 编写简单的启动脚本文件(.launch 文件)

    ROS Indigo beginner_Tutorials-09 编写简单的启动脚本文件 我使用的虚拟机软件:VMware Workstation 11 使用的Ubuntu系统:Ubuntu 14.0 ...

  7. HiveServer2的配置使用

    HiveServer2的配置和使用 hive-site.xml配置 hiveserver2的配置 <property> <name>hive.support.concurren ...

  8. 第二篇:MySQL库相关操作

    一 系统数据库 information_schema: 虚拟库,不占用磁盘空间,存储的是数据库启动后的一些参数,如用户表信息.列信息.权限信息.字符信息等performance_schema: MyS ...

  9. Python字典内置方法

    Python字典包含了以下内置方法: 序号 函数及描述 1 radiansdict.clear()删除字典内所有元素 2 radiansdict.copy()返回一个字典的浅复制 3 radiansd ...

  10. Entity Framework Code-First(19):Seed Data

    Seed Database in Code-First: You can insert data into your database tables during the database initi ...