MySQL之主从复制(双主双从)

17 篇文章 0 订阅

MySQL一主一从点击跳转

MySQL双主双从原理:

master 1 为处理写请求;
master 2 和 两个从机(slave1,slave2)负责读请求;
当master 1 宕机时,由master 2 负责写请求,两个从机负责读请求;
master 1 和 master 2 为各自的备机
  • 首先需要准备 4 台机器,虚拟机克隆可以参考该文章
    • 同时启动 4 台虚拟机后,MyCat 启动可能变慢,log日志会报如下错误
      Startup failed: Timed out waiting for a signal from the JVM.
      
      到设置中配置启动超时时间,命令:
      vim conf/wrapper.conf
      
      # 启动超时时间
      wrapper.startup.timeout=120
      
      再次启动(启动过程可能较慢,具体可以查看日志),并测试
      mysql -uroot -p -h192.168.171.101 -P8066
      
      四台虚拟机信息:
      在这里插入图片描述
  • 配置MySQL
    • master 1

      #主服务器唯一id
      server-id=1
      #启动二进制日志
      log-bin=mysql-bin
      #设置不需要复制的数据库(可设置多个)
      binlog-ignore-db=information_schema
      binlog-ignore-db=mycat
      binlog-ignore-db=mysql
      binlog-ignore-db=performance_schema
      binlog-ignore-db=sys
      #设置需要复制的数据库
      binlog-do-db=mycat_01
      #设置binlog格式
      binlog_format=STATEMENT
      
      #以下为 双主双从 额外的配置
      #表示在作为从机的时候,有写操作的时候也要更新二进制日志
      log-slave-updates
      #表示每次自增的量,默认是 1 ,因为是双主双从,所以需要更改为 2 避免重复,范围:1 ~ 65535
      auto-increment-increment=2
      #表示自增起始数字,该机器起始为1 自增后为 1,3,5,7,9....
      auto-increment-offset=1
      


      红框内为 双主双从 配置

    • master 2

      #主服务器唯一id
      server-id=3
      #启动二进制日志
      log-bin=mysql-bin
      #设置不需要复制的数据库(可设置多个)
      binlog-ignore-db=information_schema
      binlog-ignore-db=mycat
      binlog-ignore-db=mysql
      binlog-ignore-db=performance_schema
      binlog-ignore-db=sys
      #设置需要复制的数据库
      binlog-do-db=mycat_01
      #设置binlog格式
      binlog_format=STATEMENT
      
      #以下为 双主双从 额外的配置
      #表示在作为从机的时候,有写操作的时候也要更新二进制日志
      log-slave-updates
      #表示每次自增的量,默认是 1 ,因为是双主双从,所以需要更改为 2 避免重复,范围:1 ~ 65535
      auto-increment-increment=2
      #表示自增起始数字,该机器起始为1 自增后为 2,4,6,8,10....
      auto-increment-offset=2
      

      在这里插入图片描述
      红框内是与 maser 1 的区别

    • slave 1 和 slave 2 ,只有server-id不同

      #从服务器唯一id
      server-id=2
      #启动中继日志
      relay-log=mysql-relay
      

      在这里插入图片描述
      重启 4 台mysql,并查看mysql状态,确保启动成功,命令:

      systemctl restart mysqld
      systemctl status mysqld
      
    • 在从机上配置需要复制的主机
      slave 1 复制 master 1
      slave 2 复制 master 2
      查看主机状态,命令:

      show master status \G
      

      查看主机状态后,不要进行sql操作,需保证从机接入点与各自主机一致
      在这里插入图片描述

      复制主机,命令:

      #复制主机的命令 
      CHANGE MASTER TO MASTER_HOST='主机的IP地址', 
      MASTER_USER='slave1', MASTER_PASSWORD='123456', 
      MASTER_LOG_FILE='mysql-bin.具体数字',
      MASTER_LOG_POS=具体值;
      

      在这里插入图片描述
      启动slave,命令:

      start slave;
      

      查看两台 slave 状态,命令:

      show slave status \G
      

      在这里插入图片描述
      确保都是 Yes,如果不是,查看黄色框内报错原因。
      停止从复制,命令:

      stop slave;
      

      重新配置 主,命令:

      reset master;
      
    • 配置 master 1 和 master 2 互为主备
      master 1 复制 master 2
      master 2 复制 master 1

      在这里插入图片描述
      开启 slave 并查看状态,确保都是 Yes


  • 测试
    • 创建 mycat_01 数据库
      在这里插入图片描述
    • 创建表 user
      *在这里插入图片描述
    • 插入数据
      在这里插入图片描述
      停掉 master 1 ,从master 2 写入,两个 slave 依然进行复制,当 master 1 重启后,会自动更新matser 2 改动数据。

其他章节 -> 跳转

end...
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

s_wei_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值