zoukankan      html  css  js  c++  java
  • 基于 Docker 搭建 MySQL 主从复制

    搭建环境

    • Docker 18.09.2
    • MySQL 5.7.13
    • Mac

    安装Docker

    • 验证:docker version

    启动Docker

    安装MySQL

    • 使用Docker拉取MySQL镜像:docker pull mysql:5.7.13
    • 运行主容器
    # --name 为容器指定名称,这里是master
    # -p 将容器的指定端口映射到主机的指定端口,这里是将容器的3306端口映射到主机的3306端口
    # -e 设置环境变量,这里是指定root账号的密码为root
    # -d 后台运行容器,并返回容器ID mysql:5.7.13 指定运行的mysql版本
    docker run --name master -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
    docker run --name slave1 -p 3307:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.13
    
    • 验证是否启动成功:docker ps -a

    创建master的复制账号

    • 使用Navicat登录
      • 连接名 Master
      • 主机名或IP地址 127.0.0.1
      • 端口号 3306
      • 用户名 root
      • 密码 root
    • 创建账号
    GRANT REPLICATION SLAVE ON *.* TO 'backup'@'%' IDENTIFIED BY 'backup';
    FLUSH PRIVILEHES;
    SHOW GRANTS FOR 'backup'@'%';
    

    修复MySQL配置信息

    • 创建目录
      • /opt/mysql/master
      • /opt/mysql/slave1
    • 从容器中拷贝一份MySQL配置
    docker cp master:/etc/mysql/my.cnf /opt/mysql/master
    docker cp slave1:/etc/mysql/my.cnf /opt/mysql/slave1
    
    • 修改/opt/mysql/master/my.cnf
    #[mysqld] 在该节点后加上
    #log-bin=mysql-bin使用binary logging,mysql-bin是log文件名的前缀
    #server-id=1唯一服务器ID
    log-bin=mysql-bin
    server-id=1
    
    • 修改/opt/mysql/slave1/my.cnf
    #[mysqld] 在该节点后加上
    log-bin=mysql-bin
    server-id=2
    
    • 将修改后的文件覆盖Docker中MySQL配置文件
    docker cp /opt/mysql/master/my.cnf  master:/etc/mysql/my.cnf
    docker cp /opt/mysql/slave1/my.cnf  slave1:/etc/mysql/my.cnf
    
    • 重启Docker 让配置生效
    docker restart master
    docker restart slave1
    

    配置主从复制

    • 使用Navicat登录
      • 连接名 Slave1
      • 主机名或IP地址 127.0.0.1
      • 端口号 3307
      • 用户名 root
      • 密码 root
    • 执行以下SQL
    #查看容器运行的各种数据 docker inspect master
    #MASTER_HOST的IP可以通过 docker inspect master 查看
    CHANGE MASTER TO MASTER_HOST='172.17.0.2',MASTER_PORT=3306,MASTER_USER='backup',MASTER_PASSWORD='backup';
    START SLAVE;
    
    
    • 验证,检查配置是否成功
    # Slave_IO_State字段状态
    #Waiting for master to send event 正常
    #Connecting to master 配置失败,具体原因查看日志追踪 docker logs slave1 -f 
    # Slave_IO_Running  字段为 Yes
    # Slave_SQL_Running 字段为 Yes
    SHOW SLAVE STATUS;
    

    测试

    在master上创建数据库、表、插入数据,看看再salve1上是否存在。

  • 相关阅读:
    Gym 101194L / UVALive 7908
    POJ 2259
    POJ 2559
    Gym 101194E / UVALive 7901
    Gym 101194D / UVALive 7900
    一种整数集上二分的正确写法
    日常训练记录
    Gym 101194C / UVALive 7899
    Gym 101194A / UVALive 7897
    HDU 5542
  • 原文地址:https://www.cnblogs.com/zendwang/p/docker-install-mysql-master-slave.html
Copyright © 2011-2022 走看看