配置文件以及文档地址: 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`镜像
目录结构
简要说明:
mysql-master: 存放master配置文件
mysql-s1: 存放第一个slave配置文件
mysql-s2: 存放第二个slave配置文件
hosts: 本地路由
mysql-master的配置
没多少东西,只有一个`mysqld.cnf`须要在末尾追加:
mysql-s1/mysql-s2的配置
跟master同样,也只有一个`mysqld.cnf`须要在末尾追加:
hosts文件配置
目录结构
Dockerfile
其实`master s1 s2`的Dockerfile都是一致的,咱就是为了保持必定的扩展性才这么写的.
咱们彻底能够用`docker-compose`的`image`代替.
在docker-compose.yml中image和build不能一块儿使用的
好吧,看一下这个`Dockerfile`
docker-compose.yml
好吧,重点来了.
在`docker-compose.yml`文件的目录下运行
别激动,咱们如今才只是完成了一半….
下面开始设置mysql主从复制.
进入master的mysql命令行
输入`MYSQL_ROOT_PASSWORD:`的值m1test,进入mysql命令行模式.
建立用于主从复制的用户`repl`
给`repl`用户授予slave的权限
锁库,不让数据再进行写入动做,这个命令在结束终端会话的时候会自动解锁
查看master状态
记下`master-bin.000003`和`636`一会在slave用.
进入s1的mysql命令行
输入`MYSQL_ROOT_PASSWORD:`的值s1test,进入mysql命令行模式.
链接master
启动slave
几乎跟slave一致….咱就不写了…
好了,到此位置,配置已经完成,那是否成功了捏… 咱们来试一下.
在master的mysql命令行下建立数据库 ms-test
去两台slave上查看是否也有了mstest数据库.
则证实成功.
本身来吧 哈哈哈哈
经过以上步骤,我们搭建了一个以`docker-compose`管理的mysql `master-slave`模式的主从复制.
下一步,咱们须要进行暴露端口,或者使用`links`属性来让应用或者其余客户端工具可以访问咱们的mysql.
再下一步,咱们须要使用`mycat`中间件来完成咱们的读写分离.
支持请点赞,不喜勿喷.
天天一点点,成长多一点.