Docker Compose搭建mysql主从复制

配置文件以及文档地址: 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主从复制_第1张图片

简要说明:

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

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

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

  • hosts: 本地路由

  • mysql-master的配置

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

Docker Compose搭建mysql主从复制_第2张图片

mysql-s1/mysql-s2的配置

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

Docker Compose搭建mysql主从复制

hosts文件配置

Docker Compose搭建mysql主从复制

docker-compose配置文件和Dockerfile

  • 目录结构

Docker Compose搭建mysql主从复制_第3张图片

  • Dockerfile

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

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

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

好吧,看一下这个`Dockerfile`

Docker Compose搭建mysql主从复制

  • docker-compose.yml

好吧,重点来了.

Docker Compose搭建mysql主从复制_第4张图片

Docker Compose搭建mysql主从复制_第5张图片

Docker Compose搭建mysql主从复制_第6张图片

run

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

Docker Compose搭建mysql主从复制

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

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

配置master

  • 进入master的mysql命令行

Docker Compose搭建mysql主从复制_第7张图片

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

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

Docker Compose搭建mysql主从复制

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

Docker Compose搭建mysql主从复制

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

Docker Compose搭建mysql主从复制

  • 查看master状态

Docker Compose搭建mysql主从复制_第8张图片

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

配置slave1

  • 进入s1的mysql命令行

Docker Compose搭建mysql主从复制_第9张图片

输入`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主从复制_第10张图片

则证明成功.

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

自己来吧 哈哈哈哈

总结

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

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

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

支持请点赞,不喜勿喷.

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

你可能感兴趣的:(Docker Compose搭建mysql主从复制)