• [202209]mysql8.0 双主集群搭建 亲测可用


    [202209]mysql8.0 双主集群搭建 亲测可用

    我两个 mysql 都是用 Docker 部署,所以配置文件和你们会有些不同,但问题不大,可以自己上网找对应的路径。

    • 主机信息
      • A:192.168.1.10
      • B:192.168.1.11

    第一步:配置文件

    主机:/etc/my.cnf

    • 我们要改的只有两个地方:
    • 其他地方直接复制就可以了。
      • server-id:每台服务器都要有一个不同的ID
      • auto_increment_offset:同上

    改完需要重启Mysq改完需要重启Mysq改完需要重启Mysq

    #事务隔离级别,默认为可重复读,mysql默认可重复读级别(此级别下可能参数很多间隙锁,影响性能)
    transaction_isolation = READ-COMMITTED
    
    # ------------------集群--------------
    # 每台服务器ID为集群内唯一, 例如1,2,3
    # A
    server-id = 1
    # B
    #server-id = 2
    
    # 开启binlog,数据同步的关键
    log-bin=on
    
    # 步进值auto_imcrement 。一般有n台主mysql就填n
    auto_increment_increment=2
    
    # 自增起始位置,一般填写第n台主机mysql.此时为第一台主
    auto_increment_offset=1
    #auto_increment_offset=2
    
    #忽略mysql库,可以不填写
    #binlog-ignore=mysql
    
    #忽略information_schema库,一般不填写
    #binlog-ignore=infomation_schema
    
    #指定同步的数据库,不填写则默认所有的数据库
    #replicate-do-db=test_db
    
    # 从库连接
    default_authentication_plugin=mysql_native_password
    
    # 将复制事件写入binlog,一台服务器既做主库又做从库此选项必须要开启
    log-slave-updates = true 
    
    # 主从复制模式开启
    gtid_mode=on
    enforce_gtid_consistency=1
    
    • 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

    第二步:创建用户

    单独创建一个给 主从 用的用户,毕竟你总不能用root吧?安全隐患太大了

    直接复制就可以了,如果报错就分开执行,不要一起执行

    CREATE USER share@'%' IDENTIFIED BY '123456';
    
    #分配权限
    GRANT REPLICATION SLAVE ON *.* to share@'%';
    
    • 1
    • 2
    • 3
    • 4

    第三步:配置节点

    我们先在两边都执行一次:reset master;

    然后在执行:

    • 这里我们要改的只有三个地方
      • SOURCE_HOST:对方主机IP
      • SOURCE_USER:用户
      • SOURCE_PASSWORD:密码

    A节点

    change master to SOURCE_HOST='192.168.1.11',SOURCE_PORT=3306,SOURCE_USER='share',SOURCE_PASSWORD='123456',SOURCE_AUTO_POSITION=1;
    START REPLICA;
    
    • 1
    • 2

    B节点

    change master to SOURCE_HOST='192.168.1.10',SOURCE_PORT=3306,SOURCE_USER='share',SOURCE_PASSWORD='123456',SOURCE_AUTO_POSITION=1;
    START REPLICA;
    
    • 1
    • 2

    最后

    我们先在两边都执行一次:reset master;

    查看是否成功

    SHOW REPLICA STATUS;
    
    • 1

    找到:Last_IO_Error字段

    这样就算成功了。

    error connecting to master 'share@192.168.1.10:3306' - retry-time: 60 retries: 1 message: Can't connect to MySQL server on '192.168.1.10:3306' (111)
    
    • 1

    踩坑:

    • 重置节点
      • 如果提示:The server is not configured as slave; fix in config file or with CHANGE MASTER TO 。 时执行
    reset master;
    
    • 1
    • UUID相同
      • Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; thes

    查看文件 mysql/data/auto.cnf,就是他的UUID和其他相同了,随便改个数字和字母就可以了。

  • 相关阅读:
    离线数仓 (三) --------- 用户行为数据生成模块
    JavaScript涉及二进制的转换
    笔试强训——day04
    【物理应用】水下浮动风力涡轮机的尾流诱导动态模拟风场附matlab代码
    如何假装你懂机器学习?
    Rust学习 | Rustlings通关记录与题解
    【每日一题】咒语和药水的成功对数
    汇编语言快速回顾(以x86_64为例)
    SpringBoot里全局 非expcetion异常处理 非WebFlex
    JDK核心JAVA源码解析(8) - 自动封箱拆箱与效率的思考
  • 原文地址:https://blog.csdn.net/qq_31755699/article/details/126678336