• 单机Centos7搭建mysql5.7主备/主从(docker)


    参考:
    https://blog.csdn.net/m0_58574228/article/details/122509685
    https://www.jb51.net/article/236243.htm

    安装Docker

    下载Docker依赖的环境

     yum -y install yum-utils device-mapper-persistent-data lvm2
    
    • 1

    指定Docker镜像源

    默认下载Docker回去国外服务器下载,速度较慢,我们可以设置为阿里云镜像源,速度更快

     yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
    • 1

    安装Docker

     yum makecache fast
     yum -y install docker-ce
    
    • 1
    • 2

    启动Docker

     # 启动Docker服务
     systemctl start docker
     # 设置开机自启
     systemctl enable docker
     # 查看docker的版本
     docker -v
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    拉取Mysql5.7镜像,并创建一主一从两个容器

    拉取Mysql5.7镜像

    docker pull mysql:5.7
    
    • 1

    创建主备的配置和数据文件夹

    主节点配置目录为:/usr/local/docker/mysql/master/conf
    主节点data目录为:/usr/local/docker/mysql/master/data

    从节点配置目录为:/usr/local/docker/mysql/slave/conf
    从节点data目录为:/usr/local/docker/mysql/slave/data

    主节点配置文件

    cd /usr/local/docker/mysql/master/conf
    vim my.cnf
    
    • 1
    • 2

    配置内容为:

    [mysqld]
    ## 同一局域网内注意要唯一
    server-id=100
    ## 开启二进制日志功能,可以随便取(关键)
    log-bin=mysql-bin
    
    • 1
    • 2
    • 3
    • 4
    • 5

    从节点配置文件

    cd /usr/local/docker/mysql/slave/conf
    vim my.cnf
    
    • 1
    • 2

    配置内容为:

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

    创建主节点容器

    创建命令为:

    	docker run --name mysql-master -p 3307:3306 -v /usr/local/docker/mysql/master/data:/var/lib/mysql -v /usr/local/docker/mysql/master/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -d 2a0961b7de03
    
    • 1

    具体参数可以百度查询含义,其中2a0961b7de03是镜像id

    进入容器并进行设置

    docker exec -it mysql-master /bin/bash
    
    mysql -u root -p     
    
    CREATE USER 'slave'@'%' IDENTIFIED BY '123456';
    
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'slave'@'%';
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    查看master状态

    mysql> show master status;
    +------------------+----------+--------------+------------------+-------------------+
    | File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
    +------------------+----------+--------------+------------------+-------------------+
    | mysql-bin.000003 |     617 |              |                  |                   |
    +------------------+----------+--------------+------------------+-------------------+
    1 row in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    创建从节点容器

    创建命令为:

    	docker run --name mysql-slave -p 3308:3306 -v /usr/local/docker/mysql/slave/data:/var/lib/mysql -v /usr/local/docker/mysql/slave/conf:/etc/mysql/ -e MYSQL_ROOT_PASSWORD=123456 -d 2a0961b7de03
    
    • 1

    具体参数可以百度查询含义,其中2a0961b7de03是镜像id

    进入容器并进行设置

    docker exec -it mysql-slave /bin/bash
    
    mysql -u root -p     
    
    change master to master_host='127.0.0.1', master_port=3307, master_user='slave',master_password='123456',master_log_file='mysql-bin.000003', master_log_pos=617;
    
    start slave;
    
    mysql> show slave status\G;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 127.0.0.1
                      Master_User: slave
                      Master_Port: 3307
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000003
              Read_Master_Log_Pos: 1330
                   Relay_Log_File: edu-mysql-relay-bin.000002
                    Relay_Log_Pos: 1033
            Relay_Master_Log_File: mysql-bin.000003
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
                  Replicate_Do_DB:
              Replicate_Ignore_DB:
               Replicate_Do_Table:
           Replicate_Ignore_Table:
          Replicate_Wild_Do_Table:
      Replicate_Wild_Ignore_Table:
                       Last_Errno: 0
                       Last_Error:
                     Skip_Counter: 0
              Exec_Master_Log_Pos: 1330
                  Relay_Log_Space: 1244
                  Until_Condition: None
                   Until_Log_File:
                    Until_Log_Pos: 0
               Master_SSL_Allowed: No
               Master_SSL_CA_File:
               Master_SSL_CA_Path:
                  Master_SSL_Cert:
                Master_SSL_Cipher:
                   Master_SSL_Key:
            Seconds_Behind_Master: 0
    Master_SSL_Verify_Server_Cert: No
                    Last_IO_Errno: 0
                    Last_IO_Error:
                   Last_SQL_Errno: 0
                   Last_SQL_Error:
      Replicate_Ignore_Server_Ids:
                 Master_Server_Id: 100
                      Master_UUID: 943bb36c-f2b7-11ec-b975-0242ac110002
                 Master_Info_File: /var/lib/mysql/master.info
                        SQL_Delay: 0
              SQL_Remaining_Delay: NULL
          Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
               Master_Retry_Count: 86400
                      Master_Bind:
          Last_IO_Error_Timestamp:
         Last_SQL_Error_Timestamp:
                   Master_SSL_Crl:
               Master_SSL_Crlpath:
               Retrieved_Gtid_Set:
                Executed_Gtid_Set:
                    Auto_Position: 0
             Replicate_Rewrite_DB:
                     Channel_Name:
               Master_TLS_Version:
    1 row in set (0.00 sec)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    当 Slave_IO_State: Waiting for master to send event时,表示监听成功,在主节点的操作会同步到从节点。

  • 相关阅读:
    Spring Security实现用户认证四:使用JWT与Redis实现无状态认证
    现代企业数据架构
    Vue3学习(仅为了记录,参考意义不大)
    接口报错:The valid characters are defined in RFC 7230 and RFC 3986
    蓝桥杯备战15.完全二叉树的权值
    [附源码]java毕业设计网上点餐系统
    kubernetes之标签label
    基础数据结构之——【顺序表】(上)
    JAVA小游戏拼图
    idea 配置maven项目
  • 原文地址:https://blog.csdn.net/not_say/article/details/125426023