Mycat
文章平均质量分 83
wangshuang1631
雄关漫道真如铁,而今迈步从头越
展开
-
Mycat的配置---雄关漫道真如铁,而今迈步从头越
1 搞定schema.xmlSchema.xml作为MyCat中重要的配置文件之一,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource。弄懂这些配置,是正确使用MyCat的前提。这里就一层层对该文件进行解析。2 schema标签<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100"></schema>原创 2017-03-17 14:56:05 · 6727 阅读 · 0 评论 -
Mycat十分钟入门---上帝说要有光,于是便有了光
10分钟入门MyCAT是使用JAVA语言进行编写开发,使用前需要先安装JAVA运行环境(JRE),由于MyCAT中使用了JDK7中的一些特性,所以要求必须在JDK7以上的版本上运行。 1 环境准备 1) JDK下载 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html 注:必须J原创 2017-03-16 15:51:26 · 4124 阅读 · 4 评论 -
Mycat开发实践---MyCAT线程模型分析
MyCAT线程模型Mycat线程介绍1 Timer Timer单线程仅仅负责调度,任务的具体动作交给timerExecutor。 2 TimerExecutor线程池, 默认大小N=2 任务通过timer单线程和timerExecutor线程池共同完成。这个1+N的设计方式比较巧妙! 但是timerExecutor跟aioExecutor大小默认一样,不太合理,定时任务没有那么大的运算量。原创 2017-04-11 15:18:11 · 2672 阅读 · 0 评论 -
Mycat生产实践---生产环境部署
单节点mycat部署单节点mycat的部署指的是只部署一台mycat服务器,它与mycat集群部署是相对的,如果这台mycat服务器宕机了,mycat就不可用了。mycat的高可用与负载均衡1 什么是高可用? 高可用通常也叫HA(High Available)。指的是,一台服务器宕机了,照样能对外提供服务。常用的高可用软件方案有:LVS、keepalived、Heartbeat、roseHA(ro原创 2017-04-01 18:29:19 · 6887 阅读 · 0 评论 -
日志分析---携来百侣曾游,忆往昔峥嵘岁月稠
日志分析mycat的日志文件配置为MYCAT_HOME/conf/log4j.xml,结构为:<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"><log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j原创 2017-03-17 08:48:59 · 3450 阅读 · 2 评论 -
Mycat防火墙配置---一夫当关,万夫莫开
Mycat防火墙配置白名单和SQL黑名单说明: 在server.xml 中配置: <firewall> <whitehost> <host user="mycat" host="127.0.0.1"></host> ip白名单 用户对应的可以访问的ip地址 </whitehost> <blacklist check="true"> <property name="sele原创 2017-03-17 09:08:04 · 4529 阅读 · 0 评论 -
Mycat生产实践---Mycat最佳实践
Mycat 如图所述通过后端接入不同的后端解决业务的完整需求。原创 2017-04-04 09:54:10 · 2433 阅读 · 0 评论 -
Mycat生产实践---Mycat实施指南
1 Mycat项目实施步骤首先,全面了解Mycat的能力、目前的限制、以及可能的解决办法,然后,在此基础上,考虑是否用Mycat的分表分片功能,根据目前业务的数据模型和数据访问模式,确定几个可能的分表方案,然后对方案进行针对性的性能测试,在性能数据的基础上,最终决定采用怎样的分片策略。 了解Mycat的能力,包括如下的方面:Mycat的起源和解决的目标Mycat在数据库中间件方面的独特功能原创 2017-04-04 10:11:37 · 5384 阅读 · 0 评论 -
Mycat生产实践---数据迁移与扩容实践
1 离线扩容缩容工具目前从mycat1.6开始支持。 一、准备工作 1、mycat所在环境安装mysql客户端程序 2、mycat的lib目录下添加mysql的jdbc驱动包 3、对扩容缩容的表所有节点数据进行备份,以便迁移失败后的数据恢复 二、扩容缩容步骤 1、复制schema.xml、rule.xml并重命名为newSchema.xml、newRule.xml放于conf目录下原创 2017-04-04 11:02:49 · 16920 阅读 · 4 评论 -
Mycat生产实践---性能调优
主机调优Linux主机的网络性能优化,mycat所在服务器多网卡绑定,bond技术,增加网络吞吐量。 TCP的性能取决于几方面因素,最重要的是链接带宽(link bandwidth)(报文在网络上传输的速率)和往返时间(round-trip time)或RTT(发送报文与接收到另一端的响应之间的延时)。这两个值确定称为BDP(Bandwidth Delay Prod-uct)的内容。BDP给出一种原创 2017-04-04 11:19:49 · 12162 阅读 · 1 评论 -
Mycat开发实践---开发基础
获取源码目前MyCAT最新程序的源码和文档都托管在github上,github地址为: https://github.com/MyCATApache/代码调试入口Mycat运行的mian class 为MycatStartup。在获取源代码之后,导入到IDE中。配置相关的启动参数就可以在IDE中调试Mycat了。 这里需要注意的是,需要指定MYCAT_HOME这个系统变量的值。这个值可以为任意的原创 2017-04-05 15:31:37 · 1663 阅读 · 0 评论 -
Mycat开发实践---数据库中间件架构分析
比较业界流行的MySQL分布式数据库中间件,关于每个产品的介绍,网上的资料比较多,本文只是对几款产品的架构进行比较,从中可以看出中间件发展和演进路线1 TDDL2 Amoeba3 Cobar4 MyCat总结1 TDDL不同于其它几款产品,并非独立的中间件,只能算作中间层,是以Jar包方式提供给应用调用。属于JDBC Shard的思想,网上也有很多其它类似产品。另外,网上有关于TDDL的图,如htt原创 2017-04-05 15:47:09 · 2455 阅读 · 0 评论 -
Mycat开发实践---mycat的连接池模型
Mycat为了最高效的利用后端的MySQL连接,采取了不同于Cobar也不同于传统JDBC连接池的做法,传统的做法是基于Database的连接池,即一个MySQL服务器上有5个Database,则每个Database独占最大200个连接。这种模式的最大问题在于,将一个数据库所具备的最大1000个连接,隔离成了更新小的连接池,于是可能产生一个应用的连接不够,但其他应用的连接却很空闲的资源浪费情况,而对原创 2017-04-14 16:44:04 · 6950 阅读 · 1 评论 -
Mycat的相关概念---不识庐山真面目,只缘身在此山中
数据库中间件Mycat是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而Mycat并没有存储引擎,所以并不是完全意义的分布式数据库系统。 那么Mycat是什么?Mycat是数据库中间件,就是介于数据库与应用之间,进行数据处理与交互的中间服务。由于前面讲的对数据进行分片处理之后,从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储。 如上图所表原创 2017-03-16 09:09:53 · 2030 阅读 · 0 评论 -
Mycat生产实践---分表分库案例
1 SAAS多租户案例SAAS多租户的案例是Mycat粉丝的创新性应用案例之一,思路巧妙并且实现方式简单。 SAAS应用中,不同租户的数据是需要进行相互隔离的,比较常用的一种方式是不同的租户采用不同的Database存放业务数据,常规的做法是应用程序中根据租户ID连接到相应的Database,通常是需要启动多个应用实例,每个租户一个,但这种模式消耗的资源比较多,而且不容易管理,还需要开发额外的功能原创 2017-03-30 17:04:38 · 6988 阅读 · 0 评论 -
Mycat的分片join---江山如此多娇,引无数英雄竞折腰
join概述Join绝对是关系型数据库中最常用一个特性,然而在分布式环境中,跨分片的join确是最复杂的,最难解决一个问题。 下面我们简单介绍下各种Join操作。 INNER JOIN 内连接,也叫等值连接,inner join产生同时符合A表和B表的一组数据。 如图: LEFT JOIN 左连接从A表(左)产生一套完整的记录,与匹配的B表记录(右表) .如果没有匹配,右侧将包含null原创 2017-03-17 18:59:54 · 6397 阅读 · 0 评论 -
全局序列号---天长地久有时尽, 此恨绵绵无绝期
全局序列号介绍在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一。为此,MyCat 提供了全局sequence,并且提供了包含本地配置和数据库配置等多种实现方式。本地文件方式原理:此方式MyCAT将sequence配置到文件中,当使用到sequence中的配置后,MyCAT会更下classpath中的sequence_conf.properties文件中sequence当前的值。原创 2017-03-17 19:58:10 · 3048 阅读 · 0 评论 -
Mycat 分片规则---不以规矩,不能成方圆
分片规则概述在数据切分处理中,特别是水平切分中,中间件最终要的两个处理过程就是数据的切分、数据的聚合。选择合适的切分规则,至关重要,因为它决定了后续数据聚合的难易程度,甚至可以避免跨库的数据聚合处理。 前面讲了数据切分中重要的几条原则,其中有几条是数据冗余,表分组(Table Group),这都是业务上规避跨库join的很好的方式,但不是所有的业务场景都适合这样的规则,因此本章将讲述如何选择合适的原创 2017-03-17 20:31:44 · 7148 阅读 · 0 评论 -
Mycat常见问题与解决方案---宜将剩勇追穷寇,不可沽名学霸王
1 Mycat目前有哪些功能与特性?答: • 支持 SQL 92标准 • 支持Mysql集群,可以作为Proxy使用 • 支持JDBC连接多数据库 • 支持NoSQL数据库 • 支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群 • 自动故障切换,高可用性 • 支持读写分离,支持Mysql双主多从,以及一原创 2017-03-17 20:40:46 · 20802 阅读 · 5 评论 -
Mycat性能测试---已是悬崖百丈冰,犹有花枝俏
Mycat自身提供了一套基准性能测试工具,这套工具可以用于性能测试、疲劳测试等,包括分片表插入性能测试、分片表查询性能测试、更新性能测试、全局表插入性能测试等基准测试工具。 这里需要说明的一点是,分片表的性能测试不同于普通单表,因为它的数据是分布在几个Datahost上的,因此插入和查询,都必需要特定的工具,才能做到多个节点同时负载请求,通过观察每个主机的负载,能够确定是否你的测试是合理和正确的。原创 2017-03-20 09:33:38 · 5329 阅读 · 0 评论 -
Mycat高级进阶---读写分离
MySQL主从复制的几种方案数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。 从数据库的角度来说,对于大多数应用来说,从集中到分布,最基本的一个需求不是数据存储的瓶颈,而是在于计算的瓶颈,即SQL查询的瓶颈,我们知道,正常情况下,Insert SQL就是几十个毫秒的时间内写入完成,而系统中的大多数Select SQL则要几秒到几分钟才能有结果,很多复杂的SQL,其原创 2017-03-22 09:36:05 · 10650 阅读 · 1 评论 -
Mycat高级进阶---高可用与集群
MySQL高可用的几种方案首先我们看看MySQL高可用的几种方案: 对于数据实时性要求不是特别严格的应用,只需要通过廉价的pc server 来扩展Slave 的数量,将读压力分散到多台Slave 的机器上面,即可通过分散单台数据库服务器的读压力来解决数据库端的读性能瓶颈,毕竟在大多数数据库应用系统中的读压力还是要比写压力大很多。这在很大程度上解决了目前很多中小型网站的数据库压力瓶颈问题,甚至原创 2017-03-22 19:39:54 · 12706 阅读 · 3 评论 -
Mycat高级进阶---事务支持
Mycat里的数据库事务Mycat 目前没有出来跨分片的事务强一致性支持,目前单库内部可以保证事务的完整性,如果跨库事务, 在执行的时候任何分片出错,可以保证所有分片回滚,但是一旦应用发起commit指令,无法保证所有分片都成功,考虑到某个分片挂的可能性不大所以称为弱xa。XA事务原理分布式事务处理( Distributed Transaction Processing , DTP )指一个程序或程原创 2017-03-22 19:48:51 · 12125 阅读 · 1 评论 -
Mycat高级进阶---Mycat SQL拦截机制
SQL拦截是一个比较有用的高级技巧,用户可以写一个java类,将传入MyCAT的SQL进行改写然后交给Mycat去执行,此技巧可以完成如下一些特殊功能:捕获和记录某些特殊的SQL记录sql查找异常出于性能优化的考虑,改写SQL,比如改变查询条件的顺序或增加分页限制将某些Select SQL强制设置为Read 模式,走读写分离(很多事务框架很难剥离事务中的Select SQL后期Mycat智原创 2017-03-22 19:57:42 · 6085 阅读 · 2 评论 -
Mycat高级进阶---Mycat注解
注解原理概念: MyCat对自身不支持的Sql语句提供了一种解决方案——在要执行的SQL语句前添加额外的一段由注解SQL组织的代码,这样Sql就能正确执行,这段代码称之为“注解”。注解的使用相当于对mycat不支持的sql语句做了一层透明代理转发,直接交给目标的数据节点进行sql语句执行,其中注解SQL用于确定最终执行SQL的数据节点。注解的形式是:/*!mycat: sql=注解Sql语句*/注原创 2017-03-22 20:08:34 · 13106 阅读 · 2 评论 -
Mycat高级进阶---MyCAT支持的Catlet实现
通过catlet支持跨分片复杂SQL实现以及存储过程支持等。使用方式主要通过mycat注释的方式来执行,如下: 1. 跨分片联合查询注解支持:/*!mycat:catlet=demo.catlets.ShareJoin / select bu.,sg.* from base_user bu,sam_glucose sg where bu.id_=sg.user_id;注:sam_glucose 是原创 2017-03-22 20:11:16 · 5023 阅读 · 1 评论 -
Mycat生产实践---Mycat读写分离案例
目前有大量Mycat的生产实践案例是属于简单的读写分离类型的,此案例主要用到Mycat的以下特性:读写分离支持高可用大多数读写分离的案例是同时支持高可用性的,即Mycat+MySQL主从复制的集群,并开启Mycat的读写分离功能,这种场景需求下,Mycat是最为简单并且功能最为丰富的一类Proxy,正常情况下,配置文件也最为简单,不用每个表配置,只需要在schema.xml中的元素上增加dat原创 2017-03-30 16:44:42 · 2518 阅读 · 1 评论 -
Mycat开发实践---Mycat的网络通信框架
1从一个测试说起网上有人对Cobar和MyCAT做了一个简单的比较测试,过程如下: 1 测试环境 利用A、B、C三大类服务器,在A台上面安装配置MyCAT及Cobar,这样保证了硬件方面的一致性。B类服务器上安装Apache这一web服务,使用PHP语言。C类安装MySQL数据库,其中B类与C类均不止一台,主要目的是为了作压力的均分。C类服务器安装了4台,存放了相同的数据库,对其中一个表进行分片原创 2017-04-26 17:40:47 · 4811 阅读 · 0 评论