扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
分布式数据库MyCat如何实现主键全局自增,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。
目前创新互联公司已为超过千家的企业提供了网站建设、域名、虚拟主机、绵阳服务器托管、企业网站设计、滨海网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
今天就来聊一聊主键全局自增要如何实现。
主键自增这应该算是一个非常常见的需求,在单机数据库中,这个需求一个 auto_increment
就能实现,但是在数据库集群中,这个需求却变复杂了,因为存在多个数据库实例 ,各自都是主键自增,合在一起就不是主键自增了。
最简单的办法莫过于通过设置主键自增的步长和起始偏移量来处理这个问题。默认情况下,主键自增步长为 1 ,如果我们有三个数据库实例,我们可以将主键自增步长设置为 3 ,这样对于第一个数据库实例而言,主键自增就是 1、4、7、10...,对于第二个数据库实例而言,主键自增就是 2、5、8、11...,对于第三个数据库实例而言,主键自增就是 3、6、9、12....。
MSSQL 可以直接在 SQL 中指定主键的自增步长和起始偏移量,但是 MySQL 则需要修改数据库配置才能实现,因此这里不推荐使用这种方式。
MyCat 作为一个分布式数据库中介,屏蔽了数据库集群的操作,让我们操作数据库集群就像操作单机版数据库一样,对于主键自增,它有自己的方案:
通过本地文件实现
通过数据库实现
通过本地时间戳实现
通过分布式 ZK ID 生成器实现
通过 ZK 递增方式实现
今天我们就先来看看看如何通过 ZK 递增的方式实现主键全局自增。
配置步骤如下:
首先修改主键自增方式为 4 ,4 表示使用 zookeeper 实现主键自增。
server.xml
配置表自增,并且设置主键
schema.xml
设置主键自增,并且设置主键为 id 。
配置 zookeeper 的信息
在 myid.properties 中配置 zookeeper 信息:
配置要自增的表
sequence_conf.properties
注意,这里表名字要大写。
TABLE.MINID 某线程当前区间内最小值
TABLE.MAXID 某线程当前区间内最大值
TABLE.CURID 某线程当前区间内当前值
文件配置的MAXID以及MINID决定每次取得区间,这个对于每个线程或者进程都有效
文件中的这三个属性配置只对第一个进程的第一个线程有效,其他线程和进程会动态读取 ZK
重启 MyCat 测试
最后重启 MyCat ,删掉之前创建的表,然后创建新表进行测试即可。
看完上述内容,你们掌握分布式数据库MyCat如何实现主键全局自增的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流