zoukankan      html  css  js  c++  java
  • docker下MySQL的主从复制

    MySql的主从复制

    sudo docker pull MySQL:5.7 拉取MySQL的镜像文件(版本号为 5.7)

    sudo docker run -p 3339:3306 --name master -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 主数据库

    sudo docker run -p 3340:3306 --name slave -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 从数据库


    执行完 俩个命令 创建的容器默认启动

    docker ps 查看当前正在运行的 容器

    docker exec -it master bash 进入master容器

    cd etc/mysql 切换到 MySQL所在的路径

    vi my.cnf 对my.cnf 进行编辑 可能会报错 原因是 没有 容器本身没有安装 vim

    安装 vim

    apt-get update

    apt-get install vim


    安装成功后 vim my.cnf


    对文件进行编辑

    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=100
    ## 开启二进制日志功能
    log-bin=mysql-bin


    配置完成后需要重新启动容器 service mysql restart
    重启mysql服务时会使得docker容器停止,我们还需要docker start master启动容器。
    重启之后 再次进入容器
    mysql -uroot -p123456
    进入数据库服务

    mysql> CREATE USER 'slave'@'%' IDENTIFIED BY '123456';

    mysql> GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';

    创建用来同步的用户,并且给用户添加俩个权限 用来主从库之间的同步

    mysql> show master status; 查看 master的状态

    记住 file 下的文件名字 Position 位置

    退出 master 容器

    docker exec -it slave bash 进入slave所组织容器
    cd etc/mysql 切换到 MySQL所在的路径

    vi my.cnf 对my.cnf 进行编辑 可能会报错 原因是 没有 容器本身没有安装 vim

    安装 vim

    apt-get update

    apt-get install vim


    安装成功后 vim my.cnf


    对文件进行编辑

    [mysqld]
    ## 设置server_id,注意要唯一
    server-id=101
    ## 开启二进制日志功能,以备Slave作为其它Slave的Master时使用
    log-bin=mysql-slave-bin
    ## relay_log配置中继日志
    relay_log=edu-mysql-relay-bin


    配置完成后需要重新启动容器 service mysql restart
    重启mysql服务时会使得docker容器停止,我们还需要docker start master启动容器。
    重启之后 再次进入容器
    mysql -uroot -p123456

    mysql> change master to master_host='master容器的ip', master_user='master容器中创建的用于主从同步的用户', master_password='账户的密码', master_port=3306, master_log_file='master下查看的file', master_log_pos= Position文件位置, master_connect_retry=30;

    执行完之后
    mysql>show slave status G; 查看主从同步状态
    Slave_IO_Running:NO
    Slave_SQL_Running:NO
    还未开启主从复制状态

    mysql> start slave;

    再次查看状态
    mysql>show slave status G;

    Slave_IO_Running:YES
    Slave_SQL_Running:YES

    即为开启主从复制 成功

    若依然为NO 可尝试 先exit 退出MySQL服务 然后 mysql -uslave -p123456 -h127.17.0.2
    先使用master中设置的,用于主从同步的用户
    启动mysql服务后 exit
    再次 使用默认用户 mysql -uroot -p123456 启动mysql服务

    mysql>stop slave;
    mysql>start slave;
    mysql>show slave status G; 再次查看状态

    俩个全为YES 主从复制即为成功

  • 相关阅读:
    小程序实现删除列表某条内容的功能
    关于多行文本 textarea 在ios 真机上padding相对安卓较大问题
    关于小程序 input 组件内容显示不全(显示的长度不满 input 宽度)问题
    关于小程序button控件上下边框的显示和隐藏问题
    关于微信小程序 textarea组件在fixed定位的模块中随页面移动问题
    首记
    java >>> 和 >>>=的区别
    Nginx" upstream prematurely closed connection while reading response header from upstream"问题排查
    nginx配置rewrite总结
    nginx配置location总结
  • 原文地址:https://www.cnblogs.com/lcc1234/p/11947338.html
Copyright © 2011-2022 走看看