zoukankan      html  css  js  c++  java
  • 通过Docker安装配置Mysql主从节点

    • 以下docker相关的命令,需要在root用户环境下或通过sudo提升权限来进行操作。

    1.拉取Mysql5.7.15镜像到本地

    docker pull mysql:5.7.15
    
    # 如果只需要跑一个mysql实例,不做主从,那么执行以下命令即可,不用再做后面的参考步骤:
    docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v ~/test/mysql/data:/var/lib/mysql mysql:5.7.15
    
    # 然后用Shell或客户端软件通过配置(用户名: root 密码: 123456 IP:你的本机IP 端口:3306)来登陆
    

    2. 准备MYSQL配置文件

    • mysql5.7.15安装后的默认配置文件在/etc/mysql/my.cnf

    • 自定义的配置文件一般在/etc/mysql/conf.d路径下

    • 创建/test/mysql/master/conf/my.cnf和/test/mysql/slave/conf/my.cnf 文件

    • 用于配置主从:
      ~/test/mysql/master/conf/my.cnf

    [mysqld]
    server_id = 1
    log-bin= mysql-bin
    read-only=0
    
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    

    ~/test/mysql/slave/conf/my.cnf

    [mysqld]
    server_id = 2
    log-bin= mysql-bin
    read-only=1
    
    replicate-ignore-db=mysql
    replicate-ignore-db=sys
    replicate-ignore-db=information_schema
    replicate-ignore-db=performance_schema
    
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/
    

    3.Docker分别运行Mysql 主/从两个容器

    • 将mysql主节点运行起来
    mkdir -p ~/test/mysql/master/data
    docker run --name mysql-master -d -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 -v ~/test/mysql/master/data:/var/lib/mysql -v ~/test/mysql/master/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7.15
    
    • 运行参数说明
    docker run -d 
    --name mysql-master // 容器的名称设为mysql-master
    -p 3307:3306 // 将host的3307端口映射到容器的3306端口
    -v ~/test/mysql/master/conf/my.cnf:/etc/mysql/my.cnf //配置文件挂载
    -v ~/test/mysql/master/data:/var/lib/mysql // mysql容器内数据挂载到host的/data/mysql/data_master,用于持久化
    -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.15  // mysql的root登陆密码为123456
    
    • 将mysql从节点运行起来
    mkdir -p ~/test/mysql/slave/data
    docker run --name mysql-slave -d -p 3308:3306 -e MYSQL_ROOT_PASSWORD=123456 -v ~/test/mysql/slave/data:/var/lib/mysql -v ~/test/mysql/slave/conf/my.cnf:/etc/mysql/my.cnf mysql:5.7.15
    

    4.登陆MYSQL主节点配置同步信息

    • 登陆mysql
    # 方式一:192.168.1.xx 是你本机的内网ip
    mysql -u root -h 192.168.1.xx -P3307 -p123456
    
    # 方式二:进入docker设置:
    docker exec -it mysql-master bash
    mysql -u root -p123456
    
    • 在mysql client中执行
    mysql > grant replication slave on *.* to 'slave'@'%' identified by '123456';
    mysql > flush privileges;
    
    • 获取status
    mysql> show master statusG;
    *************************** 1. row ***************************
                 File: mysql-bin.000003
             Position: 582
         Binlog_Do_DB: 
     Binlog_Ignore_DB: 
    Executed_Gtid_Set: 
    1 row in set (0.00 sec)
    

    5.登陆MYSQL从节点配置同步信息

    • 登陆mysql
    # 192.168.1.xx 是你本机的内网ip
    mysql -u root -h 192.168.1.xx -P3308 -p123456
    
    • 在mysql client中执行
    mysql > change master to master_host='192.168.1.xx',master_port=3307,master_user='slave',master_password='123456',master_log_file='mysql-bin.000003',master_log_pos=0;
    
    mysql > start slave;
    
    • 获取status,得到类似如下的输出:
    mysql> show slave statusG;
    *************************** 1. row ***************************
                   Slave_IO_State: Waiting for master to send event
                      Master_Host: 192.168.1.xx
                      Master_User: slave
                      Master_Port: 3307
                    Connect_Retry: 60
                  Master_Log_File: mysql-bin.000003
              Read_Master_Log_Pos: 582
                   Relay_Log_File: 4254044df25b-relay-bin.000002
                    Relay_Log_Pos: 795
            Relay_Master_Log_File: mysql-bin.000003
                 Slave_IO_Running: Yes
                Slave_SQL_Running: Yes
    ...
    
    • 可以尝试在主mysql中新建数据库里建表操作下,然后在从节点上检查数据是否已经同步过来。
  • 相关阅读:
    浅谈通信网络(五)——TCP层
    浅谈通信网络(四)——报文转发(IP/MAC)
    浅谈通信网络(三)——TCP/IP协议
    《linux内核设计与实现》阅读笔记-进程与调度
    深入理解计算机系统 BombLab 实验报告
    汇编语言十二
    汇编语言十一
    汇编语言实验十
    汇编语言实验九
    汇编语言实验七
  • 原文地址:https://www.cnblogs.com/prince5460/p/11660014.html
Copyright © 2011-2022 走看看