MyCat分片怎么配置

技术MyCat分片怎么配置本篇内容主要讲解“MyCat分片怎么配置”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MyCat分片怎么配置”吧!MyCat 架构 MyCa

本文主要讲解“如何配置MyCat分片”,感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何配置我的猫切片”!

MyCat 架构

MyCat分片怎么配置

00-1010

MyCat 核心概念

schema:它指定了逻辑数据库(相当于MySQL的数据库数据库)。

Schema

表:逻辑表(相当于MySQL表)

Table

DataNode:实际存储数据的物理节点。

DataNode

DataHost:存储节点所在的数据库主机(指定MySQL数据库的连接信息)

00-1010用户:mycat的用户(类似于MySQL的用户,支持多用户)

DataHost

海量数据保存2。查询

User

MyCat分片怎么配置

MyCat 主要解决问题

MyCAT支持水平切片和垂直切片:水平切片:将一个表的数据分成多个节点,用行分隔。垂直切片:一个数据库中的多个表A、B、C和A分别存储在节点1、节点2和节点3上。MyCat分片怎么配置

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

MyCat 对多数据库的支持

Schema:逻辑库,对应MySQL中的Database。逻辑库定义包含的表。

MyCat 分片策略

Table:表,即存储在物理数据库中的表,与传统数据库不同,这里的表需要声明其存储的逻辑DataNode DataNode。在这里,您可以指定表的碎片规则。

00-1010 data node:my cat的逻辑数据节点是存储表的特定物理节点,也称为分片节点,通过DataHost连接到特定的后端数据库。

Schema

DataHost:定义绑定到Datanode的物理库的访问地址。

Table

DataNode

wget http://dl . Mycat . io/1.6-RElease/Mycat-server-1.6-RElease-20161028204710-

linux.tar.gz

00-1010 tar-zxvf mycat-server-1.6-release-20161028204710-Linux . tar . gz

DataHost

-start命令:/mycat start

-停止命令:/mycat停止

-重启命令:/mycat重启

-查看状态:/mycat状态

00-1010使用mysql的客户端直接连接到mycat服务。默认服务端口是[8066]

MySQL-uroot-p 123456-h 227 . 0 . 0 . 1-p 8066

MyCat 安装

下载MyCat

解压缩

schema . XML作为Mycat中重要的配置文件之一,管理Mycat的逻辑库、表、分片规则、DataNode和DataHost之间的映射关系。了解这些配置是正确使用Mycat的前提。模式标签用于定义MyCat实例中的逻辑库。Table标记定义了MyCat中的逻辑表dataN。

ode 标签定义了MyCat中的数据节点,也就是我们通常说所的数据分片。dataHost标签在mycat逻辑库中也是作为最底层的标签存在,直接定义了具体的数据库实例、读 写分离配置和心跳语句。

Schema.xml 配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
   <!--
   schema : 逻辑库 name:逻辑库名称
   sqlMaxLimit:一次取多少条数据 要超过用limit xxx
   table:逻辑表
   dataNode:数据节点 对应datanode标签
   rule:分片规则,对应rule.xml
   subTables:子表
   primaryKey:分片主键 可缓存
   -->
   <schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
       <!-- auto sharding by id (long) -->
       配置Server.xml
       server.xml介绍
       server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。
       server.xml配置
       配置rule.xml
       rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算
       法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标
       签。在具体使用过程中可以按照需求添加tableRule和function。
       此配置文件可以不用修改,使用默认即可。
       <table name="item" dataNode="dn1,dn2,dn3" rule="mod-long"
              primaryKey="ID"/>
   </schema>
   <!-- <dataNode name="dn1$0-743" dataHost="localhost1" database="db$0-743"
   /> -->
   <dataNode name="dn1" dataHost="localhost1" database="db1" />
   <dataNode name="dn2" dataHost="localhost1" database="db2" />
   <dataNode name="dn3" dataHost="localhost1" database="db3" />
   <!--
   dataHost : 数据主机(节点主机)
   balance:1 :读写分离 0 :读写不分离
   writeType:0 第一个writeHost写, 1 随机writeHost写
   dbDriver:数据库驱动 native:MySQL JDBC:Oracle、SQLServer
   switchType:是否主动读
   1、主从自动切换 -1 不切换 2 当从机延时超过slaveThreshold值时切换为主读
   -->
   <dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
             writeType="0" dbType="mysql" dbDriver="native" switchType="1"
             slaveThreshold="100">
       <heartbeat>select user()</heartbeat>
       <writeHost host="hostM1" url="192.168.24.129:3306" user="root"
                  password="root" >
       </writeHost>
   </dataHost>
</mycat:schema>
  

配置server.xml 

server.xml 介绍

server.xml几乎保存了所有mycat需要的系统配置信息。最常用的是在此配置用户名、密码及权限。 

