Docker Compose搭建mysql主从复制

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

系统环境

  • docker 1.12.3linux

  • mysql5.7.17git

  • deepin 15.3桌面版(这个没啥影响,由于咱们用docker)sql

要点说明

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

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

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

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

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

环境准备

  • `docker-engine`安装ui

这个直接参考官方文档吧.[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`中间件来完成咱们的读写分离.

支持请点赞,不喜勿喷.

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

相关文章
相关标签/搜索