①什么是分片。
简单来说,就是指通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库节点机器上,以达到分散单台设备负载的效果。
数据的切分(分片),根据其切分(分片)的规则的类型,可以分为两种切分(分片)模式:
(1)垂直(纵向)切分(分片)。将同一个数据库的不同的每一张表,分别分到不同的每一个数据库中。如:这个数据库存放这几张表,那个数据库存放另外的几张表。
但垂直(纵向)切分(分片),不能满足我们的需求,因为可能一张表,一台机器节点就存放不下。这时候需要第二种分片(切分)方式。
(2)水平(横向)切分(分片)。将同一张表的数据通过某种条件,拆分到好几台数据库机器节点上。
②mycat分片设置。
通过连接数据库服务器。修改配置。
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://org.opencloudb/">
<schema name="TESTDB" checkSQLschema="false" sqlMaxLimit="100">
TESTDB就是逻辑库的库名,我们程序连接,就连接这个数据库(逻辑库)。这个名字可以自定义。
<table name="travelrecord" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />
逻辑表,表名字是travelrecord,数据节点有dn1,dn2,dn3,表示这个表travelrecord来自于数据节点:dn1,dn2,dn3。同样dn1,dn2,dn3这个数据节点的名字可以随意取,这个数据节点在后面配置了。
auto-sharding-long按ID值划分(分片)的规则:
1-----500万的ID是第一个分片,也就是dn1这个分片(数据节点)
500万----1000万的ID是第二个分片,也就是dn2这个分片(数据节点)
1000万-----1500万的ID是第三个分片,也就是dn3这个分片(数据节点)
具体这个规则,在哪里配置,后面会说。
</schema>
<dataNode name="dn1" dataHost="localhost1" database="db1" />
<dataNode name="dn2" dataHost="localhost1" database="db2" />
<dataNode name="dn3" dataHost="localhost1" database="db3" />
配置数据节点,dn1,dn2,dn3,dataHost是节点主机,localhost1这个名字可以随意取,后面有配置与之对应。
database="db1"是db1物理库的库名。不是逻辑库。
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
writeType="0" dbTy