zoukankan      html  css  js  c++  java
  • docker部署mysql主从复制

    1.安装主从mysql服务

    docker run -p 3339:3306 --name mysql-master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    docker run -p 3340:3306 --name mysql-slave1 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
    

    2.配置master主机

    (1)docker exec -it mysql-master /bin/bash

    (2)vim /etc/mysql/my.cnf配置如下 内容

    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=100
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=mysql-bin
    
    (3)重启mysql服务使配置生效:service mysql restart
    
    (4)重启容器:docker start mysql-master
    
    (5)数据库创建数据同步用户,授予用户 slave REPLICATION SLAVE权限和REPLICATION CLIENT权限,用于在主从库之间同步数据
    mysql -uroot -p123456
    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
    flush privileges;
    

      

    3.配置slave从机

    (1)docker exec -it mysql-slave1 /bin/bash
    
    (2)vim /etc/mysql/my.cnf配置如下 内容
    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=101
    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
    log-bin=mysql-slave-bin
    ## relay_log配置中继日志
    relay_log=mysql-relay-bin
    
    (3)重启mysql服务使配置生效:service mysql restart
    
    (4)重启容器:docker start mysql-slave1
    

    4.链接mater和slave

    (1)在Master进入mysql,执行show master status;
    
    (2)在Slave进入mysql,执行命令:
    change master to master_host='172.17.0.2', master_user='slave', master_password='123456', master_port=3306, master_log_file='mysql-bin.000001', master_log_pos=617, master_connect_retry=30;
    命令分析:
    	master_host='172.17.0.2':主机容器ip地址,通过docker inspect mysql-master查看
    	master_user='slave':主机数据同步用户账号
    	master_password='123456':主机数据同步用户密码
    	master_port=3306:主机容器内端口,非映射到宿主机的端口
    	master_log_file='mysql-bin.000001':指定 Slave 从哪个日志文件开始复制数据,通过在master执行show master status查看
    	master_log_pos=617:从哪个 Position 开始读,通过在master执行show master status查看
    	master_connect_retry=30:如果连接失败,重试的时间间隔,单位是秒,默认是60秒
    
    (3)开启主从复制,SlaveIORunning 和 SlaveSQLRunning 都是No,因为我们还没有开启主从复制过程。使用start slave;开启主从复制过程,然后再次查询主从同步状态show slave status G;
    
    (4)show slave status G;查看Last_IO_Errno、Last_IO_Error、Last_SQL_Errno、Last_SQL_Error、SlaveIORunning 、SlaveSQLRunning等指标,查看主从复制是否配置成功
    
    (5)主从复制排错:
    	网络不通(检查ip,端口)
    	密码不对(检查是否创建用于同步的用户和用户密码是否正确)
    	pos不对(检查Master的 Position)
    

      

    5.测试主从复制功能,测试主从数据库是否同步,简单的可以用navicat测试

    注意:
    1.docker容器安装vim
      apt-get update
      apt-get install -y vim

    2.这里只配置一个从机,如若需要可以配置多个从机,配置与mysql-slave1一致

  • 相关阅读:
    详解Net Core Web Api项目与在NginX下发布
    一个C#开发者重温Java的心路历程
    C#使用Consul集群进行服务注册与发现
    让我们一起揭开算法的神秘面纱
    C#调用RabbitMQ实现消息队列
    C#调用OpenCV开发简易版美图工具
    我们是如何做go语言系统测试覆盖率收集的?
    高效测试框架推荐之Ginkgo
    性能测试必知必会
    如何保障Go语言基础代码质量?
  • 原文地址:https://www.cnblogs.com/konglingxi/p/14807857.html
Copyright © 2011-2022 走看看