• 【docker安装Mysql并配置主从复制】


    Mysql主从复制

    目的:

    是为了后面naocs集群的服务配置做准备工作

    准备工作

    准备至少两台虚拟机或服务器,安装好了docker,找到他们的ip地址
    在这里插入图片描述
    在这里插入图片描述

    后面操作都用xshell操作来代替

    在这里插入图片描述

    拉取并启动mysql镜像和容器
    主机的命令为mysql01,对外端口用3310来连接
    docker run -d -p 3310:3306 -v /home/mysql/node-1/config:/etc/mysql/ -v/home/mysql/node-1/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456  --name mysql01 mysql:5.7
    
    • 1
    从机的命名为mysql02,对外端口用3311来连接
    docker run -d -p 3311:3306 -v /home/mysql/node-2/config:/etc/mysql/ -v/home/mysql/node-2/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name mysql02 mysql:5.7
    
    • 1
    命令解释:

    -d: 后台运行容器,并返回容器ID
    -p 3311:3306 :将容器的3306端口映射到宿主机3310端口
    -e MYSQL_ROOT_PASSWORD=123456 :配置数据库连接密码
    -v /home/mysql/node-2/config:/etc/mysql/ :将配置文件夹挂载到宿主机
    –name mysql01(02):将容器命名为 mysql01(02)

    docker ps -a #查看全部容器(运行中加未运行的)分别查看mysql容器的状态

    在这里插入图片描述

    在这里插入图片描述

      都处于正常运行状态
    
    • 1
    下面用navicat连接两个数据库

    都正常连接
    在这里插入图片描述
    在这里插入图片描述

    开始主从复制的配置

    之前我们启动的时候写了这句-v /home/mysql/node-1/config:/etc/mysql/,将mysql 的配置文件夹和主机的文件夹挂载起来的。
    那么我们就可以直接在主机下的/home/mysql/node-1/config/编写配置文件了,
    那么从机下的就是/home/mysql/node-2/config/编写配置文件了。

    进入主机操作:
    cd /home/mysql/node-1/config/
    vim my.cnf
    复制下面内容进去
    [mysqld]
    #修改配置文件:vim /etc/my.cnf
    #主服务器唯一ID
    server_id=1
    #启用二进制日志
    log-bin=mysql-bin

    设置不要复制的数据库(可设置多个)

    binlog-ignore-db=mysql
    binlog-ignore-db=information_schema
    #设置需要复制的数据库 需要复制的主数据库名字,多个数据库的话,需要多行书写即可,不可逗号连接
    binlog-do-db=testdb
    #设置logbin格式
    binlog_format=STATEMENT
    然后esc-> :wq 保存

    进入从机操作

    cd /home/mysql/node-2/config/
    vim my.cnf
    复制下面的内容
    [mysqld]
    #从服务器唯一ID
    server_id=2
    #启用中继日志
    relay-log=mysql-relay
    然后esc-> :wq 保存

    分别在主从机上,用命令docker restart mysql01 和 docker restart mysql02 重启mysql的容器

    搭建主从复制

    在这里插入图片描述

    进入主机的mysql
    docker exec -it mysql01 /bin/bash #进入容器
    mysql -uroot -p123456 #连接mysql

    主机上建立帐户并授权 slave
    给从机授权,为了让从机能够和主机连接起来。
    GRANT REPLICATION SLAVE ON . TO ‘slave’@‘%’ IDENTIFIED BY ‘123456’;
    复制
    在这里插入图片描述

    查询master状态
    show master status; #查询master的状态
    在这里插入图片描述

    把这里的File和Position记下来哈,等下在从机上要用到。
    File: mysql-bin.000003
    Position: 438
    复制
    Binlog_Do_DB:需要复制的数据库。
    Binlog_Ignore_DB:不需要复制的数据库。
    注意:此步骤后不要再操作主服务器MySQL,防止主服务器状态值变化
    由此进入从机操作:
    进入mysql02容器
    docker exec -it mysql02 /bin/bash
    mysql -uroot -p123456
    输入命令
    CHANGE MASTER TO MASTER_HOST=‘主机的ip地址’,MASTER_USER=‘slave’,MASTER_PASSWORD=‘123456’,MASTER_PORT=3310, MASTER_LOG_FILE=‘mysql-bin.000003’,MASTER_LOG_POS=438;
    解释:
    CHANGE MASTER TO MASTER_HOST=‘主机的IP地址’,
    MASTER_USER=‘slave’(刚刚配置的用户名),
    MASTER_PASSWORD=‘123456’(刚刚授权的密码),
    master_port=主机开放的端口 我这里是3310端口,
    MASTER_LOG_FILE=‘mysql-bin.具体数字’,MASTER_LOG_POS=具体值(之前的Position);
    在这里插入图片描述

    注意事项:如果在这里出现错误,先重置。执行完下面两条命令。
    stop slave;
    reset master;
    复制
    启动从服务器复制功能
    start slave;

    查看从服务器状态
    show slave status\G
    在这里插入图片描述
    在这里插入图片描述

    #下面两个参数都是Yes,则说明主从配置成功!
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes

    测试,主机的testdb库都会及时同步过去

    在这里插入图片描述

    现在主库的表里没数据,添加一条
    在这里插入图片描述

    查看从库的数据,也存在了

    到此一主一从的mysql主从复制就完成了。
    在这里插入图片描述

    mysql主从复制的优点:

    1、数据更安全:做了数据冗余,不会因为单台服务器的宕机而丢失数据
    2、性能大大提升:一主多从,不同用户从不同数据库读取,性能提升
    3、扩展性更优:流量增大时,可以方便的增加从服务器,不影响系统使用
    4、负载均衡:一主多从相当于分担了主机任务,做了负载均衡。

  • 相关阅读:
    水利部加快推进小型水库除险加固,大坝安全监测是重点
    使用 snappyjs 压缩数据并解压
    客户开发篇 | 外贸业务员怎么打电话开发跟进客户呢?
    植物大战 类和对象2——C++
    代码随想录day52|子序列系列|300.最长递增子序列|674. 最长连续递增序列|718. 最长重复子数组|Golang
    paddle 1-高级
    SpringBoot项目创建及运行
    什么是IoT数字孪生?
    (转)SpringCloud网关的解决方案
    推荐ChatGPT4.0——Code Copilot辅助编程、Diagrams: Show Me绘制UML图、上传PDF并阅读分析
  • 原文地址:https://blog.csdn.net/qq_41417172/article/details/133163021