zoukankan      html  css  js  c++  java
  • Docker安装mysql5.7并且配置主从复制



    原文地址:
    CSDN:SophiaLeo:Docker安装mysql5.7并且配置主从复制



    一、拉取mysql镜像

    docker pull mysql:5.7 
    

    二、创建文件docker.cnf

    我采用的方式,是使用虚拟机,搭建docker环境,在Docker李新建了两个数据库,端口分别为3307和3308。其中3307为模拟master,3308为模拟slave。

    2.1 mysql主机(192.168.21.55:3307)

    2.1.1 创建文件夹

    原教程方式是这样

    mkdir /usr/local/mysql
    cd mysql/
    mkdir conf data
    

    我的实现方式是这样,直接合并了第一步,直接通过docker构建,相较于他的操作,更为简单粗暴。

    docker run -p 3307:3306 --name mysql_3308 -v /root/mysql/mysql_3308/conf:/etc/mysql/conf.d -v /root/mysql/mysql_3308/logs:/logs -v /root/mysql/mysql_3308/data:/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7 --lower_case_table_names=1
    

    2.1.2 创建docker.cnf

    vim /usr/local/mysql/conf/docker.cnf
    
    • 具体添加:
    [mysqld]
    server-id=1
    log-bin=master-bin  #只是读写,就只要主库配置即可.如果要做主从切换,那么主库和从库都需要开启.
    skip-host-cache
    skip-name-resolve
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    [mysql]  
    default-character-set=utf8
    [client]  
    default-character-set=utf8
    

    2.2 mysql从机(192.168.21.55:3308)

    2.2.1 创建文件夹

    mkdir /usr/local/mysql
    cd mysql/
    mkdir conf data
    

    2.2.2 创建docker.cnf

    vim /usr/local/mysql/conf/docker.cnf
    
    • 具体添加:
    [mysqld]
    server-id=2
    log-bin=master-bin 
    skip-host-cache
    skip-name-resolve
    collation-server = utf8_unicode_ci
    init-connect='SET NAMES utf8'
    character-set-server = utf8
    [mysql]  
    default-character-set=utf8
    [client]  
    default-character-set=utf8
    

    三、创建容器并运行

    3.1 放行端口号

    此步操作,我并没有放行,因为本地虚拟机环境端口号都是开放的。

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    firewall-cmd --reload
    

    3.2 mysql主机

    docker run --name mysqlmaster -p 3307:3306 -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root --privileged=true -d mysql:5.7
    

    3.3 mysql从机

    docker run   --name mysqlslave  -p 3308:3306  -v /usr/local/mysql/conf:/etc/mysql/conf.d -v /usr/local/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root  --privileged=true -d mysql:5.7
    

    四、开启主从复制

    4.1 mysql主机

    • 进入Mysql容器:
    docker exec -it mysqlmaster /bin/bash
    
    • 启动mysql
    mysql -uroot -proot
    
    • 创建用户
    create user  'lhl'@'%'  identified by 'root';
    
    • 权限
    grant replication slave on *.* to 'lhl'@'%';
    
    • 刷新权限
    flush privileges;
    
    • 查看状态
    show master status;
    

    在这里插入图片描述

    4.2 mysql从机

    • 进入mysql容器
    docker exec -it mysqlslave /bin/bash 
    
    • 启动mysql
    mysql -uroot -proot
    
    • 执行主从
    change master to master_host='192.168.21.55',master_port=3307,master_user='lhl',master_password='root',master_log_file='master-bin.000003',master_log_pos=745;
    
    • 如果报错,执行下面命令并再次执行上面的命令
     stop slave;
    
    • 开启复制
    start slave;
    
    • 查看主从是否成功
    show slave status G;
    

    以下两个都为yes就代表成功了!!!!

      Slave_IO_Running: Yes 
      Slave_SQL_Running: Yes 
      说明主从成功
    

    在这里插入图片描述

    PS:若直接按其教程走,应该是没有问题,能够直接成功的!感谢原文博主的分享!

  • 相关阅读:
    C++多线程二
    C++多线程一
    定义抽象数据类型
    泛型函数
    关联容器(map):支持高效查找的容器,一种键值对的集合。
    字符串拆成单词的另一种实现
    将字符串拆成单词,并算最长的长度
    重载,排序,集合实例
    程序调用动态链接库中的方法,位图,类
    用bosybox制作文件系统
  • 原文地址:https://www.cnblogs.com/aixing/p/13327250.html
Copyright © 2011-2022 走看看