• 本地虚拟机centos7通过docker安装主从mysql5.7.21


    1、下载mysql镜像

    docker pull mysql:5.7.21

    2、在home下建立mydata目录

    在/home/mydata/mysql下面建立两个目录 conf与data

    3、docker运行起来两个服务器的服务

    docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=mastermysql -d mysql:5.7.21

    docker run -p 3306:3306 --name slavemysql -v /home/mydata/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=slavemysql -d mysql:5.7.21

    4、开放下面的防火墙端口以便访问

    firewall-cmd --add-port=3306/tcp --permanent

    firewall-cmd --reload

    firewall-cmd --list-all

    5、主要是考虑配置文件,拷贝与使用

    docker exec -it mastermysql bash

    实际配置文件在/etc/mysql/conf.d里的mysql.cnf

    docker top mastermysql 查看容器mastermysql的进程信息

    docker inspect mastermysql 查看docker容器更多详尽信息

    6、修正主从配置文件

    看这个容器的使用的mysql配置文件如下

    /etc/mysql/conf.d 这个目录里的mysql.cnf

    启动的时候用宿主/home/mydata/mysql/conf/master.cnf的把上面的替换掉就可以了

    从服务器修改成slave.cnf

    这样只要编辑宿主的两个配置文件就可以了

    配置好master.cnf

    server-id=1

    log-bin=mysql-bin

    与slave.cnf

    server-id=2

    log-bin=mysql-bin

    用docker cp 或就直接用mount的

    df -g看到的文件系统来进行拷贝 如下

    cp /home/mydata/mysql/conf/mysql.cnf /var/lib/docker/overlay2/f6ac448af8a0ab4e78ed7311ef8b4498ecaf45d4596241a4a94f4b7086f88467/merged/etc/mysql/lqy

    修改或覆盖配置后docker restart mastermysql 重启

    show variables like '%%'; 可以查询mysql所有相关参数值

    /etc/mysql/mysql.conf.d/mysqld.cnf 目前只能在这个版本的这个文件进行修改加入主从参数,启动mysql才有效,用下面的查询sql命令可以看是否设置master正常,另外这个版本的数据目录是在

    /var/lib/mysql 之前好像搞错了

    show variables like '%log_bin%';

    show master status;

    主mysql

    GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by 'backup';

    show grants for 'backup'@'%';

    从mysql

    CHANGE MASTER TO

    MASTER_HOST='192.168.199.151',

    MASTER_PORT=3306,

    MASTER_USER='backup',

    MASTER_PASSWORD='backup';

    START SLAVE;

    show slave status;

    好像新的docker启动服务后,上面slave需要重新执行一下,实际生产要考虑自动吧

    这样新建的数据库与表数据等都会从主服务器同步到从服务器上了

    修改成下面的方式就可以正常使用了

    先停掉上面的docker stop mastermysql docker rm mastermysql

    docker run -p 3306:3306 --name mastermysql -v /home/mydata/mysql/data:/var/lib/mysql -v /home/mydata/mysql/conf/master.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=mastermysql -d mysql:5.7.21

    docker run -p 3306:3306 --name slavemysql -v /home/mydata/mysql/data:/var/lib/mysql -v /home/mydata/mysql/conf/slave.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf -e MYSQL_ROOT_PASSWORD=slavemysql -d mysql:5.7.21

  • 相关阅读:
    leetcode做题笔记198. 打家劫舍
    MATLB|具有储能的经济调度及机会约束和鲁棒优化
    PAT 1005 Spell It Right
    初始Tomcat(Tomcat的基础介绍)
    JavaScript 到底放在哪个位置,不同位置效果又是怎么样
    httpclient3.1跳过ssl验证
    yum仓库
    【C++】构造函数与析构函数用途 ( 代码示例 - 构造函数与析构函数用途 )
    微软开源 windows-drivers-rs,用 Rust 开发 Windows 驱动程序
    Promise的面试题考点
  • 原文地址:https://blog.csdn.net/qq_40032778/article/details/127962728