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`中間件來完成咱們的讀寫分離.

支持請點贊,不喜勿噴.

天天一點點,成長多一點.

相關文章
相關標籤/搜索