首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >mycat双主双从主从,主从复制和读写分离实现

mycat双主双从主从,主从复制和读写分离实现

作者头像
大猫的Java笔记
发布2020-12-18 11:33:10
9540
发布2020-12-18 11:33:10
举报
文章被收录于专栏:大猫的Java笔记大猫的Java笔记

1.准备与介绍

由于前面前面已经介绍过了mycat的安装以及配置,这里就不在细说,如果下面对mycat的操作不是很清楚,可以看上一篇文章。

前面介绍了单机单从模式,但是却存在一些问题,并不能高可用。例如我们的写主机宕机了,此时由于备机的数据都从主机获取的,肯定会出问题的,会导致整个系统只能读不能写;而双主双从就能解决这个问题,用一个备用主机,只要主机宕机,备机马上变成主机。有点类似于太子这个角色,只是不同的是即使主机现在恢复也不会马上又切回他,而是变为备用主机;平时的时候备用主机也充当读的机器。

准备4台虚拟机,如下所示。

192.168.247.130(主)

192.168.247.132 (从)

192.168.247.133(备用主)

192.168.247.134(从)

2.配置双主双从复制模式

修改两台主机的配置如下,由于两台机器随时都可能上位,所以和单主单从的配置不同的就是增加log-slave-updates,auto-increment-increment以及auto-increment-offset的配置。

log-slave-update是有写操作的时候也更新日志。

auto-increment-increment是设置自增主键的起始值,防止主键冲突。

auto-increment-offset是设置自增主键每次加的值,也就是步长,防止主键冲突。

两台从机的配置如下,和之前单机单从的一样,只是需要注意的是修改serve_id不要重复了。

通过show master status命令查看两台主机的binlog文件,以及接入点。Binlog_Do_DB是在配置文件中指定的需要主从复制的库。Binlog_Ignore_DB表示不需要复制的库。

在两台主机上执行如下命令,分配一个主从复制的用户,用于进行主从复制。

GRANT REPLICATION SLAVE ON *.* TO 'slave'@'%' IDENTIFIED BY '123123';

然后在两个从库的mysql中执行如下命令,由于我们是双主双从,所以需要将ip指定对应的主机ip,每个从机指定不同的主机ip,然后指定用户名和密码,以及mysql-bin文件(上面已经查询出来了),以及接入点。

如果你之前配置过了,需要先stop slave,然后再reset slave方可重新配置。

通过start slave;启动两个从机,然后通过show slave status\G查看是否配置成功,当Slave_IO_Running和Slave_SQL_Running都为YES表示配置成功。

配置完两个从机后,开始配置两个主机互相复制,为什么要配置主机互相复制呢?原因是我们这的双主双从并不是双写的,也就是实际上写入的时候只有一个。还有如果其中一个主机宕机,肯定新上位的主机数据要一直的才行。

同样配置完成后使用start slave 然后通过show slave status\G查看状态是否都为yes,为yes表示成功。

此时双主双从的主从模式已经搭建完毕,当在主机上插入一条数据,此时可以看到其余3台上面都有了相应的数据

2.双主双从读写分离

下面是实现读写分离,借助mycat,mycat的安装和配置可以详细参考上一篇文章。

打开mycat的配置文件schema.xml由于是两个主机两个从机,所以配置好两个主机从机的用户名和密码以及ip端口。同时设置balance为1,switchType为1,writeType为0,由于默认就是0所以不需要更改。

blance介绍如下

balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的 writeHost 上。

balance="1",全部的 readHost 与 stand by writeHost 参与 select 语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且 M1 与 M2 互为主备),正常情况下,M2,S1,S2 都参与 select 语句的负载均衡。

balance="2",所有读操作都随机的在 writeHost、readhost 上分发。

balance="3",所有读请求随机的分发到 readhost 执行,writerHost 不负担读压力

switchType介绍如下

1 默认值,自动切换。

-1 表示不自动切换#

2 基于 MySQL 主从同步的状态决定是否切换。

writeType介绍如下

writeType="0": 所有写操作发送到配置的第一个writeHost,第一个挂了切到还生存的第二个

writeType="1",所有写操作都随机的发送到配置的 writeHost,1.5 以后废弃不推荐。

配置完毕以后进入到mycat的安装目录的bin下面执行./mycat启动mycat

此时查询数据可以看到从不同的服务器来的数据了

测试一下如果主机宕机,将第一台130ip的mysql进行关闭,查看能否插入数据,可以看到还是可以插入说明备用主机已经进行切换了。

再此重新启动130的mysql,可以发现现在的查询走130,132,134了,说明130已经变成了备用主机。

最后如果mycat配置已经安装等不太明白,可以先看一下上一篇文章。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大猫的Java笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档