首先,上一篇我们建立了一主一丛模式的MySQL读写分离 点击这里 那么接下来,我们搭建双主双从模式的读写分离,并且使用MyCat登录访问

原理:master1,master2,slave1,slave2 —> master1 和 slave1主从复制,master2 和 slave2主从复制,同时 master2 做为master1的从机,进行互备主从

当然,如果你之前没有搭建过主从复制,下面这两步骤可以不需要做

  • 首先需要清除当前之前设置的主从模式,删除testdb数据库
  • stop slave; reset master;(可以主机从机都执行)
    一、master1配置文件:
server-id=1 # 定义服务器唯一ID
log-bin=mysql-bin # 启用二进制日志
binlog-ignore-db=mysql # 忽略 mysql 库(如果配置了binlog-do-db的话可以不需要设置这个)
binlog-do-db=testdb # 设置需要主从复制的库
binlog_format=STATEMENT
log-slave-updates # 在做为从数据库的时候,有写入的操作也需要记录下二进制日志文件
auto-increment-increment=2 #表示自增长字段每次递增的量,指自增字段的起始值,其默认值是1,取值范围是1~65535
auto-increment-offset=1 # 表示自增字段从哪个数开始,一次递增多少,取值范围是 1~65535

二、master2配置文件:

server-id=3
log-bin=mysql-bin
binlog-ignore-db=mysql
binlog-do-db=testdb
binlog_format=STATEMENT
log-slave-updates
auto-increment-increment=2
auto-increment-offset=2 # 注意起始值不一样

三、slave1配置文件:

server-id=2
relay-log=mysql-relay

四、slave1配置文件:

server-id=4
relay-log=mysql-relay

五、双主机,双从机重启 mysql 服务
六、主机从机都必须关闭防火墙
七、在两台主机上建立账户并授权 slave

create user 'slave'@'%' identified by 'qkm19981013';
grant replication slave on *.* to 'slave'@'%';
flush privileges;

八、查看 master1 的主机状态,记录下binlog日志文件名和position点的值,在slave1上执行以下语句:

change master to master_host='192.168.0.12',master_port=3307,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156;

九、查看 master2 的主机状态,记录下binlog日志文件名和position点的值,在salve2上执行以下语句:

change master to master_host='192.168.0.12',master_port=3309,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156;

十、在slave1和slave2上开启主从复制

start slave;
show slave status\G;

十一、最后一步,搭建 master1和master2的互备主从,即master1复制master2,master2复制,master1:

master1设置master2为主机:
change master to master_host='192.168.0.12',master_port=3309,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156;
start slave;
show slave status\G;
master2设置master1为主机:
change master to master_host='192.168.0.12',master_port=3307,master_user='slave',master_password='qkm19981013',master_log_file='mysql-bin.000001',master_log_pos=156;
start slave;
show slave status\G;

最后的效果就是,我们在 master1上面建立 testdb 数据库之后,其他三个MySQL都同步建立 testdb 数据库了,接着再建立 mytbl 表,其他三个也都建立,往表中插入 insert into mytbl values(1, @@hostname); 之后出现了四个数据库的数据不一致,@@hostname是系统变量,每个系统不一样,所以不同,这也验证了bin-log默认的格式是复制 SQL 语句这一说法。

需要注意的一点

mysql 8.0 默认使用 caching_sha2_password 身份验证机制 —— 从原来的 mysql_native_password 更改为 caching_sha2_password。
从 5.7 升级 8.0 版本的不会改变现有用户的身份验证方法,但新用户会默认使用新的 caching_sha2_password 。
所以在 slave 连接 master的时候,show slave status\G; 可能会出现:authentication plugin 'caching_sha2_password’的异常,这是因为MySQL8.0之后改变了密码验证器,我们只需要把在主机建立的授权用户的密码验证器改成mysql_native_password就好了,语句如下:

ALTER USER 'slave'@'192.168.0.12' IDENTIFIED WITH mysql_native_password BY 'qkm19981013';

MyCat登录访问

balance 设置成 1,再添加上 写主机信息
<dataHost name="host1" maxCon="1000" minCon="10" balance="1" writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><heartbeat>select user()</heartbeat><writeHost host="hostM1" url="192.168.0.12:3307" user="root" password="qkm19981013"><readHost host="hostS1" url="192.168.0.12:3308" user="root" password="qkm19981013"/></writeHost><writeHost host="hostM2" url="192.168.0.12:3309" user="root" password="qkm19981013"><readHost host="hostS2" url="192.168.0.12:3310" user="root" password="qkm19981013"/></writeHost></dataHost>

