写点什么

mycat 入门:简介和安装

用户头像
小黄鸡1992
关注
发布于: 17 小时前
mycat入门:简介和安装

mycat 是分库分表的中间件,同学们可以参照做一下 demo,初步的理解的和了解分库分表。

1.什么是 MYCAT

  • 一个彻底开源的,面向企业应用开发的大数据库集群

  • 支持事务、ACID、可以替代 MySQL 的加强版数据库

  • 一个可以视为 MySQL 集群的企业级数据库,用来替代昂贵的 Oracle 集群

  • 一个融合内存缓存技术、NoSQL 技术、HDFS 大数据的新型 SQL Server

  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品

  • 一个新颖的数据库中间件产品

2.关键特性

  • 支持 SQL92 标准

  • 支持 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 开发版)

3.优势

基于阿里开源的 Cobar 产品而研发,Cobar 的稳定性、可靠性、优秀的架构和性能以及众多成熟的使用案例使得 MYCAT 一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。业界优秀的开源项目和创新思路被广泛融入到 MYCAT 的基因中,使得 MYCAT 在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。


MYCAT 背后有一支强大的技术团队,其参与者都是 5 年以上软件工程师、架构师、DBA 等,优秀的技术团队保证了 MYCAT 的产品质量。


MYCAT 并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。

4.结构


个人理解:mycat 本身虚拟成了一个 mysql 服务,我们可以直接调用,当我们操作 mycat 服务时,mycat 会按照配置操作 mysql 服务。

5.下载和安装

进入官网http://www.mycat.io/



楼主这里使用的事 windows 版。下载后是一个,直接解压就可以了。


6.配置修改

1.server.xml

   <user name="root">    <property name="password">123456</property>    <property name="schemas">TESTDB</property>        <!-- 表级 DML 权限设置 -->    <!--         <privileges check="false">      <schema name="TESTDB" dml="0110" >        <table name="tb01" dml="0000"></table>        <table name="tb02" dml="1111"></table>      </schema>    </privileges>         -->  </user>
<user name="user"> <property name="password">user</property> <property name="schemas">TESTDB</property> <property name="readOnly">true</property> </user>
复制代码


配置的是 mycat 作为服务区,对外的服务名,密码,(和 mysql 的服务器名,和密码概念相同) 。默认的端口号为 8066,如果不想改数据库名,此类不用我们修改。

2.wrapper.conf

#********************************************************************# Wrapper Properties#********************************************************************# Java Applicationwrapper.java.command=C:\Program Files\Java\jdk1.8.0_144wrapper.working.dir=..
# Java Main class. This class must implement the WrapperListener interface# or guarantee that the WrapperManager class is initialized. Helper# classes are provided to do this for you. See the Integration section# of the documentation for details.wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleAppset.default.REPO_DIR=libset.APP_BASE=.
复制代码


wrapper.java.command=C:\Program Files\Java\jdk1.8.0_144 改为 jdk 路径

3.schema.xml

<?xml version="1.0"?><!DOCTYPE mycat:schema SYSTEM "schema.dtd"><mycat:schema xmlns:mycat="http://io.mycat/">    <!-- name:server中配置的mycat服务名 -->  <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">    <!-- name:表名 datanode 是数据库别名 意思是 dn1,dn2中的user表 在mycat服务中生成,所以需要在datanode中的数据库都需要有user表 rule则是分片策略 而mod-long为分片策略-->    <table name="user" primaryKey="id" autoIncrement="true" dataNode="dn1,dn2" rule="mod-long" />  </schema>
<!-- dn1 dn2对应着上面配置的datanode datahost是下面配置数据源的别名 database:l连接到的mysql服务的test数据库 --> <dataNode name="dn1" dataHost="localhost1" database="test" /> <dataNode name="dn2" dataHost="localhost2" database="test" />
<!-- name对应着上面 datehost中配置 指定datahost的数据源 --> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostM1" url="localhost:3306" user="root" password="root"> </writeHost> </dataHost> <dataHost name="localhost2" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <!-- can have multi write hosts --> <writeHost host="hostS2" url="192.168.2.134:3306" user="root" password="123"> </writeHost> </dataHost></mycat:schema>
复制代码

4.rule.xml

此处划重点!一定要去 rule 中取查看自己配置的策略,安装后自带配置的为<property name="count">3</property>


但是如果你 mysql 服务只有 2 个就会报错,所以每次配置时,来 rule.xml 中看看配置的数量和你数据库服务数量是否能对上。



然后启动服务,双击 bin 文件夹下的 startup_nowrap.bat。




如果出现以上信息,则启动成功。

用户头像

小黄鸡1992

关注

小黄鸡加油 2021.07.13 加入

一位技术落地与应用的博主,带你从入门,了解和使用各项顶流开源项目。

评论

发布
暂无评论
mycat入门:简介和安装