zoukankan      html  css  js  c++  java
  • 搭建主从复制mysql(docker中)

    1、搭建主库

    #创建目录
    mkdir /data/mysql/master01
    如果不存在:mkdir /data/mysql/master01 -p
    #进入master01目录
    cd /data/mysql/master01

    #创建conf和data文件夹 用来存放配置和数据
    mkdir conf data

    #给文件夹授权
    chmod 777 * -R

    #创建配置文件
    cd /data/mysql/master01/conf
    vim my.cnf

    #输入如下内容
    [mysqld]
    #开启二进制日志

    log-bin=mysql-bin
    #服务id,不可重复
    server-id=1
    #创建并运行容器
    docker run --name=mysql-master01 -v /data/mysql/master01/data:/var/lib/mysql -v /data/mysql/master01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql:5.7
    #创建同步账户以及授权 账户wlwpass 密码wlwpass

     create user 'wlwpass'@'%' identified by 'wlwpass';






    flush privileges;

    
    

     解决错误:

    修改my.conf文件

    vim /data/mysql/master01/conf/my.conf

    文件后添加:

    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    #重启mysql服务并打印日志

    docker restart mysql-master01 && docker logs -f mysql-master01

    再重新flush privileges;

    但是我还是报错,于是:

    show variables like '%sql_mode%';
    set sql_mode=(select replace(@@sql_mode,'ONLY_FULL_GROUP_BY',''));

     

     show master status;

     发现File和Position为空值

     发现日志没打开

    vim /data/mysql/master01/conf/my.conf

    log-bin配置项表示binlog的base name,产生的日志文件名称类似,mysql-bin.00001,mysql-bin.00002,mysql-bin.00003。

    重启mysql

    如果使用了GTID(global transaction ID),Executed_Gtid_Set表示已经在这个master上执行的GTID集合,与这个server上的系统变量gtid_executed 含义相同。

    如果该server是slave,则执行show slave status中是输出的对应列Executed_Gtid_Set,含义也相同。


    以上还是解决不了打开不了日志,用下面方法

    docker exec mysql-master01 bash -c "echo 'log-bin=/var/lib/mysql/mysql-bin' >> /etc/mysql/mysql.conf.d/mysqld.cnf"
    docker exec mysql-master01 bash -c "echo 'server-id=1' >> /etc/mysql/mysql.conf.d/mysqld.cnf"

     成功!!!!!!!

    #查看二进制日志相关的配置项 show global variables like 'binlog%';

     #查看server相关的配置项 show global variables like 'server%';

     主库配置结束


    搭建从库
    #创建目录
    mkdir /data/mysql/slave01
    cd /data/mysql/slave01
    mkdir conf data
    chmod 777 * -R

    #创建配置文件
    cd /data/mysql/slave01/conf
    vim my.cnf
    #输入如下内容
    [mysqld]
    server-id=2 #服务id,不可重复
    sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO ,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'

    docker run --name=mysql-slave01 -v /data/mysql/slave01/data:/var/lib/mysql -v
    /data/mysql/slave01/conf:/etc/my.cnf.d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=iot@2020
    mysql:5.7

    主的配置:

     在从中配置映射:

    CHANGE MASTER TO
    master_host='10.2.10.67',
    master_user='wlwpass',
    master_password='wlwpass',
    master_port=3306,
    master_log_file='mysql-bin.000001',
    master_log_pos=154;

  • 相关阅读:
    POJ 1015 Jury Compromise【DP】
    POJ 1661 Help Jimmy【DP】
    HDU 1074 Doing Homework【状态压缩DP】
    HDU 1024 Max Sum Plus Plus【DP,最大m子段和】
    占坑补题。。最近占的坑有点多。。。
    Codeforces 659F Polycarp and Hay【BFS】
    Codeforces 659E New Reform【DFS】
    Codeforces 659D Bicycle Race【计算几何】
    廖大python实战项目第四天
    廖大python实战项目第三天
  • 原文地址:https://www.cnblogs.com/su-ke/p/13805110.html
Copyright © 2011-2022 走看看