MyCat数据库集群

MyCat数据库集群

为什么要用MyCat?
	在项目开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,对数据库的自身进行优化也是非常重要的。

	主从、分表分库等都是系统发展遇到的问题。而Mycat是一个广受好评的数据库中间件。 
什么是MyCat:
一、MyCat简单介绍 
	MyCat是一个开源的分布式数据库系统,前端用户可以把它看作是一个数据库代理(类似于Mysql Proxy),
	其核心功能是分表分库,即将一个大表分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

	MyCat发展到目前的版本,已经不是一个单纯的MySQL代理了,它的后端还可以支持MySQL、SQL Server、Oracle、DB2、PostgreSQL、MongoDB等数据库。
	
	Mycat的主要作用为:能满足数据库数据的大量存储,大大提高了数据库查询性能;
MyCat的核心技术:(分库分表)
分库分表解释一下:

	数据库分片是指:通过某种特定的条件,将我们存放在一个数据库中的数据分散存放在不同的多个数据库(主机)中,这样来达到分散单台mysql服务器的负载。
	根据切片规则,可分为两种切片模式:垂直切分和水平切分。
     
	垂直拆分:是将单表,或者是有关联的表放在一个数据库,把原有的一个数据库拆分成若干个数据库。
	   
	水平拆分:是将一个很大的表,通过取模,按照日期范围等等拆分成若干个小表
	   
-----------------------------------------------------
分库分表中的垂直分库方案会带来哪些问题?

	答:单表的数据量还是会很大。 
	
-----------------------------------------------------

	
Mycat工作原理
	Mycat的原理并不复杂。
	Mycat的原理中最重要的一个动词是“拦截”,它首先拦截了用户发送过来的SQL语句,然后对SQL语句做了一些特定的分析:如分片分析、路由分析、读写分离分析、缓存分析等,然后将此SQL发往后端的真实mysql数据库,并将真实的mysql数据库返回的结果做适当的处理,最终再返回给用户。
	
	即,相当于是一个mysql代理;
Mycat的架构其实很好理解,Mycat是数据库代理中间件,Mycat后面就是物理数据库。

和Web服务器的Nginx类似。对于使用者来说,访问的都是Mycat,不会接触到后端的数据库。

如下案例是做一个主从、读写分离,简单分库分表的示例。结构如下图:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5J1ZIZ3Z-1578409192599)(mdpic/907596-20180725150725127-464919488.png)]

四、Mycat应用场景

Mycat发展到现在,适用的场景已经很丰富,而且不断有新用户给出新的创新性的方案,以下是几个典型的应用场景:

 -   单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;
 -   分表分库,对于超过1000万的表进行分片,最大支持1000亿的单表分片;
利用MyCAT实现MySQL的读写分离
	Mycat实现Mysql主从复制,其中写操作在master主节点上执行,包括insert,delete,update 语句操作;
	读操作在slave节点上执行,即只有select语句操作,
	
	其他操作均由主master的二进制文件决定;
	
	MyCat支持多主多从。

ate 语句操作;
读操作在slave节点上执行,即只有select语句操作,

其他操作均由主master的二进制文件决定;

MyCat支持多主多从。



 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值