Mycat

数据库中间件-Mycat

大家好,我叫HarryLee,今天我来和大家总结一下,昨天我们所学的知识点。昨天老刘给大家讲了Mycat这个数据库的一个中间件。Mycat是由淘宝研发开源的,淘宝现在用的是tddl(头都大了),Mycat这个中间件的来源,是因为前期在公司中,使用的都是单点数据库服务器,前期业务量小的时候,勉勉强强还能抗的住。当一个单点数据数据库的业务量和数据量逐渐增加,数据库的查询性能就会逐渐降低,数据库开始变得臃肿。这时候开始,就由Mycat出场,Mycat的核心功能就是将一个巨型的数据库,给分离开来。主要分为两种,一种是垂直拆分,垂直拆分:是将单表,或者是有关联的表放在一个数据库,把原有的一个数据库拆分成若干个数据库。,一种水平拆分,水平拆分:是将一个很大的表,通过取模,按照日期范围等等拆分成若干个小表。
给大家简述一下Mycat中间件的工作原理,业务语句从服务器进来,经过Mycat中间件,接着Mycat进行语句分析,它帮找到这语句对应的其中一个schema逻辑库(schema库可以是多个) ,逻辑库不是真实存在的,它是通过真实的库映射出来!相当于数据库集群对外的统一访问入口,schema逻辑库就会接下去找他所对应的DN(DataNode)数据节点,根据数据库节点找到对应的DH(DataHost),也是一个数据主机,这个数据主机对应着两个数据主机,一个是写主机,另一个就是读主机。写操作就落在写主机上,读操作就落到了读主机上,这里就体现了读写分离。当你设置两个读主机和写主机时,只要其中一个写主机宕机了,mycat就会帮你漂移到另外一个读主机和写主机那里去进行读写操作。在这里要注意写主机和读主机时捆绑在一起的,只要写主机宕机了,读主机也跟着一起不工作了。Mycat工作就是把从业务服务器发送来的sql语句进行分析,看它是对应哪个库中哪些数据,然后就通过逻辑库去调用底层数据来进行返回数据。
然后继续介绍一下Mycat中间件中的一些配置文件,bin目录里面存的程序目录,logs目录存的是wrapper.log启动日志和mycat工作日志。Lib库中存的都是java的jar包,因为mycat,升级java时,把java导进去就行了。升级mycat,就把mycat的配置文件挪出来,然后解压后的mycat中配置文件换了就行了。主要的要看conf目录下,里面有rule.xml是用来座分片策略的定义,使用方法和功能。Server.xml就是mycat的用户,网络,权限的配置。最主要的是schema.xml,就是mycat的主配置文件,里面包含了节点信息,可以设置高可用,读写分离,分片策略都在里面写。生产中建议大家备份一下啊,讲讲里面的一些参数,balance是负载均衡类型,0时就是不开启读写分离,所有读操作都发送在写主机中。1时,就在双主双从的架构上,全部的读主机和standby写主机都参与sellect语句的负载均衡。2时所有读操作都随机在读主机和写主机上发送。WriteType写操作,也是负载均衡类型,0时所有写操作都发去配置的第一个写主机上,1时写操作随机发送到配置的所有写主机上。maxCon就是最大并发连接数,minCon为后端线程连接线程。select user()监测心跳