Mysql系列七:分库分表技术难题之分布式全局唯一id解决方案

 

一、前言

在前面的文章

#default global sequence GLOBAL.HISIDS= GLOBAL.MINID=10001 GLOBAL.MAXID=20000 GLOBAL.CURID=10000  # self define sequence COMPANY.HISIDS= COMPANY.MINID=1001 COMPANY.MAXID=2000 COMPANY.CURID=1000  CUSTOMER.HISIDS= CUSTOMER.MINID=1001 CUSTOMER.MAXID=2000 CUSTOMER.CURID=1000  ORDER.HISIDS= ORDER.MINID=1001 ORDER.MAXID=2000 ORDER.CURID=1000  HOTNEWS.HISIDS= HOTNEWS.MINID=1001 HOTNEWS.MAXID=2000 HOTNEWS.CURID=1000
复制代码

拿HOTNEWS这个表的配置来说明:

复制代码
HOTNEWS.HISIDS=       #HOTNEWS这张表历史使用的自增id,一般不配置 HOTNEWS.MINID=1001    #HOTNEWS这张表使用的最小自增id HOTNEWS.MAXID=2000    #HOTNEWS这张表使用的最大自增id HOTNEWS.CURID=1000    #HOTNEWS这张表当前使用的自增id
复制代码

缺点:当Mycat重新发布后,自增ID恢复到初始值。原因是因为sequnceHandlerType定义的是静态变量,不推荐使用

示例:

1.1 在mycat的schema.xml文件里面分别配置逻辑表hotnews和mysql的主从机,注意autoIncrement="true"才能使用全局唯一id

复制代码
<table name="hotnews" primaryKey="ID" autoIncrement="true" dataNode="dn1,dn2,dn3" rule="mod-long" /><dataNode name="dn1" dataHost="centos1" database="db1" />        <dataNode name="dn2" dataHost="centos1" database="db2" />        <dataNode name="dn3" dataHost="centos1" database="db3" />        <dataHost name="centos1" maxCon="1000" minCon="10" balance="0"                           writeType="0" dbType="mysql" dbDriver="native" switchType="1"  slaveThreshold="100">                <heartbeat
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信