MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解

                                      作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Mycat介绍

1>.什么是Mycat

  Mycat背后是阿里曾经开源的知名产品,即Cobar,Cobar是阿里巴巴研发的关系型数据的分布式处理系统。

  从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的Server,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生(Native)协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里。

2>.Mycat 支持的功能

>.支持SQL 92标准
>.支持MySQL集群,可以作为Proxy使用
>.支持JDBC连接多数据库
>.支持各种数据库,包括MySQL,MongoDB,Oracle,SQLserver,Hive,DB2,PostgreSQL等
>.支持Galera for MySQL集群,Percona-cluster或者MariaDB Cluster,提供高可用性数据分片集群
>.自动故障切换,高可用性
>.支持读写分离,支持MySQL双主多从,以及一主多从的模式
>.支持全局表,数据自动分片到多个节点,用于高效表关联查询
>.支持独有的基于E-R关系的分片策略,实现了高效的表关联查询
>.支持一致性Hash分片,有效解决分片扩容难题
>.多平台支持,部署和实施简单
>.支持Catelet开发,类似数据库存储过程,用于跨分片复杂SQL的人工智能编码实现
>.支持NIO与AIO两种网络通信机制,Windows下建议AIO,linux下目前建议NIO
>.支持MySQL存储过程调用
>.以插件方式支持SQL拦截和改写
>.支持自增长主键,支持Oracle的Sequence机制

3>.Mycat工作原理

  Mycat的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的SQL语句,首先对SQL语句做了一些特定的分析:如分片分析,路由分析,读写分离分析,缓存分析等,然后将此SQL发往后端的真实数据库,并将返回的结果做适当的处理,最终返回给用户。

  上述图片里,Orders表被分为三个分片DataNode(简称dn),这三个分片是分布在两台MySQL Server(DataHost),即DataNode=datanode@datahost方式,因此你可以用一台到N台服务器来分片,分片规则为(sharding rule)典型的字符串枚举分片规则,一个规定的定义时分片字段(sharding column)+分片函数(rule function),这里的分片字段为prov而分片函数为字符串枚举方式。

  当Mycat收到一个SQL时,会先解析这个SQL,查询设计到表,然后看此表的定义,如果有分片规则,则获取到SQL里分片字段的值,并匹配分片函数,得到该SQL对应的分片列表,然后将SQL发往这些分片去执行,最后收集我和处理所有分片返回的结果数据,并输出到客户端。以“SELECT * FORM orders WHERE prov=?”语句为例,查到prov=wuhan,按照分片函数,wuhan返回dn1,于是SQL就发给MySQL1,去DB1上查询结果并返回给用户。

4>.Mycat 几个典型的应用场景

>.单纯的读写分离,此时配置最为简单,支持读写分离,主从切换;

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

>.多租户应用,每个应用应用一个库,但应用程序只连接Mycat,从而改造程序本身,实现多租户化;

>.报表系统,借助于Mycat的分表能力,处理大规模报表的统计;

二.Mycat安装

