配置文件以及文檔地址: 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`中間件來完成咱們的讀寫分離.
支持請點贊,不喜勿噴.
天天一點點,成長多一點.