Mycat实现MySQL读写分离

本文详细介绍了MySQL读写分离的原理和中间件,重点讲解了Mycat在读写分离中的作用和配置过程,包括Mycat的应用场景、优点,以及Mycat的安装和配置,最后通过测试验证了Mycat实现的读写分离效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


引言:本文将介绍使用Mycat中间件实现MySQL的读写分离

一.MySQL 读写分离的概述

1.1为什么要读写分离

① 面对越来越大的访问压力,单台的服务器的性能成为瓶颈,需要分担负载
② 主从只负责各自的写和读,极大程度的缓解 X 锁和S 锁争用
③ 从库可配置myisam 引擎,提升查询性能以及节约系统开销
④ 增加冗余,提高可用性

1.2读写分离工作原理

基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT 查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库

1.3常见的中间件

① Cobar:
阿里巴巴B2B 开发的关系型分布式系统,管理将近 3000 个MySQL 实例。 在阿里经受住了考验, 后面由于作者的走开的原因 cobar 没有人维护 了,阿里也开发了 tddl 替代cobar。

② MyCAT:
社区爱好者在阿里 cobar 基础上进行二次开发,解决了 cobar 当时存 在的一些问题,并且加入了许多新的功能在其中。目前 MyCAT 社区活 跃度很高,目前已经有一些公司在使用 MyCAT。总体来说支持度比 较高,也会一直维护下去,

③ OneProxy:
数据库界大牛,前支付宝数据库团队领导楼总开发,基于 mysql 官方 的proxy 思想利用c 进行开发的,OneProxy 是一款商业收费的中间件, 楼总舍去了一些功能点,专注在性能和稳定性上。有朋友测试过说在 高并发下很稳定。

④ Vitess:
这个中间件是Youtube 生产在使用的,但是架构很复杂。 与以往中间件不同,使用 Vitess 应用改动比较大要 使用他提供语言的API 接口,我们可以借鉴他其中的一些设计思想。

⑤ Kingshard:
Kingshard 是前 360Atlas 中间件开发团队的陈菲利用业务时间 用go 语言开发的,目前参与开发的人员有 3 个左右, 目前来看还不是成熟可以使用的产品,需要在不断完善。

⑥ Atlas:

360 团队基于mysql proxy 把 lua 用C 改写。原有版本是支持分表, 目前已经放出了分库分表版本。在网上看到一些朋友经常说在高并 发下会经常挂掉,如果大家要使用需要提前做好测试。

⑦ MaxScale 与MySQL Route:
这两个中间件都算是官方的,MaxScale 是mariadb (MySQL 原作者维护的一个版本)研发的,目前版本不支持分库分表。MySQL Route 是现在MySQL 官方 Oracle 公司发布出来的一个中间件

二.Mycat简介

2.1Mycat应用场景

  1. Mycat适用的场景很丰富,以下是几个典型的应用场景
  • 单纯的读写分离,此时配置最为简单,支持读写分离,主从切换

  • 分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片

  • 多租户应用,每个应用一个库,但应用程序只连接Mycat,从而不改造程序本身,实现多租户化报表系统,借助于Mycat的分表能力,处理大规模报表的统计

  • 替代Hbase,分析大数据,作为海量数据实时查询的一种简单有效方案,比如100亿条频繁查询的记录需要在3秒内查询出来结果,除了基于主键的查询,还可能存在范围查询或其他属性查询,此时Mycat可能是最简单有效的选择

  1. Mycat长期路线图
  • 强化分布式数据库中间件的方面的功能,使之具备丰富的插件、强大的数据库智能优化功能、全面的系统监控能力、以及方便的数据运维工具,实现在线数据扩容、迁移等高级功能进一步挺进大数据计算领域,深度结合Spark Stream和Storm等分布式实时流引擎,能够完成快速的巨表关联、排序、分组聚合等 OLAP方向的能力,并集成一些热门常用的实时分析算法,让工程师以及DBA们更容易用Mycat实现一些高级数据分析处理功能不断强化Mycat开源社区的技术水平,吸引更多的IT技术专家,使得Mycat社区成为中国的Apache,并将Mycat推到Apache基金会,成为国内顶尖开源项目,最终能够让一部分志愿者成为专职的Mycat开发者,荣耀跟实力一起提升

2.2Mycat有点

  • 一个彻底开源的,面向企业应用开发的大数据库集群

  • 支持事务、ACID、可以替代MySQL的加强版数据库

  • 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群

  • 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server

  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

  • 一个新颖的数据库中间件产品

三.Mycat实现MySQL读写分离

在这里插入图片描述

注:读写分离是建立在主从复制之上的

3.1master数据库配置

#/etc/my.cnf开启二进制日志
server-id = 1
log-bin=mysql-bin
binlog_format = MIXED
log-slave-updates=true

systemctl restart mysqld
#登入数据库,添加用户授权
grant replication slave on *.* to 'myslave'@'192.168.48.%' identified by '123456';
flush privileges;
show master status;

在这里插入图片描述
在这里插入图片描述

3.2slave数据库配置

#/etc/my.cnf
server-id = 2
relay-log=relay-log-bin
relay-log-index=slave-relay-bin.index
relay_log_recovery = 1

systemctl restart mysqld
#登入数据库,更改授权,添加主数据库二进制日志及偏移量
change master to master_host='192.168.48.3',master_user='myslave',master_password='123456',master_log_file='master-bin-000001',master_log_pos=154;
 
start slave;
#若启动报错,执行如下操作,并再次启动slave
reset slave;
show slave status\G;

在这里插入图片描述
在这里插入图片描述
验证主从复制
在这里插入图片描述

3.3Mycat安装

3.3.1服务安装

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
#查看系统是否安装Java环境,若无,需自行安装JDK1.8
java -versio
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值