暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分表分库(二)

丁锅笔记 2018-05-27
167
  • 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添加数据,验证数据。

    • 实战-读写分离

      • 这里的数据库主从是单向的,可以关注公众号“丁锅笔记”参考:分表分库(一)mysql的master-slave

      • 配置后验证:登录mycat的数据库,向company表插入多条数据。因为是单向的,所以这里的2个库的数据应该是一样的。


文章转载自丁锅笔记,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论