• Mysql5.7主从复制搭建


    注意不适用Mysql8

    Docker搭建Mysql主从复制

    docker run -p 3307:3306 --name mysql-master \
    -v /usr/local/develop/mysql-master/log:/var/log/mysql \
    -v /usr/local/develop/mysql-master/data:/var/lib/mysql \
    -v /usr/local/develop/mysql-master/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

    如果没有mysql5.7会自动下载

    进入配置文件目录

    cd /usr/local/develop/mysql-master/conf

    创建并编辑配置文件

    vim my.cnf

    [mysqld]

    # 设置server_id,同一局域网中需要唯一,对复制架构至关重要
    server_id=101

    # 指定不需要同步到从库的数据库名称,一般系统数据库mysql不需要同步
    binlog-ignore-db=mysql

    # 开启二进制日志功能,是MySQL复制的基础
    log-bin=mall-mysql-bin

    # 设置二进制日志使用的内存大小,用于缓存事务,提高性能
    binlog_cache_size=1M

    # 设置使用的二进制日志格式,推荐使用"row",因为它是最安全的,能准确复制每一行的变更
    # mixed模式下,MySQL会根据操作类型自动选择statement模式还是row模式
    binlog_format=mixed

    # 二进制日志过期清理时间,设置为7天。0表示不自动清理,不推荐这样做,因为会积累大量日志
    expire_logs_days=7

    # 跳过主从复制中遇到的指定类型的错误,避免从库复制中断
    # 注意:过度使用该设置可能会导致数据不一致,应谨慎使用
    slave_skip_errors=1062
     

    修改完配置  重启mysql docker容器实例

    docker restart mysql-master

    进入容器

    docker exec -it mysql-master /bin/bash

    mysql -uroot -p123456

    创建数据同步用户 并赋予权限

    CREATE USER 'replica'@'%' IDENTIFIED BY '123456';
    GRANT REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'replica'@'%';

    刷新

    FLUSH PRIVILEGES;(不刷也可以)
     

    在宿主机上搭建从服务器

    docker run -p 3308:3306 --name mysql-slave \
    -v /usr/local/develop/mysql-slave/log:/var/log/mysql \
    -v /usr/local/develop/mysql-slave/data:/var/lib/mysql \
    -v /usr/local/develop/mysql-slave/conf:/etc/mysql/conf.d \
    -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

    进入

    cd /usr/local/develop/mysql-slave/conf

    创建并编辑从数据库配置

    vim my.cnf

    [mysqld]

    # 设置server_id,同一局域网中需要唯一,对复制架构至关重要
    server_id=102

    # 指定不需要同步到从库的数据库名称,一般系统数据库mysql不需要同步
    binlog-ignore-db=mysql

    # 开启二进制日志功能,以备Slave作为其他数据库实例的Master时使用
    log-bin=mall-mysql-slave1-bin

    # 设置二进制日志使用的内存大小,用于缓存事务,提高性能
    binlog_cache_size=1M

    # 设置使用的二进制日志格式,推荐使用"row",因为它是最安全的,能准确复制每一行的变更
    # mixed模式下,MySQL会根据操作类型自动选择statement模式还是row模式
    binlog_format=mixed

    # 二进制日志过期清理时间,设置为7天。0表示不自动清理,不推荐这样做,因为会积累大量日志
    expire_logs_days=7

    # 跳过主从复制中遇到的指定类型的错误,避免从库复制中断
    # 注意:过度使用该设置可能会导致数据不一致,应谨慎使用
    slave_skip_errors=1062

    # 配置中继日志
    relay_log=mall-mysql-relay-bin

    # 表示slave将复制事件写进自己的二进制日志
    log_slave_updates=1

    # 将slave设置为只读(具有SUPER权限的用户除外)
    read_only=1
     

    修改完配置  重启mysql docker容器实例

    docker restart mysql-slave

    在主数据库中查看主从同步状态

    进入主库

    docker exec -it mysql-master /bin/bash

    mysql -uroot -p123456

    show master status;

    返回宿主机

    在从数据库配置主从复制  查看主从状态

    docker exec -it mysql-slave /bin/bash

    mysql -uroot -p

    123456

    在从数据库配置主从复制

    change master to master_host="宿主机IP",master_user='replica',master_password='123456',master_port=3307,master_log_file='mall-mysql-bin.000001',master_log_pos=714,master_connect_retry=30 因为我这里是同一台ECS服务器  所以用下面这个

    CHANGE MASTER TO 
      MASTER_HOST = '172.17.0.2',
      MASTER_USER = 'replica',
      MASTER_PASSWORD = '123456',
      MASTER_PORT = 3306,
      MASTER_LOG_FILE = 'mall-mysql-bin.000001',
      MASTER_LOG_POS = 621,
      MASTER_CONNECT_RETRY = 30;
     


    在从数据库查看主从同步状态

    show slave status \G;   \G可加可不加  加了看的清楚点

    在从数据库开启主从同步

    start slave;

    查看从数据库状态发现是否同步

    show slave status \G;

     如果不成功 用这个命令停掉  检查配置    STOP SLAVE;

    测试  退出从库

    进入主库

    docker exec -it mysql-master /bin/bash

    mysql -uroot -p123456

    查看从库

    docker exec -it mysql-slave /bin/bash

    mysql -uroot -p123456

    总结:其实没必要配置外部端口  如果是单台服务器的话

    注意mysql5.7中文乱码

  • 相关阅读:
    Unity——脚本与导航系统
    IP地址定位的基本原理
    Sublime和iTerm中使用FiraCode编程连字等宽字体的配置
    【spark】Exception in thread “main“ ExitCodeException exitCode=-1073741701
    精通机器学习必须掌握的20大算法
    Java8 Stream 的这些知识,你了解吗
    Zookeeper - 节点监听
    播放全景视频【一】:用unity Video Player视频播放器来播放360全景视频
    leetcode 241. 为运算表达式设计优先级
    Java版本+企业电子招投标系统源代码+支持二开+招投标系统+中小型企业采购供应商招投标平台
  • 原文地址:https://blog.csdn.net/tiantiantbtb/article/details/136284587