Mycat2

全新架构的分布式数据库中间件
授权协议 GPL
开发语言 Java
所属分类 数据库相关、 数据库调整和优化
软件类型 开源软件
地区 国产
投 递 者 吕自明
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

Mycat 2.0 预览版。

基于Nio实现,有效管理线程,解决高并发问题。

前后端共享buffer,支持全透传和半透传,极致提升内核性能,稳定性和兼容性。

功能特性

  •  支持SQL92标准。

  •  支持单库内任意sql。

  •  支持读写分离。

  •  自动集群管理。

  •  支持负载均衡。

  •  支持主从切换。

  •  支持动态注解。

  •  结果集缓存。

配置说明

  • mycat.yml:mycat代理的配置,指定开启的端口号提供代理服务

  • user.yml: 配置mycat的用户名密码和白名单

  • cluster.yml:集群配置,可以开启关闭集群功能,指定集群端口和id号,id在集群内必须唯一

  • balancer.yml:负载均衡配置,可以开启关闭负载均衡,负载均衡只有在集群模式下才生效

  • heartbeat.yml:心跳配置,指定心跳周期及切换间隔

  • schema.yml:mycat的逻辑库

  • datasource.yml:后端数据库的复制组配置

  • replica-index.yml:指定datasource.yml中复制组的写节点,默认为0

  • sharding-rule.yml:分片规则

启动运行

一、本地调试

配置文件只能有一个,在IDEA中调试可以设置启动参数,启动参数优先级比配置文件高,会替换掉配置文件的参数,现支持的启动参数:

  • -mycat.proxy.port 8067

  • -mycat.cluster.enable true

  • -mycat.cluster.port 9067

  • -mycat.cluster.myNodeId leader-2

二、编译运行

1. 下载源码并编译

  1. clone源代码 git clone https://github.com/MyCATApache/Mycat2.git

  2. maven编译 mvn clean install

  3. 在target目录下找到操作系统对应的压缩包,如linux下的mycat2-0.1-20170906223147-linux.tar.gz

  4. 将压缩包解压缩到指定路径

2. 修改配置文件

配置文件在conf目录下,需要修改的配置文件包括:

  1. mycat.yml,指定ip和端口号

  2. user.yml,配置user信息,包括name和password,登录的时候需要按照指定的用户名密码登录,schemas对应为schema.yml中的schema,白名单功能默认关闭

  3. cluster.yml,指定是否开启集群模式以及集群节点的基本信息,默认集群关闭

  4. balancer.yml,指定是否开启负载均衡模式以及负载均衡的基本信息,默认负载均衡关闭

  5. heartbeat.yml,配置心跳相关信息,可以使用默认值

  6. schema.yml,设置相关的schema

  7. datasource.yml,设置后端连接的复制组信息

  8. replica-index.yml,设置复制组写节点配置,默认为0

3. 运行

  1. 运行的方式与 1.6 相同

  2. linux 环境 运行 bin 目录下 ./mycat {console | start | stop | restart | status | dump }

  3. window 环境 运行 bin 目录下 startup_nowrap.bat

  4. 运行成功后,使用 root 账号登录,登录密码 123456 登录,端口号为mycat.yml中配置的端口号,默认为8066

