• 一、mycat介绍


    一、背景

    随着时间和业务的发展,数据库中的数据量增长是不可控的,库和表中的数据会越来越大,随之带来的是更高的磁盘、IO、系统开销,甚至性能上的瓶颈,而一台服务的资源终究是有限的,因此需要对数据库和表进行拆分,从而更好的提供数据服务。

    当用户表达到千万级别,在做很多操作的时候都会很吃力,所以当数据增长到1000万以上就需要分库分表来缓解单库(表)的压力。

    二、mycat原理

    可以用拦截形容,它拦截了用户发送过来的SQL语句,首先对sql语句做了一些特定的分析,如分片分析,路由分析,读写分析,读写分离分析,缓存分析等,然后将此sql发送后端的真是数据库,并将反馈的结果做适当的处理,最终返回给用户

    三、mycat介绍

    •一个用于MySQL读写分离和与数据切分的高可用中间件
    •一个模拟为MySQLServer的超级数据库代理
    •一个能平滑扩展支持1000亿大表的分布式数据库系统 (普通单表1kw以下)
    •一个可管控多种关系数据库的数据库路由器
    •一个彻底开源的,面向企业应用开发的大数据库集群
    • 支持事务、ACID、可以替代MySQL的加强版数据库
    •一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群
    •一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server
    • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
    •一个新颖的数据库中间件产品

    四、什么是分库分表

    简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)上面,以达到分散单台设备负载的效果。

    数据的切分(Sharding)根据其切分规则的类型,可以分为两种切分模式。一种是按照不同的表(或者Schema)来切分到不同的数据库(主机)之上,这种切可以称之为数据的垂直(纵向)切分;另外一种则是根据表中的数据的逻辑关系,将同一个表中的数据按照某种条件拆分到多台数据库(主机)上面,这种切分称之为数
    据的水平(横向)切分。

    垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业务模块所使用的表分拆到不同的数据库中。根据不同的表来进行拆分,对应用程序的影响也更小,拆分规则也会比较简单清晰。

    水平切分于垂直切分相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂,后期的数据维护也会更为复杂一些。

    五、分片介绍

      5.1垂直切片

        将不同的表切分到不同的数据库中

      5.2水平切片

        将同一类型表按照分片条件切分到不同的数据库中(常用)

    六、配置文件

    mycat主要有3个配置文件,rule.xml,schema.xml和server.xml,这主要对这3个文件作讲解

    七、 关键特性

    -遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。
    -基于心跳的自动故障切换,支持读写分离,支持MySQL一双主多从,以及一主多从
    -有效管理数据源连接,基于数据分库,而不是分表的模式。
    -基于Nio实现,有效管理线程,高并发问题。
    -支持数据的多片自动路由与聚合,支持sum,count,max等常用的聚合函数。
    -支持2表join,甚至基于caltlet的多表join。
    -支持通过全局表,ER关系的分片策略,实现了高效的多表join查询。
    -支持多租户方案。-支持分布式事务(弱xa)
    -支持全局序列号,解决分布式下的主键生成问题。
    -分片规则丰富,插件化开发,易于扩展。
    -强大的web,命令行监控。
    -支持前端作为mysq通用代理,后端JDBC方式支持Oracle、DB2、SQL Server、mongodb、巨杉。
    -集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

    八、安装

    官网下载: http://www.mycat.io/

    下载后解压,进入mycatin 目录

    双击启动 startup_nowrap.bat

  • 相关阅读:
    python zip,lambda,map函数
    TKinter Scale
    TKinter Radiobutton
    TKinter Listbox
    TKinter Entry 和 Text
    TKinter Label 和 Button
    python中global的用法
    收不到github认证邮件
    IDEA中文显示字体混乱
    使用码云加速下载github项目
  • 原文地址:https://www.cnblogs.com/shaolixin/p/11484023.html
Copyright © 2020-2023  润新知