mycat 目前最流行的分布式数据库中间插件

mycat能满足数据的大量存储,并能提高查询性能;同样应用程序与数据库解耦,程序只需知道中间件的地址,无需知道底层数据库,数据分布存储,提高读写性能,也可以做高可以用主从备份,主库异常时,备库自动切换为主库。

  • 支持MySQL、Oracle、DB2、SQL Server、PostgreSQL等DB的常见SQL语法
  • 遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。
  • 基于心跳的自动故障切换,支持读写分离,支持MySQL主从,以及galera cluster集群。
  • 支持Galera for MySQL集群,Percona Cluster或者MariaDB cluster
  • 基于Nio实现,有效管理线程,解决高并发问题。
  • 支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。
  • 支持单库内部任意join,支持跨库2表join,甚至基于caltlet的多表join。
  • 支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
  • 支持多租户方案。
  • 支持分布式事务(弱xa)。
  • 支持XA分布式事务(1.6.5)。
  • 支持全局序列号,解决分布式下的主键生成问题。
  • 分片规则丰富,插件化开发,易于扩展。
  • 强大的web,命令行监控。
  • 支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。
  • 支持密码加密
  • 支持服务降级
  • 支持IP白名单
  • 支持SQL黑名单、sql注入攻击拦截
  • 支持prepare预编译指令(1.6)
  • 支持非堆内存(Direct Memory)聚合计算(1.6)
  • 支持PostgreSQL的native协议(1.6)
  • 支持mysql和oracle存储过程,out参数、多结果集返回(1.6)
  • 支持zookeeper协调主从切换、zk序列、配置zk化(1.6)
  • 支持库内分表(1.6)
  • 集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

下载

http://dl.mycat.io/1.6-RELEASE/Mycat-server-1.6-RELEASE-20161028204710-win.tar.gz

解压后安装

C:\Users\Administrator>D:\mycat\mycat\bin\mycat.bat install

mycat主要有3个配置文件,rule.xml,schema.xml和server.xml,在目录conf下面

schema.xml,管理着MyCat的逻辑库、表、分片规则、DataNode以及DataSource

schema:定义mycat实例中的逻辑库 
table:定义mycat实例中的逻辑表 
dataNode:定义mycat中的数据节点,也是通常说的数据分片 
dataHost:作为最底层标签存在,定义了具体的真正存放数据的数据库实例,读写分离配置和心跳语句,如果你配了N个主机,就要配N个dataHost节点

这里面,有两个参数需要注意,balance和 switchType。

其中,balance指的负载均衡类型,目前的取值有4种:

1. balance="0", 不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。

2. balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与 M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。

3. balance="2",所有读操作都随机的在writeHost、readhost上分发。

4. balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力

switchType指的是切换的模式,目前的取值也有4种:

1. switchType='-1' 表示不自动切换

2. switchType='1' 默认值,表示自动切换

3. switchType='2' 基于MySQL主从同步的状态决定是否切换,心跳语句为 show slave status

4. switchType='3'基于MySQL galary cluster的切换机制(适合集群)(1.4.1),心跳语句为 show status like 'wsrep%'。

rule.xml 该文件主要定义了分片的规则,这个文件里面主要有tableRule和function这两个标签。在具体使用过程中可以按照需求添加tableRule和function

name:用户标识不同的分表规则 
  columns:指定按哪一列进行拆分 
  algorithm:该属性值为下面function标签中name的属性值,定义了连接表规则的具体的路由算法,多个表规则可以连接到同一个路由算法上

datanode对应的实例下面必须有schema.xml配置对应的数据库和表

启动mycat

C:\Users\Administrator>D:\mycat\mycat\bin\mycat.bat start
wrapper  | Starting the Mycat-server service...
wrapper  | Mycat-server started.

连接mycat(mycat默认的普通连接端口是8066,管理连接端口是9066)

读写数据测试成功

最新文章

  1. ELF静态链接
  2. js-正则表达式的替换
  3. java 26 - 8 网络编程之 TCP协议的练习
  4. kali linux 2.0安装sublime text 2
  5. 几组User-Agent
  6. iphone Dev 开发实例8: Parsing an RSS Feed Using NSXMLParser
  7. loadrunner11录制不成功解决方法
  8. javascript针对DOM的应用
  9. bcb6 中安装 delphi7 的控件包
  10. 关键路径(CriticalPath)算法
  11. 学习ORM框架—hibernate(三):跟踪持久化对象状态,掌握对象持久化
  12. MyBatis 源码分析——映射结果
  13. [置顶] Xamarin android 调用Web Api(ListView使用远程数据)
  14. Spring--bean的作用范围
  15. Api管家系列(二):编辑和继承Class
  16. DDctf 新得
  17. Python开发【第十篇】:RabbitMQ队列
  18. 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
  19. JAVA编码 —— 字符串关键字内容替换
  20. 原生js返回顶部(匀速、由快到慢)

热门文章

  1. Tomacat 配置
  2. Hadoop错误集:Could not find the main class: org.apache.hadoop.*
  3. 查看app日志的方法
  4. java1.8 新特性(五 如何使用filter,limit ,skip ,distinct map flatmap ,collect 操作 java集合)
  5. Rstdio 中print中文乱码
  6. [UE4]区分敌我
  7. [UE4]让子弹产生伤害
  8. 让android程序根据重力感应旋转屏幕(支持4个方向旋转)
  9. UE4里的自定义深度功能
  10. object视频播放