• 基于 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上是否存在。

  • 相关阅读:
    Python 实例、类方法和静态方法
    allure生成测试报告,index.html页面内容为空
    【UOJ567】【IOI2020】Biscuits(DP)
    【BZOJ2410】Nim游戏(博弈论)
    【洛谷4351】[CERC2015] Frightful Formula(坐标系走路)
    【洛谷3581】[POI2015] CZA(DP)
    【LOJ117】有源汇有上下界最小流
    【洛谷6915】[ICPC2015 WF] Weather Report(哈夫曼树)
    【洛谷6152】[集训队作业2018] 后缀树节点数(SAM+LCT)
    【CF1349D】Slime and Biscuits(势能函数)
  • 原文地址:https://www.cnblogs.com/zendwang/p/docker-install-mysql-master-slave.html
Copyright © 2020-2023  润新知