分表分库(二)

Mycat是什么?

开源的分布式数据库系统,是一个实现了 MySQL 协议的的 Server,前端用户可以把它看作是一个数据库代理,用 MySQL 客户端工具和命令行访问,

而其后端可以用 MySQL 原生(Native)协议与多个 MySQL 服务器通信,也可以用 JDBC 协议与大多数主流数据库服务器通信,

其核心功能是分表分库,即将一个大表水平分割为 N 个小表,存储在后端 MySQL 服务器里或者其他数据库里。

类似的中间件还有:TDDL\Sharding-JDBC\COBAR

MyCAT 支持多种数据库接入,如:MySQL、SQLServer、Oracle、MongoDB 等,推荐使用 MySQL 做集群。

分库分表后不影响应用层。

应用场景

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

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

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

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

 替代 Hbase,分析大数据

 作为海量数据实时查询的一种简单有效方案,比如 100 亿条频繁查询的记录需要在 3 秒内查询出来结果, 除了基于主键的查询,还可能存在范围查询或其他属性查询,此时 Mycat 可能是最简单有效的选择

mycat入门

下载源码启动

下载源码 https://github.com/MyCATApache/

源码调试与配置

MyCAT 目前主要通过配置文件的方式来定义逻辑库和相关配置:

• MYCAT_HOME/conf/schema.xml 中定义逻辑库,表、分片节点等内容.

• MYCAT_HOME/conf/rule.xml 中定义分片规则.

• MYCAT_HOME/conf/server.xml 中定义用户以及系统相关变量,如端口等.

注:以上几个文件的具体配置请参考前面章节中的具体说明.

源码运行

MyCAT 入口程序是 org.opencloudb.MycatStartup.java,右键 run as .

需要设置MYCAT_HOME 目录,为你工程当前所在目录(src/main):设置完 MYCAT 主目录后即可正常运行 MyCAT 服务。

注:

若启动报错,DirectBuffer 内存不够,则可以再加 JVM 系统参数:XX:MaxDirectMemorySize=128M。

若报错java.lang.illegalArgumentException:Invalid Datasource:0,则是schema.xml配置错误。你可能没有定义数据库dn1,dn2,dn3等dataNode节点。

navicat连接mycat(localhost,8066,root/123456)

linux/windows下安装(略),参考http://dl.mycat.io/

实战-单库大表拆分 - 水平分片

1,135的数据库中添加数据库DB。

2,在DB上添加表order1,order2,order3

3,配置mycat的 schema.xml配置文件

4,启动mycat

5,验证:客户端登录mycat数据库 ,对表order插入数据,并查询。

实战-跨库分表

1,新建db2,db3数据库

2,如上配置

3,同样登录mycat数据库,往company添加数据,验证数据。

实战-读写分离

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180527G0UE5P00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券