基于docker的Mysql主从复制容器搭建

前期准备

  1. 安装 docker。
  2. 安装 docker-compose 命令。
  3. 推荐本机安装 mycli 命令。语法几近原生,多了补全。
  4. 文章涉及到的 docker-compose.yml 和 Dockerfile 文件可以在 https://github.com/jessun2017/docker-files 的 mysql4dev 目录下找到。

说明

简单描述就是 docker-compose 命令可以按照 docker-compose.yml 中的配置来运行两个包含 mysql 服务的容器。之后再单独使用命令来配置从库设置。

version: "3"
services:
    mysql_master:
        build:
          context: ./
          dockerfile: master/Dockerfile
        volumes:
            -  "./mysql_master:/var/lib/mysql"
        environment:
            MYSQL_ROOT_PASSWORD: root
        links:
          - mysql_slave
        ports:
            -  "33060:3306"
        restart: always
        hostname: mysql_master
    mysql_slave:
        build:
          context: ./
          dockerfile: slave/Dockerfile
        volumes:
            -  "./mysql_slave:/var/lib/mysql"
        environment:
            MYSQL_ROOT_PASSWORD: root
        ports:
            -  "33061:3306"
        restart: always
        hostname: mysql_slave

两个数据库的 root 用户密码都是 root 。主库的连接地址为:127.0.0.1:33060,从库的连接地址为:127.0.0.1:33061。两个数据库的持久化都会在当前目录下 ./mysql_master./mysql_slave

步骤

  1. 在 mysql4dev 目录下运行 docker-compose up 启动两个 mysql 容器。
  2. 首先 docker ps 查看一下两个容器的基本情况。
    docker ps 显示结果
  3. 使用 mycli -h 127.0.0.1 -P 33060 -u root 命令来操作主库。输入 show master status; 来确定 binlog 文件名和记录的位置。
    show master status; 显示结果
  4. 使用 mycli -h 127.0.0.1 -P 33061 -u root 命令来操作从库。输入 CHANGE MASTER TO MASTER_HOST='mysql_master',MASTER_USER='root',MASTER_PASSWORD='root',MASTER_LOG_FILE='replicas-mysql-bin.000005',MASTER_LOG_POS=154;
  5. 继续 stop slave;start slave 来启动从库的复制功能。
  6. 使用 show slave status; ,如果显示如下,表示主从设置已经成功。
    [图片上传失败...(image-36b34f-1583686594141)]
  7. 这里有个注意点,如果 show slave status; 中显示了 error,就需要重新从步骤3开始操作,重新同步。否则复制功能就会停滞。

你可能感兴趣的:(基于docker的Mysql主从复制容器搭建)