文档章节

Docker Compose搭建mysql主从复制

j
 java_龙
发布于 2018/02/27 15:11
字数 782
阅读 372
收藏 0

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

配置文件以及文档地址: http://git.oschina.net/wangjingj/mycat-rw

系统环境

  • docker 1.12.3

  • mysql5.7.17

  • deepin 15.3桌面版(这个没啥影响,因为我们用docker)

要点说明

  • 使用`docker bridge`网络,设置静态IP

  • 使用`volumes`挂载,不使用数据卷容器(因为我使用`docker compose`没搞成功 - -!)

  • 镜像使用`build`创建(保留扩展性),不使用`image`

  • 目前为止,没有暴露端口号,只是两个`slave`link了`master`.马上着手研究使用[mycat](http://www.mycat.org.cn/)完成mysql的主从复制+读写分离,敬请期待.

  • 挂载`hosts`文件,以便于使用`hostname`代替ip地址

环境准备

  • `docker-engine`安装

这个直接参考官方文档吧.[debian下安装docker-engine](https://docs.docker.com/engine/installation/linux/debian/)

  • `docker-compose`安装

[debian下安装docker-compose](https://docs.docker.com/compose/install/)

  • 拉取`mysql:5.7.17`镜像

Docker Compose搭建mysql主从复制

需要挂载的配置文件

  • 目录结构

Docker Compose搭建mysql主从复制

简要说明:

  • mysql-master: 存放master配置文件

  • mysql-s1: 存放第一个slave配置文件

  • mysql-s2: 存放第二个slave配置文件

  • hosts: 本地路由

  • mysql-master的配置

没多少东西,只有一个`mysqld.cnf`需要在末尾追加:

Docker Compose搭建mysql主从复制

mysql-s1/mysql-s2的配置

跟master一样,也只有一个`mysqld.cnf`需要在末尾追加:

Docker Compose搭建mysql主从复制

hosts文件配置

Docker Compose搭建mysql主从复制

docker-compose配置文件和Dockerfile

  • 目录结构

Docker Compose搭建mysql主从复制

  • Dockerfile

其实`master s1 s2`的Dockerfile都是一致的,咱就是为了保持一定的扩展性才这么写的.

我们完全可以用`docker-compose`的`image`代替.

在docker-compose.yml中image和build不能一起使用的

好吧,看一下这个`Dockerfile`

Docker Compose搭建mysql主从复制

  • docker-compose.yml

好吧,重点来了.

Docker Compose搭建mysql主从复制

Docker Compose搭建mysql主从复制

Docker Compose搭建mysql主从复制

run

在`docker-compose.yml`文件的目录下运行

Docker Compose搭建mysql主从复制

别激动,我们现在才只是完成了一半….

下面开始设置mysql主从复制.

配置master

  • 进入master的mysql命令行

Docker Compose搭建mysql主从复制

输入`MYSQL_ROOT_PASSWORD:`的值m1test,进入mysql命令行模式.

  • 创建用于主从复制的用户`repl`

Docker Compose搭建mysql主从复制

  • 给`repl`用户授予slave的权限

Docker Compose搭建mysql主从复制

  • 锁库,不让数据再进行写入动作,这个命令在结束终端会话的时候会自动解锁

Docker Compose搭建mysql主从复制

  • 查看master状态

Docker Compose搭建mysql主从复制

记下`master-bin.000003`和`636`一会在slave用.

配置slave1

  • 进入s1的mysql命令行

Docker Compose搭建mysql主从复制

输入`MYSQL_ROOT_PASSWORD:`的值s1test,进入mysql命令行模式.

  • 连接master

Docker Compose搭建mysql主从复制

  • 启动slave

Docker Compose搭建mysql主从复制

配置slave2

几乎跟slave一致….咱就不写了…

实验1 测试master写入后是否能够同步到slave

好了,到此位置,配置已经完成,那是否成功了捏… 我们来试一下.

  • 在master的mysql命令行下创建数据库 ms-test

Docker Compose搭建mysql主从复制

  • 去两台slave上查看是否也有了mstest数据库.

Docker Compose搭建mysql主从复制

则证明成功.

实验2 创建一个表,插入一条数据

自己来吧 哈哈哈哈

总结

通过以上步骤,咱们搭建了一个以`docker-compose`管理的mysql `master-slave`模式的主从复制.

下一步,我们需要进行暴露端口,或者使用`links`属性来让应用或者其他客户端工具能够访问我们的mysql.

再下一步,我们需要使用`mycat`中间件来完成我们的读写分离.

支持请点赞,不喜勿喷.

每天一点点,成长多一点.

本文转载自:https://blog.csdn.net/wang_jingj/article/details/53931237

j
粉丝 75
博文 107
码字总数 139365
作品 0
成都
程序员
私信 提问
docker学习系列12 轻松实现 mysql 主从同步

docker的一大好处是在本地可以很方便快速的搭建负载均衡,主从同步等需要多主机的环境。 可以说是极大方便了运维成本和难度。 本节在本地搭建mysql的一主一从的集群环境。 关于主从同步的流程...

飞凡的陀螺
2018/08/24
0
0
chris/docker-mysql-mha

Docker MySQL MHA 基于Docker 1.13.1之上构建的MySQL MHA Docker Compose Project 可快速启动GTID模式下的MasterHA集群, 主用于MySQL与Docker的学习研究 构建环境 MacOS 10.12.3 Docker 1.1...

chris
2017/03/06
0
0
容器技术|Docker三剑客之docker-machine

本文已获得原作者霸都民工哥授权。 上一篇:容器技术|Docker 三剑客之 Compose Docker-machine 是什么? docker-machine就是 docker 公司官方提出的,用于在各种平台上快速创建具有 docker...

掘金官方
2018/07/12
0
0
容器技术|Docker三剑客之Compose

本文已获得原作者霸都民工哥授权。 三剑客简介 docker-machine docker 技术是基于 Linux 内核的 cgroup 技术实现的,那么问题来了,在非 Linux 平台上是否就不能使用 docker 技术了呢?答案是...

掘金官方
2018/07/06
0
0
基于Docker的Mysql主从复制搭建

为什么基于Docker搭建? 资源有限 虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐 一台机器上可以运行多个Docker容器 Docker容器之间相互独立,有独立ip,互不冲突 Docker使用步骤简便,...

撸码那些事
2018/07/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

是否有内置功能可以打印对象的所有当前属性和值?

所以我在这里寻找的是类似PHP的print_r函数。 这样一来,我可以通过查看问题对象的状态来调试脚本。 #1楼 可能值得一看- 是否有与Perl的Data :: Dumper等效的Python? 我的建议是 https://gi...

技术盛宴
17分钟前
5
0
直击面试,聊聊 GC 机制

前言 文章来源:https://studyidea.cn/ GC 中文直译垃圾回收,是一种回收内存空间避免内存泄漏的机制。当 JVM 内存紧张,通过执行 GC 有效回收内存,转而分配给新对象从而实现内存的再利用。 ...

程序通事
20分钟前
4
0
Mybatis where 1=1 和 标签

在mybatis中拼接查询语句,偶尔会出现where后面可能一个字段的值都没有,就导致所有条件无效,导致where没有存在的意义;但也有可能这些条件会存在。那解决这个问题的方法,最常见的就是: ...

观海562
22分钟前
4
0
git常用初始化设置

日志编辑工具 git config --global core.editor vim ssh访问 cd /home/weiguangyue/.sshssh-keygen -t rsa -C weiyue888999@126.com 提交者信息用户名 git config --global user.nam......

萧默
23分钟前
4
0
面试题-关于Java线程池一篇文章就够了

在Java面试中,线程池相关知识,虽不能说是必问提,但出现的频次也是非常高的。同时又鉴于公众号“程序新视界”的读者后台留言让写一篇关于Java线程池的文章,于是就有本篇内容,本篇将基于J...

程序新视界
27分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部