MyCat学习:使用MySQL搭建主从复制(双主双从模式)相关推荐

  1. 高可用Mysql架构_Mysql主从复制、Mysql双主热备、Mysql双主双从、Mysql读写分离(Mycat中间件)、Mysql分库分表架构(Mycat中间件)的演变...

    [Mysql主从复制] 解决的问题 数据分布:比如一共150台机器,分别往电信.网通.移动各放50台,这样无论在哪个网络访问都很快.其次按照地域,比如国内国外,北方南方,这样地域性访问解决了. 负载均 ...

  2. MySQL 学习 - Replication集群 - 搭建 - 双主双从

    前言 我们这里说的是双主双从集群搭建,当然这个是看你实际业务,说白了一点 两个主节点双向同步,A集群挂掉时,B集群因为双向同步,立即可以开始工作,实现高可用 基本原理 具体流程 主库将变更写入到主库的 ...

  3. MySQL主从复制配置过程(双主双从模式)

    环境准备 为了搭建MySQL数据库主从复制(双主双从模式),准备一下四台服务器,并明确了各节点的角色及IP地址. 角色 IP地址 节点名称 Master1 192.168.67.140 CentOS0 ...

  4. mycat与mysql proxy_高可用Mysql架构_Mycat集群部署(HAProxy + 两台Mycat+Mysql双主双从)...

    既然大家都知道了Mysql分布式在大型网站架构中的作用,在这里就不再阐述.本片博客文章是基于我曾经搭建过的一个Mysql集群基础上实现的,实现过双主热备.读写分离.分库分表. 环境 centos6.4 ...

  5. MyCat实现MySQL读写分离(双主双从多库)

    在数据库集群架构中,主数据库负责处理事务性查询(写入操作),而从数据库只负责处理select查询(读操作),这样可以提高数据库整体读写性能.主数据库另外一个功能就是负责将数据变更同步到从数据库中. 读 ...

  6. Mycat实现Mysql的一主一从和双主双从读写分离

    前提是: 已经有了一主一从的Mysql服务架构. 已经安装启动好了mycat.并对mycat有一定了解. 实现 修改mycat的schema配置文件: <!--schema 标签用于定义 MyC ...

  7. 搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs(已解决)

    搭建Mysql双主双从报错The slave I/O thread stops because master and slave have equal MySQL server UUIDs 具体问题 ...

  8. MySQL学习四:MySQL双主双从

    文章目录 一.MySQL双主双从配置开启二进制日志 二.[配置每一台MySQL服务器的配置文件my.cnf](https://blog.csdn.net/huiguo_/article/details ...

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

    MySQL一主一从点击跳转 MySQL双主双从原理: master 1 为处理写请求: master 2 和 两个从机(slave1,slave2)负责读请求: 当master 1 宕机时,由mast ...

最新文章

  1. 面试官:兄弟,说说 ArrayList 和 LinkedList 有什么区别
  2. springboot + mysql + mybatis配置
  3. java通用编码规范考试_《java编码规范考试题答案》.doc
  4. java8自定义收集器_使用自定义收集器进行Java 8分组?
  5. leetcode29. 两数相除(位运算)
  6. Bash字符串处理(与Java对照) - 18.格式化字符串
  7. go validator使用教程
  8. Python实例讲解 -- wxpython 最小到托盘及欢迎图片
  9. 用开源代码如何建立网站_在开源上建立自举业务
  10. 引入方式之外部样式表(CSS、HTML)
  11. backup exec删除备份文件
  12. Arcgis 10.2 软件安装教程
  13. 北京航天大学考研计算机科学与技术分数线,北京航空航天大学计算机科学与技术考研...
  14. Java HotSpot(TM) 64-Bit Server VM warning: Sharing is only supported for boot loader classes解决办法
  15. 2月14,情人节双语送祝福!
  16. no more duplicates will be shown
  17. Java由今天的日期得到前几天的日期
  18. 从“蛙步”到“雁行”vivo的新周期与新常态
  19. TCP/ip 协议端口范围 详解
  20. nodejs websocket 实现简易聊天室功能

热门文章

  1. TCODE找相應的BAPI(主要是找到包PACKAGE)
  2. 关于库存 库存BAPI
  3. 【SAP】自定义权限对象
  4. SAP相关会计科目的设置OBYC
  5. SAP CRM市场营销表结构
  6. ALV中调用Excel inplace时没能传递数据实例解决
  7. 工业互联网企业如何做,才能“赋能万物,连接未来”?
  8. 瑞幸咖啡生,互联网咖啡生;数据死,互联网咖啡死
  9. 实验报告书 c语言,c语言实验报告书.doc
  10. java怎么获取服务器文件夹,java获取远程服务器的文件夹