Mycat学习实战-Mycat全局主键


@(学习)[mycat, mysql]
1. Mycat全局主键介绍2. Mycat全局主键方式2.1 本地文件方式2.2 本地时间戳方式2.3 数据库方式2.4 zookeeper方式
在分库分表的情况下,数据库自增主键无法保证自增主键的全局唯一。全局序列号的语法符合标准SQL规范,其格式为:
next value for MYCATSEQ_XXX
MYCATSEQ_XXX是序列号的名字,MyCAT自动创建新开发云主机域名的序列号,免去了开发的复杂度,另外,MyCAT也提供了一个全局的序列号,名称为:MYCATSEQ_GLOBAL注意,MYCATSEQ_必须大写才能正确识别。
MyCAT温馨提示:实践中,建议每个表用自己的序列号,序列号的命名建议为MYCATSEQ _tableName_ID_SEQ。SQL中使用说明
自定义序列号的标识为:MYCATSEQ_XXX,其中XXX为具体定义的sequence的名称,应用举例如下:
使用默认的全局sequence:
insert into tb1(id,name) values(next value for MYCATSEQ_GLOBAL,'tb1');
使用自定义的sequence:
insert into tb2(id,name) values(next value for MYCATSEQ_MY1,'tb2');
获取最新的值
select next value for MYCATSEQ_xxxMycat提供的全局主键方式如下:本地文件方式:使用服务器本地磁盘文件的方式数据库方式:使用数据库的方式本地时间戳方式:使用时间戳方式分布式zookeeper生成IDvim conf/server.xmlvim conf/sequence_conf.properties以上配置文件中,自定义表名必须大写书写HISIDS:表示使用过的历史分段(一般无特殊需要可不配置)MINID :最小ID 值MAXID :表示最大ID 值CURID 表示当前ID 值。当 sequence_conf.properties的配置名字与 表名一致的时候sql可以不包含ID字段(此处表名为id_local_filevim conf/schema.xml实验验证:优点:本地加载,读取速度较快,配置简单
缺点:mycat重新发布时,seq文件需要替换,集群部署无法用此方式,路由到不同的mycat上无法保证id唯一,使mycat变成了有状态的中间件。vim conf/server.xmlvim conf/sequence_time_conf.properties两个属性值为:0-31 任意整数vim conf/schema.xml实验验证:本地时间戳计算方式
ID= 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加)
长度18位,因此下面提示非常重要。注意
表字段长度必须大于等于18位优点:不存在mycat重新发布影响seq的问题,
缺点:字段长度是18位。vim conf/server.xmlvim conf/sequence_db_conf.properties在test1节点本地数据库添加函数和表,以下为sql内容:添加过程:以下步骤非常关键,让id_db表也支持数据库序列号。vim conf/schema.xml注意
将mycat_sequence表也放出来,且注意大小写(数据库默认区分大小写)实验验证:优点:重新部署mycat不受影响
缺点:当配置节点的部署是主从复制,当主挂了切从后会有重复。注意
节点如果是主从切换后,数据id可能会有异常(重复)vim conf/server.xmlvim conf/sequence_distributed_conf.propertiesschema的table 增加属性autoIncrement="true"primaryKey="id"基于ZK 与本地配置的分布式ID 生成器(可以通过ZK 获取集群(机房)唯一InstanceID,也可以通过配置文件配置InstanceID)ID 结构:long 64 位,ID 最大可占63 位
current time millis(微秒时间戳38 位,可以使用17 年)
instanceId(实例ID,可以通过ZK 或者配置文件获取,5 位,也就是十进制0-31)
threadId(线程ID,9 位)
increment(自增,6 位)
一共63 位,可以承受单机房单机器单线程1000*(2^6)=640000 的并发。优点:无悲观锁,无强竞争,吞吐量更高
缺点:对zookeeper集群的要求增加。参考资料:
[1]http://mycat.io/
[2] 《分布式数据库架构及企业实践——基于Mycat中间件》
[3] 龙哥官方课程课件、博客

相关推荐: Percona-XtraDB-Cluster的编译安装

环境:操作系统centos7.4,mysql 安装在/data/mysql下,mysql属于mysql用户,pxc-5.7.191.1 下载pxc-5.7.19mkdir -p /home/sunx/tools wget -P /home/sunx/tools…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 06/04 17:15
Next 06/04 17:15

相关推荐