1>.下载Mycat(http://dl.mycat.io/1.6-RELEASE/

2>.

3>.

三.

MySQL高可用架构之Mycat-关于Mycat安装和参数设置详解的更多相关文章

  1. mysql高可用架构之MHA,haproxy实现读写分离详解

    MySQL高可用架构之MHA 一.运维人员需要掌握的MySQL技术: 1.基本SQL语句 2.基本的管理[库表数据的管理    权限的管理] 3.容灾       保证数据不丢失. 二.工作中MySQ ...

  2. 032:基于Consul和MGR的MySQL高可用架构

    目录 一.Consul 1.Consul简介 2.准备环境 3.Consul 安装 4.Consul配置文件 5.Consul 服务检查脚本 6.Consul启动 二.MGR搭建 1.MGR配置 2. ...

  3. (转)MySQL高可用架构之MHA

    MySQL高可用架构之MHA  原文:http://www.cnblogs.com/gomysql/p/3675429.html 简介: MHA(Master High Availability)目前 ...

  4. MySQL 高可用架构在业务层面的应用分析

    MySQL 高可用架构在业务层面的应用分析 http://mp.weixin.qq.com/s?__biz=MzAxNjAzMTQyMA==&mid=208312443&idx=1&a ...

  5. 从mysql高可用架构看高可用架构设计

    高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间. 假设系统一直能够提供服务,我们说系统的可用性是100%.如果 ...

  6. MySQL高可用架构应该考虑什么? 你认为应该如何设计?

    一.MySQL高可用架构应该考虑什么? 对业务的了解,需要考虑业务对数据库一致性要求的敏感程度,切换过程中是否有事务会丢失 对于基础设施的了解,需要了解基础设施的高可用的架构.例如 单网线,单电源等情 ...

  7. MySQL高可用架构之MySQL5.7组复制MGR

    MySQL高可用架构之MySQL5.7组复制MGR########################################################################### ...

  8. MySQL高可用架构之MHA

    简介: MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是 ...

  9. MySQL 高可用架构之MMM

    简介 MMM(Master-Master replication manager for MySQL)是一套支持双主故障切换和双主日常管理的脚本程序.MMM使用Perl语言开发,主要用来监控和管理My ...

随机推荐

  1. linux 安装Brew

    点击查看原文 Linuxbrew:Linux下的Homebrew amendgit 关注 2017.02.16 17:20* 字数 455 阅读 4745评论 0喜欢 2 前不久还在跟同事抱怨ubun ...

  2. Django-urls路由系统

    Django的路由系统 Django 1.11版本 URLConf官方文档 URL配置(URLconf)就像Django 所支撑网站的目录.它的本质是URL与要为该URL调用的视图函数之间的映射表. ...

  3. vs + babelua + cocos2d-x

    https://blog.csdn.net/dugaoda/article/details/60467037 https://blog.csdn.net/taotanty/article/detail ...

  4. BZOJ3724PA2014Final Krolestwo——欧拉回路+构造

    题目描述 你有一个无向连通图,边的总数为偶数.设图中有k个奇点(度数为奇数的点),你需要把它们配成k/2个点对(显然k被2整除).对于每个点对(u,v),你需要用一条长度为偶数(假设每条边长度为1)的 ...

  5. 【XSY1594】棋盘控制 概率DP

    题目描述 给你一个\(n\times m\)的棋盘,每次随机在棋盘上放一个国际象棋中的车,不能和以前放的重叠.每个车可以控制当前行和当前列.当所有行和所有列都被控制时结束游戏.问你结束时期望放了多少个 ...

  6. 【XSY2484】mex 离散化 线段树

    题目大意 给你一个无限长的数组,初始的时候都为\(0\),有3种操作: 操作\(1\)是把给定区间\([l,r]\)设为\(1\): 操作\(2\)是把给定区间\([l,r]\)设为\(0\): 操作 ...

  7. bzoj 3631 松鼠的新家 (树链剖分)

    链接: https://www.lydsy.com/JudgeOnline/problem.php?id=3631 思路: 直接用树链剖分求每一次运动,因为这道题只需要区间增添,单点求值,没必要用线段 ...

  8. Java 枚举(enum) 详解7种常见的用法

    Java 枚举(enum) 详解7种常见的用法 来源 https://blog.csdn.net/qq_27093465/article/details/52180865 JDK1.5引入了新的类型— ...

  9. JXOI 2017 简要题解

    「JXOI2017」数列 题意 九条可怜手上有一个长度为 \(n\) 的整数数列 \(r_i\) ,她现在想要构造一个长度为 \(n\) 的,满足如下条件的整数数列 \(A\) : \(1\leq A ...

  10. Educational Codeforces Round 51 (Rated for Div. 2) G. Distinctification(线段树合并 + 并查集)

    题意 给出一个长度为 \(n\) 序列 , 每个位置有 \(a_i , b_i\) 两个参数 , \(b_i\) 互不相同 ,你可以进行任意次如下的两种操作 : 若存在 \(j \not = i\) ...