server.xml 配置

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:server SYSTEM "server.dtd">
<mycat:server xmlns:mycat="http://io.mycat/">
   <system>
       <property name="defaultSqlParser">druidparser</property>
   </system>
   <user name="mycat">
       <property name="password">mycat</property>
       <property name="schemas">TESTDB</property>
   </user>
</mycat:server>
   

配置rule.xml

rule.xml里面就定义了我们对表进行拆分所涉及到的规则定义。我们可以灵活的对表使用不同的分片算 法,或者对表使用相同的算法但具体的参数不同。这个文件里面主要有tableRule和function这两个标 签。在具体使用过程中可以按照需求添加tableRule和function。此配置文件可以不用修改,使用默认即可

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mycat:rule SYSTEM "rule.dtd">
<mycat:rule xmlns:mycat=”http://io.mycat/“ >
<tableRule name="sharding-by-intfile">
<rule>
   <columns>sharding_id</columns>
   <algorithm>hash-int</algorithm>
</rule>
</tableRule>
<function name="hash-int"
         class="io.mycat.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int.txt</property>
</function>
       </mycat:rule>
   

tableRule 标签配置说明:

name 属性指定唯一的名字,用于标识不同的表规则 rule 标签则指定对物理表中的哪一列进行拆分和使用什么路由算法。columns 内指定要拆分的列名字。algorithm 使用 function 标签中的 name 属性。连接表规则和具体路由算法。当然,多个表规则 可以连接到同一个路由算法上。table 标签内使用。让逻辑表使用这个规则进行分片。

function 标签配置说明:

name 指定算法的名字。class 制定路由算法具体的类名字。property 为具体算法需要用到的一些属性。

几个常用的分片规则 

连续分片 

日期列分区法

<!--按固定时间分片-->
<tableRule name="sharding-by-date">
   <rule>
       <columns>create_time</columns>
       <algorithm>sharding-by-date</algorithm>
   </rule>
</tableRule>
<function name="sharding-by-date"
         class="io.mycat.route.function..PartitionByDate">
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2014-01-01</property>
<property name="sPartionDay">10</property>
</function>
       <!--按自然月分片-->
<tableRule name="sharding-by-month">
<rule>
   配置说明:
   tableRule标签:
   columns :标识将要分片的表字段
   algorithm :指定分片函数
   function标签:
   dateFormat :日期格式
   sBeginDate :开始日期
   sPartionDay :分区天数,即默认从开始日期算起,分隔10天一个分区
   二、范围约定
   配置说明:
   tableRule标签:
   <columns>create_time</columns>
   <algorithm>sharding-by-month</algorithm>
</rule>
</tableRule>
<function name="sharding-by-month"
         class="io.mycat.route.function..PartitionByMonth">
<property name="dateFormat">yyyy-MM-dd</property>
<property name="sBeginDate">2014-01-01</property>
</function>
       <!--
       按单月小时分片
       适合做日志,每月末,手工清理
       -->
<tableRule name="sharding-by-hour">
<rule>
   <columns>create_time</columns>
   <algorithm>sharding-by-hour</algorithm>
</rule>
</tableRule>
<function name="sharding-by-hour"
         class="io.mycat.route.function..LastestMonthPartition">
<property name="splitOneDay">24</property>
</function>
 

配置说明 tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:dateFormat :日期格式 sBeginDate :开始日期 sPartionDay :分区天数,即默认从开始日期算起,分隔10天一个分区 

范围约定

<tableRule name="auto-sharding-long">
<rule>
<columns>user_id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
<function name="rang-long"
class="io.mycat.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
</function>

配置说明 tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:mapFile :指定分片函数需要的配置文件名称

autopartition-long.txt文件内容:所有的节点配置都是从0开始,及0代表节点1,此配置非常简单,即预先制定可能的id范围对应某个分 片

# range start-end ,data node index
# K=1000,M=10000.
0-500M=0 0-100 0
500M-1000M=1 101-200 1
201-300 2
1000M-1500M=2
default=0
# 或以下写法
# 0-10000000=0
# 10000001-20000000=1
 

优势:扩容无需迁移数据 缺点:热点数据,并发受限 

离散分片 

枚举法

<tableRule name="sharding-by-intfile">
   <rule>
       <columns>user_id</columns>
       <algorithm>hash-int</algorithm>
   </rule>
</tableRule>
<function name="hash-int"
         class="io.mycat.route.function.PartitionByFileMap">
<property name="mapFile">partition-hash-int.txt</property>
<property name="type">0</property>
<property name="defaultNode">0</property>
</function>

 

配置说明 tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:mapFile :指定分片函数需要的配置文件名称 type :默认值为0,0表示Integer,非零表示String defaultNode :指定默认节点,小于0表示不设置默认节点,大于等于0表示设置默认节点,0代表节 点1。