4. 集群启动

  1. conf目录下,需要正确配置mycat.yml,cluster.yml,balancer.yml

  2. 配置完成后,按照第三步的方式依次启动各个节点的mycat,将自动进行集群管理

  • 提示:为了不重复造轮子,整理了官网的详细文档,可通过链接查看[ 主要便于个人查看 ] 一、MyCat2与MyCat1对比 https://www.yuque.com/books/share/6606b3b6-3365-4187-94c4-e51116894695/vm9gru 二、MyCat2安装与启动 https://www.yuque.com/books/share/6606b3b6-3365

  • 推荐使用sharding-jdbc sharding-jdbc Apache官网 Apache ShardingSphere 简介(Mycat官方文档太凌乱都是坑) Mycat是一个彻底开源的,面向企业应用开发的大数据库集群。从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用

  • 采用mycat2版本 1、在主节点(主库)创建mycat数据库,供mycat内部使用,Mycat 在启动时,会自动在原型库下创建其运行时所需的数据表。 CREATE DATABASE IF NOT EXISTS `mycat`; 2、下载安装mycat2 mkdir -p /home/papis/mycat2 cd /home/papis/mycat2 # 下载安装包 wget http:/

  • 1. 创建schema mycat控制台输入 /*+ mycat:createSchema{ "customTables":{}, "globalTables":{}, "normalTables":{}, "schemaName":"test", "shardingTables":{}, "targetName":"prototype" } */; schemaName:物理库的库名

  • 最近有个项目单表数据已经轻松突破了一千万了,所以考虑采用MySQL的分表工具,比较了一番,最后还是准备采用Mycat,主要原因如下: 1、mycat作为数据库中间件的存在,可以独立部署,独立运行,对于开发端,基本上算是透明,我的程序已经上线了很久了,没有条件大改代码了。 2、mycat学习资源相对比较多,网上有很多的视频、文档啥的,比较好入门。 3、mycat功能比较全面,可以做到读写分离,可以实

  • Mycat2 的官方文档:https://www.yuque.com/ccazhw/ml3nkf/fb2285b811138a442eb850f0127d7ea3 Mycat2的使用 Mycat是数据库的中间件,启动Mycat之后,可像使用Mysql一样使用Mycat。可以像链接mysql一样通过jdbc链接mycat。链接Mycat之后所有分库分表的逻辑都被Mycat封装,使用起来比较简单。 在

  • 配置语句,扩容直接修改tableNames即可 /*+ mycat:createTable{ "schemaName":"mycatdb", "shardingTable":{ "createTableSQL":"CREATE TABLE `mycatdb`.`test` (`name` varchar(10),`create_time` varchar(30));", "functi

 相关资料
  • 分布式支持 数据访问层支持分布式数据库,包括读写分离,要启用分布式数据库,需要开启数据库配置文件中的deploy参数: return [ // 启用分布式数据库 'deploy' => 1, // 数据库类型 'type' => 'mysql', // 服务器地址 'hostname' => '192.168.1.1,19

  • 问题内容: MySQL中的模式和数据库之间有区别吗?在SQL Server中,数据库是相对于架构的更高级别的容器。 我读的和做的基本上是在MySQL同样的事情,我相信这线索,架构和数据库是同一对象的不同的词。 问题答案: 如MySQL词汇表中所定义: 实际上,在MySQL中, 模式 与 数据库 是同义词。您可以用MySQL SQL语法代替关键字,例如使用代替。 其他一些数据库产品也有区别。例如,在

  • 主要内容:1、Master-Slave架构,2、异步日志持久化机制,3、检查点机制:定时持久化全量数据,4、引入检查点节点,5、总结 & 思考这篇文章,给大家来聊一个生产级的中间件系统的架构设计实践,希望给对中间件系统感兴趣的同学一点启发。 1、Master-Slave架构 这个中间件系统的本质是希望能够用分布式的方式来处理一些数据,但是具体的作用涉及到核心技术,所以这里不能直接说明。 但是他的核心思想,就是把数据分发到很多台机器上来处理,然后需要有一台机器来控制N多台机器的分布式处理,大概如下

  • 问题内容: 我想为ACL创建一个架构;但是,我在实现它的两种方法之间陷入了困境。 我敢肯定,我不想处理级联权限,因为这会导致后端和站点管理员感到困惑。 我想我也可以只和一个角色一起生活。这样的设置将允许在网站扩展时根据需要添加角色和权限,而不会影响现有角色/规则。 首先,我要规范化数据并使用三个表来表示关系。 查询以确定是否允许某处某个用户的查询如下所示: 然后我意识到我将只有大约20个资源,每个

  • 问题内容: 如何在Laravel模式构建器中创建一个? 在文档中说: 但是我需要一个MediumBlob,否则图像将在64K时被截断;我们正在运行MySQL。 我知道Laravel的架构生成器与数据库无关,但是有一种方法可以避免“本机方法”,如果没有,我该如何创建列? 问题答案: 你不能 该问题建议使用原始查询来创建此类列,因此您应该在迁移文件中执行以下操作:

  • 问题内容: update 我可以创建我的数据库架构,它会自动添加属性,约束,键等。但是,更新数据库架构又如何呢?如果我从实体中删除了某些属性,hibernate则不会删除它,或者如果我更改了某些约束,则hibernate不会触及已经创建的约束… 那么,有没有一种方法可以使hibernate状态真正更新数据库架构? 谢谢。 问题答案: 我们为自己创建了一个工具,该工具创建了必要的数据库列和表,并将其

  • 我怀疑为每一个传入的事件记录执行postgresql操作将是一个性能问题。 对于这种情况,有什么更好的或可供选择的设计?

  • 这里我的疑问是,如果我使用多个分布式数据库,cam如何在配置(application.properties)中提到不同的DB源URL?目前我正在使用以下结构来使用一个数据库, 就像上面那样。 所以,如果我使用多个DB用于多个区域,我如何在这里给出有条件的配置?我是微服务世界和分布式数据库设计模式的新手。