数据库切片

一、  概述

随着业务的扩大,数据量呈指数级增长。对于一些不便使用nosql的场景,关系型数据库难以满足快速查询和插入数据的需求。这就需要做数据库集群,将一个数据库中的数据分散到不同的数据库存储,这种分散数据库负载的技术是数据库分片。

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

二、  mycat

实现数据库分片涉及到查询数据库时查哪个库,插入数据时插入哪个库等麻烦的问题。使用mycat可以解决相关的问题。

mycat基于阿里的cobar。cobar擅长mysql数据库分片。mycat对cobar进行了重构,使用NIO重构了网络模块,优化了buffer内核,增强了聚合,join等基本特性,兼容大多数数据库。mycat,作为数据库中间件,支持mysql集群或者mariadb集群,提供高可用性数据分片集群,在使用上几乎与mysql无异。

mycat通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法。

三、  mycat的安装

要求jdk1.7以上,mysql5.5以上。官网下载mycal,有windows版和linux版的,装法基本相同。

linux安装,将压缩包解压到/usr/local下。在bin目录下,./mycat  start,后台启动。mycat默认端口是8066。

四、  mycat的分片

创建三个数据库节点,分别创建数据库db1,db2,db3,将mycat安装到节点1上。

配置mycat的conf中的schema.xml文件。

在配置文件中,schema用于定义mycat实例中的逻辑库;table定义了mycat中的逻辑表;datanode定义了mycat中的数据节点,也就是数据分片;datahost在mycat逻辑库中也是作为最底层的标签,指定定义了具体的数据库实例、读写分离配置和心跳语句。

在linux版本的mysql中,需要配置mysql为大小写不敏感,否则发生表找不到的问题。在mysql配置文件/etc/my.cnf[mysqld]中增加一行lower_case_table_names=1。

配置schema.xml,注意配置所有节点数据库的远程访问授权。

<?xmlversion="1.0"?>

<!DOCTYPEmycat:schema SYSTEM "schema.dtd">

<mycat:schemaxmlns:mycat="http://org.opencloudb/">



        <schema name="e3shop"checkSQLschema="false" sqlMaxLimit="100">

                <!-- auto sharding by id(long) -->

                <table name="tb_item"dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

        </schema>

        <dataNode name="dn1"dataHost="localhost1" database="db1" />

        <dataNode name="dn2"dataHost="localhost1" database="db2" />

        <dataNode name="dn3"dataHost="localhost2" database="db3" />

        <dataHostname="localhost1" maxCon="1000" minCon="10"balance="0"

                writeType="0"dbType="mysql" dbDriver="nati
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值