默认节点的作用:枚举分片时,如果碰到不识别的枚举值,就让它路由到默认节点。如果不配置默认节点(defaultNode值小于0表示不配置默认节点),碰到不识别的枚举值 就会报错:

partition-hash-int.txt 配置:

10000=0 列等于10000 放第一个分片
10010=1
男=0
女=1
beijing=0
tianjin=1
zhanghai=2
   

求模法

<tableRule name="mod-long">
<rule>
<columns>user_id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long"
class="io.mycat.route.function.PartitionByMod">
<!-- how many data nodes -->
<property name="count">3</property>
</function>
 

tableRule标签:columns :标识将要分片的表字段 algorithm :指定分片函数 function标签:count :节点数量 

一致性hash

<tableRule name="sharding-by-murmur">
   <rule>
       <columns>user_id</columns>
       <algorithm>murmur</algorithm>
   </rule>
</tableRule>
<function name="murmur"
         class="io.mycat.route.function.PartitionByMurmurHash">
<!-- 默认是0 -->
<property name="seed">0</property>
<!-- 要分片的数据库节点数量,必须指定,否则没法分片 -->
<property name="count">2</property>
<!-- 一个实际的数据库节点被映射为这么多虚拟节点,默认是160倍,也就是虚拟节点数是物理节点数
的160倍 -->
<property name="virtualBucketTimes">160</property>
<!-- <property name="weightMapFile">weightMapFile</property> 节点的权重,没有指
定权重的节点默认是1。以properties文件的格式填写,以从0开始到count-1的整数值也就是节点索引为
key,以节点权重值为值。所有权重值必须是正整数,否则以1代替 -->
<!-- <property name="bucketMapPath">/etc/mycat/bucketMapPath</property>
用于测试时观察各物理节点与虚拟节点的分布情况,如果指定了这个属性,会把虚拟节点的murmur
hash值与物理节点的映射按行输出到这个文件,没有默认值,如果不指定,就不会输出任何东西 -->
</function>

 

MyCat分片怎么配置

等,还有一些其他分片,这里,暂时不说明 

测试分片

把商品表分片存储到三个数据节点上。MyCat分片怎么配置 

创建表

配置完毕后,重新启动mycat。使用mysql客户端连接mycat,创建表。

CREATE TABLE item (
id int(11) NOT NULL,
name varchar(20) DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
     

分片测试

分片策略指定为“auto-sharding-long” 分片规则指定为“mod-long”

到此,相信大家对“MyCat分片怎么配置”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/133548.html

(0)

相关推荐

  • 行程记录,vivo手机可以查行程记录吗

    技术行程记录,vivo手机可以查行程记录吗要看情况而定行程记录,因为在飞行模式下是可以开始GPS和WIFI的。如果你开启了WIFI并且连上了网络,那你就可以根据附近的WIFI获取位置信息,然后将位置信息上传到vivo的服

    生活 2021年10月31日
  • 在 Linux中find命令使用技巧

    技术在 Linux中find命令使用技巧 在 Linux中find命令使用技巧不管我决心如何组织文件,似乎总有无法找到文件的时候。有时是因为我不记得最初的文件名,其他时候,我知道名字,但我不记得在哪里保

    礼包 2021年12月22日
  • 7272好看动漫排行,你心目中的动漫排行榜前十名

    技术7272好看动漫排行,你心目中的动漫排行榜前十名1.机动战士高达00 2.新世纪福音战士
    3.铁臂阿童木
    4.多拉A梦
    5.名侦探柯南 在介绍点动漫给你 《死神》(打斗)
    《海贼王》(励志,打斗)
    《火影忍

    生活 2021年10月26日
  • 香港多IP服务器、香港站群服务器为什么有利于SEO

    技术香港多IP服务器、香港站群服务器为什么有利于SEO网站所有者花费大量时间和金钱在搜索引擎的第一页上展示他们极具竞争力的网站。优化页面以使搜索引擎更容易阅读网站、制作SEO兼容的内容、从其他优质网站获取反向链接、发布促

    礼包 2021年11月1日
  • 小草怎么画,怎样画简笔画“冬虫夏草”

    技术小草怎么画,怎样画简笔画“冬虫夏草”方法小草怎么画:1、在白纸上用曲线画出冬虫夏草的轮廓。
    2、再用一条弯曲的曲线画出虫子的形态,这是一种冬天的形状。
    3、用曲线画出它的尾巴部分,这其实就像根须一样。
    4、再用小线条

    生活 2021年10月31日
  • DIV布局规范中CSS类及id命名方式是什么

    技术DIV布局规范中CSS类及id命名方式是什么这篇文章将为大家详细讲解有关DIV布局规范中CSS类及id命名方式是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。DI

    攻略 2021年11月11日