Linux is not Matrix——MyCat实现读写分离

来源:互联网 发布:淘宝皇冠转让 编辑:程序博客网 时间:2024/06/05 09:43
  MyCAT 可以视为“MySQL”集群的企业级数据库,用来替代昂贵的Oracle集群,其背后是阿里曾经开源的知名产品Cobar。MyCAT的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。
  MyCat可以做的事情很多,它是一款遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。它可以实现基于心跳的自动故障切换,支持读写分离,支持MySQL主从。支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数,支持跨库分页。支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。支持多租户方案。支持分布式事务(弱xa)。

  强大的web,命令行监控。支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server 、 mongodb 、巨杉。支持SQL黑名单、sql注入攻击拦截。支持分表(1.6)。集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理。

  上面都是我从官网上抄的,并没有真正的理解透彻- -

  简单来说,mycat负责和数据库进行交互,我们编程针对mycat编程,这样对开发人员来说,并没有感觉到有一层mycat来作为了中间件。

  mycat的安装非常简单,我们只需要配置几个配置文件然后启动它就行了。

  下载解压就不说了,去官网下吧。修改conf文件夹中的server.xml,这个xml配置的是类似mysql的一些配置,比如用户,默认sql解析器,等等,如果把mycat当做数据库的话,这里就是对数据库的配置。

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mycat:server SYSTEM "server.dtd"><mycat:server xmlns:mycat="http://org.opencloudb/"><system><property name="defaultSqlParser">druidparser</property><property name="useCompression">1</property> <!--1为开启mysql压缩协议--></system><user name="root"><!-- 用户名 --><property name="password">root</property><!-- 密码 --><property name="schemas">mysqlcluster</property><!-- 这个用户使用的schema --></user><user name="itoo"><property name="password">itoo</property><property name="schemas">mysqlcluster</property><property name="readOnly">true</property><!-- 只有读的权限 --></user></mycat:server>
  我这里只配置了俩用户,反正是为了测试,就一个读一个可写。

  然后修改schema.xml,这个xml配置的是真正的mysql数据库的地址和节点,节点是用来分库分表的我这里就没有配置。

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://org.opencloudb/" ><schema name="mysqlcluster" checkSQLschema="false" sqlMaxLimit="100" dataNode="cluster"/><!-- 这个Schema的基本信息 --><dataNode name="cluster" dataHost="cluster" database="clustertest" /><!-- dataNode用于分库分表,这里暂时没有使用 --><dataHost name="cluster" maxCon="1000" minCon="10" balance="3"writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100"><!-- 配置mysql的基本信息,相当于咱们java程序中的jdbc.properties里面的内容 --><!-- balance="3" 表示启动读写分离,写请求写入下面的writeHost,读请求传给readHost --><heartbeat>select user()</heartbeat><!-- 这里可以配置多个writeHost --><writeHost host="master1" url="192.168.22.219:3306" user="root" password="root"><readHost host="slave" url="192.168.22.219:3307" user="root" password="root" /></writeHost></dataHost></mycat:schema>
  最后还有一个rule.xml,这个xml是分库分表的规则,我暂时没有研究,就算了。

  然后启动mycat服务,进入mycat的bin目录,直接mycat start就可以了。

  启动成功之后就可以使用navicat连接了,默认端口是8066,用户名密码是上面server.xml里面配置的。

0 0
原创粉丝点击