mycat全局序列号(主键)及分片配置

mycat全局序列号(主键)及分片配置

1.建全局sequence表

CREATE TABLE `MYCAT_SEQUENCE` (
  `NAME` varchar(50) COLLATE utf8mb4_bin NOT NULL,
  `current_value` int(11) NOT NULL,
  `increment` int(11) NOT NULL DEFAULT '100',
  PRIMARY KEY (`NAME`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

2.插入数据
insert 本用的表名 BALANCE_REPORT
name:要使用全局主键的表名
current_value:是初始值
increment:是每次增长多少
在这里插入图片描述

注意:
1.表名大小问题:mycat默认全是大写
2.increment可能一次增涨多个(比如100个)应用拿到之后自行逐1增长,用完之后再来取,减少mysql数据库压力。如果没用完应用重起了,剩下的丢弃,重新从mysql取,避免主键错乱。

3.修改配置文件

vim /etc/mycat/sequence_db_conf.properties

填写对应表名 BALANCE_REPORT=dn_svc
其中 dn_svc就是后面在schema.xml中配置的datanode
在这里插入图片描述

4.配置schema.xml

vim /etc/mycat/schema.xml

主要是添加: primaryKey="id" autoIncrement="true"

注意:
autoIncrement针对的是primaryKey,跟分片无关;
分片字段是rule="mod-accountID-long"这里决定的。

schema.xml

<schema name="sc_svc" checkSQLschema="false" sqlMaxLimit="100">
        <table name="balance_report" dataNode="dn_svc$1-10" primaryKey="id" rule="mod-accountID-long" splitTableNames ="true" autoIncrement="true">
        </table>
    </schema>


   <!-- 生成 sequence 的节点 -->
    <dataNode name="dn_svc" dataHost="host_svc" database="svc"/>


    <!-- 生成sequnce -->
    <dataHost name="host_svc" balance="0" dbDriver="native" dbType="mysql" maxCon="1000" minCon="10" slaveThreshold="100" switchType="1" writeType="0">
        <heartbeat>select user()</heartbeat>
        <!-- can have multi write hosts -->
        <writeHost host="svchost" url="192.168.88.203:3306" user="root" password="Root@123" />
    </dataHost>

5。配置rule.xml
rule.xml

<tableRule name="mod-accountID-long">
        <rule>
            <columns>account_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>

autopartition-long.txt

# range start-end ,data node index
# K=1000,M=10000.
0-1000M=0
10000001-2000M=1
20000001-3000M=2
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100389.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • php mysql 经纬度_mysql,php和js根据经纬度计算距离

    php mysql 经纬度_mysql,php和js根据经纬度计算距离根据经纬度计算距离公式图片来自互联网对上面的公式解释如下:Lung1Lat1表示A点经纬度,Lung2Lat2表示B点经纬度;a=Lat1–Lat2为两点纬度之差b=Lung1-Lung2为两点经度之差;6378.137为地球半径,单位为千米;计算出来的结果单位为千米,若将半径改为米为单位则计算的结果单位为米。计算精度与谷歌地图的距离精度差不多,相差范围在0.2米以下。参数说明…

  • goland软件官方软件激活破解方法

    goland软件官方软件激活破解方法,https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • oracle错误904解决方法_oracle导出数据库命令

    oracle错误904解决方法_oracle导出数据库命令今天在导数据库遇到了奇怪的问题C:\DocumentsandSettings\noah>expsystem/pd0000@orclfile=d:\data.dmpwner=devlog=d:\log.log.即将导出DEV的表通过常规路径…..正在导出表B_COMMON_BOXEXP-00008:遇到ORACLE错误9…

  • TCP的拥塞控制_假设tcp拥塞控制算法中

    TCP的拥塞控制_假设tcp拥塞控制算法中在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。当输入的负载到达一定程度吞吐量不会增加,即一部分网络资源会丢失掉,网络的吞吐量维持在其所能控制的最大值,转发节点的缓存不够大这造成分…

  • 解决idea的控制台输出Tomcat日志乱码问题「建议收藏」

    解决idea的控制台输出Tomcat日志乱码问题「建议收藏」解决idea的控制台输出Tomcat日志乱码问题乱码原因由于window下的idea默认编码集都默认是GBK,而Tomcat目前版本是UTF-8,所以会出现乱码。第一种解决方案:将Tomcat输出日志的编码改为GBK在Tomcat的config目录下有一个logging.properties文件,文件中可以在五个地方设置编码,分别对应红色圆圈内五个日志输出文档(默认只选中了两个),将UTF-8的地方全改成GBK1catalina.org.apache.juli.FileHandler.l

  • HTML导航菜单

    HTML导航菜单1导航菜单程序管理版本管理渠道管理资源管理 上传资源分离左右页面#conter{width:90%;margin:auto;}#help-left{width:10%;

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号