Windows实现mycat分库

mycat分库的目的是为了让数据进行分片存储,目的是为了降低每个数据库的压力。

分片规则主要是在rule.xml文件里面配置。

rule.xml主要标签介绍:

打开配置文件,上面是<tableRule name="分片规则名称">,

<tableRule name="">
<rule>
<columns>使用规则的列</columns>
<algorithm>crc32slot</algorithm>算法指向
</rule>
</tableRule>

对应的是配置文件下面:

<function name="分片规则名称" class="分片规则的实现">

<function name="crc32slot" class="">
<propertry name = "count">2</propertry>要分片的数据库节点数量,必须指定,否则没法分片
</function>

常用的分片规则介绍:

1.auto-sharding-long范围约定

以500万为单位,实现分片规则。

逻辑库A对应dataNode-db1和db2,1-500万保存在db1中,500万零1到1000万保存在db2中,1000万零1到1500万保存在db1中,依次类推。

2.crc32slot规则

在CRUD操作时,根据具体数据的crc32算法计算,数据应该保存在哪一个dataNode(物理数据库)中

配置分片规则需要注意的地方

1.<columns>id</columns>中推荐配置主键列

2.所有的tableRule只能使用一次。如果需要为多个表配置相同的分片规则,那么需要再次定义该规则。rule中定义的是表的分片规则,每一个规则只能对应一个表,如果多个表使用相同的规则的话,那么就需要在rule.xml中定义多个tableRule,只是名字不一样,columns不一样。

	<tableRule name="rule1">
		<rule>
			<columns>id</columns>
			<algorithm>func1</algorithm>
		</rule>
	</tableRule>
	
		<tableRule name="rule2">
		<rule>
			<columns>id</columns>
			<algorithm>func1</algorithm>
		</rule>
	</tableRule>
<schema name="TEST" checkSQLschema="false" sqlMaxLimit="100"> <!--name:逻辑库的名称,可以随便起。-->
		<table name="basic_user"  dataNode="dn1,dn2,dn3" rule="rule1"/>
		<table name="basic_user"  dataNode="dn1,dn2,dn3" rule="rule2"/><!--name:物理库的表明。dataNode和下面的name对应,如果是多个库,就用,隔开。rule:分库规则,根据算法来决定表中的数据插入到下面的哪个库中-->
	</schema>

3.在crc32slot算法中的分片数量一旦给定,mycat会将该分片数量和slor的取值范围保存到文件中。在修改分片数量时是不会生效的,需要将该文件删除。文件位置位于conf目录中的ruledata目录中。

mycat分库的配置

准备:在master上创建3个库,分别为demo1,demo2,demo3

1.修改Schema.xml

 

2.通过mycat来新建表,不能直接去master中创建表,因为使用了crc32slot算法的话,建表的时候会附带一个字段_slot,所以建表的时候只能通过mycat来创建。

使用mycat插入数据时,语句中必须要指定所有的列。即使是一个完全项插入也不允许省略列名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值