mycat全局表实战应用简析(下):多节点自增字段的处理

mycat详细介绍及实战 Mycat 概述 Mycat 是什么?从定义和分类来看,它是一个开源的分布式数据库系统,是一个实现了MySQL 协议的的Server,前端用户可以把它看作是一个数据库代理,用MySQL 客户端工具和命令行访问,而其后端可以用MySQL 原生(Native)协议与多个MySQL 服务器通信,也可以用JDBC 协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N 个小表,存储在后端MySQL 服务器里或者其他数据库里。 Mycat 发展到目前的版本,已经不是一个单纯的. 阅读详情

在这一篇我们已经了解了mycat全局表的概念:
http://blog.youkuaiyun.com/github_26672553/article/details/78125554
我们从终端里连接上mycat,然后创建了news_class数据表。

现在我们想要往这个表里插入数据:

INSERT INTO news_class (`class_name`) VALUES ('php');

呃呃,报错啦:
Error : mycat sequnce err.java.lang.NumberFormatException: null

是因为:我们news_class表中的字段class_id是自增字段,需要mycat特别处理。

自增字段处理

从mycat获取自增字段有3种方式:从文件配置里获取、从数据库获取、本地时间戳

从文件配置里获取自增字段

1、设置从文件里获取
server.xml里配置

    <system>
        <property name="defaultSqlParser">druidparser</property>
        <!-- 0 代表从文件配置里读取自增字段 -->
        <property name="sequnceHandlerType">0</property>
    </system>

sequnceHandlerType为1从数据库获取自增字段。

2、哪个文件?
sequence_conf.properties这个文件

#部分配置
#default global sequence
GLOBAL.HISIDS=
GLOBAL.MINID=10001
GLOBAL.MAXID=20000
GLOBAL.CURID=10000

MINID最小ID,MAXID最大ID,CURID当前ID。
明白了意思,你可以根据自己需要修改。

如果执行我们执行:

SELECT next VALUE FOR MYCATSEQ_GLOBAL;

得到的结构是:10001。

3、现在我们往要news_class全局表里插入一条数据

INSERT INTO news_class (`class_id`,`class_name`) VALUES (next VALUE FOR MYCATSEQ_GLOBAL,'php');

这样就解决了calss_id这个自增id的问题了。

记住:我们刚才是往mycat里插入的,因为是全局表,其他节点的表里也同时插入的该条记录。

4、sequence_conf.properties配置的更多

# self define sequence
MY.HISIDS=
MY.MINID=10
MY.MAXID=2000
MY.CURID=19

这是我自定义的sequence,怎么获取呢?

SELECT next VALUE FOR MYCATSEQ_MY; # 就是替换一下

值得注意是: 如果你要切换到另外一个sequence,那么之前使用过的再下一次使用又回到了原点。什么意思?

从数据库获取自增字段的值

需要在你指定的某个节点的数据库中新建一个MYCAT_SEQUENCE表

#该表字段
name   #sequence名称
current_value #当前value
Increment   #每次增长值

还要新建一些函数。

这里不啰嗦了,详细看下面文档:

#建表
CREATE TABLE MYCAT_SEQUENCE (name VARCHAR(50) NOT NULL,current_value INT NOT 
NULL,increment INT NOT NULL DEFAULT 100, PRIMARY KEY(name)) ENGINE=InnoDB;


INSERT INTO MYCAT_SEQUENCE(name,current_value,increment) VALUES ('GLOBAL', 100000, 
100); 


#获取当前 ID
DROP FUNCTION IF EXISTS mycat_seq_currval; 
DELIMITER //
CREATE FUNCTION mycat_seq_currval(seq_name VARCHAR(50)) RETURNS varchar(64)  
DETERMINISTIC 
BEGIN 
DECLARE retval VARCHAR(64); 
SET retval='-999999999,null'; 
SELECT concat(CAST(current_value AS CHAR),',',CAST(increment AS CHAR)) INTO retval FROM 
MYCAT_SEQUENCE WHERE name = seq_name; 
RETURN retval;
END;//


#设置
DROP FUNCTION IF EXISTS mycat_seq_setval; 
DELIMITER//
CREATE FUNCTION mycat_seq_setval(seq_name VARCHAR(50),value INTEGER) RETURNS varchar(64) 
DETERMINISTIC 
BEGIN 
UPDATE MYCAT_SEQUENCE 
SET current_value = value 
WHERE name = seq_name; 
RETURN mycat_seq_currval(seq_name); 
END;//



#获取下一个(新的ID)
DROP FUNCTION IF EXISTS mycat_seq_nextval; 
DELIMITER //
CREATE FUNCTION mycat_seq_nextval(seq_name VARCHAR(50)) RETURNS varchar(64)
DETERMINISTIC 
BEGIN 
UPDATE MYCAT_SEQUENCE 
SET current_value = current_value + increment WHERE name = seq_name; 
RETURN mycat_seq_currval(seq_name); 
END;//

到这里,我们就介绍了2种方式来处理mycat全局表中 自增字段的问题。我个人觉得 从文件中获取自增字段的值 这种方式更加简单。

别再只用GWR了!用Python的mgtwr包搞定时空地理加权回归(GTWR)实战 本文详细介绍了如何使用Python的mgtwr包进行时空地理加权回归(GTWR)实战,突破传统GWR模型的局限。通过核心差异解析、实战全流程演示和进阶技巧,帮助读者掌握GTWR在房价波动、污染物扩散等时空数据分析中的应用,提升模型预测精度。 阅读详情

相关推荐

实验三 Gmapping建图

自主移动机器人第三次实验课,内容包括:(1)turtlebot的gmapping建图;(2)rosbag的使用;(3)gazebo中的gmapping建图。

lj164567487的博客 4647

Mycat使用遇到的错误

仅用于记录个人使用中碰到的错误1.错误 com.mysql.jdbc.PacketTooBigException: Packet for query is too large (44 > -1). You can change this value on the server by setting the max_allowed_packet’ variable。 原因 将版本更换为5.1.3

另一个世界 3万+

【车间调度】车间调度问题的分类

本系列为自己学习调度相关知识的记录,如有误请指出,也欢迎调度方向的小伙伴加我好友共同交流。 车间调度问题的分类 根据工件和车间构成不同,车间调度问题可分为以下几种 1.单机调度问题 在单机调度问题(S,SMP)中,加工系统只有一台机床,待加工的工件有且仅有一道工序,所有工件都在该机床上进行加工。此问题是最简单的调度问题,当生产车间出现瓶颈机床时的调度就可视为此调度问题。 ...

weixin_51656605的博客 7429

mycat报错:mycat sequnce err.java.lang.NullPointerException

可以看到,用户都为root,而在mycat的schema.xml配置文件中,配置的datahost节点的用户为up,这两个用户不一致,导致空指针,修改如下即可。获取自增ID时,报了上面的错误,其中创建的函数为。在mysql命令行创建函数时,需要先修改分隔符。,然后执行创建函数的sql就行。

雅俗共赏的博客 3738

FOC项目知识点总结三 | 完全搞懂 Clarke 与 Park 变换(附动图,仿真文件以及详细讲解数学推导过程)

本文目的,最终可以完整推算两种变换 Clarke 变换 首先先看我们需要用到的两种坐标系 1. 自然坐标系 abcabcabc 我们知道,通过三相逆变电路,我们可以画出一个自然坐标系 abcabcabc ,即三相电压的坐标系,通入的电流在这三轴坐标系中变化: 将三个矢量相加合并在一起就如下图所展现: 使用三个坐标轴来表示十分的麻烦与不直观,因为其是非正交的,于是乎我们想要将其转化成使用两个正交的坐标轴来表示,于是乎便有了 Clarke变换。 Clarke 变换的作用: 将基于三轴二维的定子静止坐标系的各

Wilson Huang的博客 3万+

GEOPHYSICS 投稿避坑指南:从格式规范到双盲评审的实战解析

本文详细解析了GEOPHYSICS期刊投稿的全流程避坑指南,从格式规范、数据声明到双盲评审的实战策略。特别强调了数学公式排版、图表制作标准以及投稿系统的隐藏关卡,帮助作者避免常见错误,提升投稿成功率。

weixin_30606461的博客 236

windows和linux的MyCat使用

windows 1、下载 下载地址:http://dl.mycat.org.cn/ 我选择的windows版Mycat-server-1.6.7.1-release-20200209222254-win.tar.gz 2、解压 3、安装 cmd -----右键----- 管理员身份运行-----进入mycat的bin-----运行mycat install 安装完成后可在任务管理器查看: 使用命令 mycat start 启动服务,或在任务管理器右键手动开启 补充一些其他的命令: 4、库表准备

furenqiang的博客 660

医疗影像技术实战:如何用Python快速生成DRR图像(附完整代码)

本文详细介绍了如何使用Python实现数字重建放射影像的快速生成。通过实战代码,从基础光线投射算法到性能优化,逐步讲解DRR图像生成的核心原理与工程实践,帮助开发者掌握医疗影像处理的关键技术,赋能放射治疗规划与图像引导手术等临床工具开发。

k8l9m0n的博客 72

mycat问题记录sequnce not found in db table和mycat sequnce err.java.lang.NullPointerException

mycat相关问题

雅俗共赏的博客 732

零基础入门转录组数据可视化——绘制差异小提琴图(常规)

转录组数据可视化之一,先介绍相关基础知识,其次用实际案例为基础,由浅入深介绍差异小提琴图绘制的全过程,包括内容有相关代码和截屏。

呆猪儿的博客 635

基于DWA算法的机器人动态避障技术实现及matlab代码

DWA算法是一种基于轨迹的运动规划算法,其核心思想是:在机器人当前位置及速度的基础上,结合机器人感知到的环境信息,生成一组合法的速度指令,然后从这组速度指令中选取代价最小的速度指令作为机器人的下一步操作。下面,我们将通过一个实例来演示基于DWA算法的机器人动态避障技术实现。假设机器人在一个宽敞的场地内行驶,但场地内有一些固定障碍物和移动障碍物,机器人需要避开这些障碍物,并在场地内自由移动。本文给出了一种基于DWA算法的机器人动态避障技术实现及相应的matlab代码,读者可以根据自身需求进行修改和调整。

uote_e的博客 1001

mycat全局序列号

全局序列号 在实现分库分表的情况下,数据库自增主键已经无法保证自增主键的全局唯一,为此,mycat提供了全局sequence,并且提供了包含本地配置、数据库配置和时间戳等多种实现方式。如果需要切换其获取方式可以修改sequnceHandlerType 的值来实现: 字段 值 含义 sequnceHandlerType 0 本地配置 sequnceHandlerType 1 数据库配置 sequnceHandlerType 2 时间戳配置 1、本地文件方式 ​ 使用此方式的时候,

GLepoch的博客 850

2022年全国职业院校技能大赛 高职组大数据技术与应用卷⑦——解析答案

大数据时代,电商经营模式发生很大改变。在传统运营模式中,缺乏数据积累,人们在做出一些决策行为过程中,更多是凭借个人经验和直觉,发展路径比较自我封闭。而大数据时代,为人们提供一种全新的思路,通过大量的数据分析得出的结果将更加现实和准确。商家可以对客户的消费行为信息数据进行收集和整理,比如消费者购买产品的花费、选择产品的渠道、偏好产品的类型、产品回购周期、购买产品的目的、消费者家庭背景、工作和生活环境、个人消费观和价值观等。通过数据追踪,知道顾客从哪儿来,是看了某网站投放的广告还是通过朋友推荐链接,是新访客还是

我是网络安全兼技能大赛工程师,专注网络安全技术学习与技能大赛实战!持续分享最新的技术文章,帮你少走弯路,一起在技术赛道上进步~ 469

企业实战_14_MyCat跨分片查询_全局表

文章目录 主机名 IP地址 角色 数据库 mycat 192.168.43.32 MYCAT MYSQL imooc_db node1 192.168.43.104 MYSQL order_db node2 192.168.43.217 MYSQL product_db node3 192.168.43.172 MYSQL customer_db ...

Gblfy_Blog 1536

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

MyCat之全局表和ER表

一、全局表 全局表:如果项目中有一些数据类似数据字段,这种数据一般数据量不会很大,而且改动也比较少,通常这种表可以不需要进行拆分,把它当做全局表进行处理,每个分片都创建一张相同的表,在所有的分片上都保存一份数据。在进行插入、更新、删除操作时,会将sql语句发送到所有分片上进行执行,在进行查询时,也会把sql发送到各个节点。这样避免了跨库JOIN操作,直接与本分片上的全局表进行聚合操作。 特性:...

weixiaohuai的博客 3331

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

MyCat从入门到实战:一篇文章搞定MyCat

随着互联网及移动互联网的发展,应用系统的数据量也是成指数式增长,若采用单数据库进行数据存 储,存在以下性能瓶颈:为了解决上述问题,我们需要对数据库进行分库分表处理。分库分表的中心思想都是将数据分散存储,使得单一数据库/表的数据量变小来缓解单一数据库的性能 问题,从而达到提升数据库性能的目的。可以把MyCAT对数据库的作用和类比为 Nginx 对后端服务的影响:Nginx 将客户端流量分发到不同的后端服务以提升系统性能,而 MyCAT 则将数据库请求路由到不同的后端数据库节点,实现读写分离与分库分表,从而提高

weixin_53818428的博客 1345

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

MyCat全局表和ER--笔记(三)

全局表 全局表的作用  在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性:      变动不频繁   数据量总体变化不大   数据规模不大,很少有超过数十万条记录。    鉴于此,MyCAT 定义了一种特殊的表,称之为“全局表”,全局表具有以下特性:    全局...

weixin_30407613的博客 164

mycat水平分表 ER表 全局表

mycat水平分表 ER表 全局表

shuai的博客 784

Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)

Mycat【Mycat分片技术(水平拆分-分表、ER表、全局表)】(五)-全面详解(学习总结---从入门到深化)

986

MyCat:第八章:MyCAT In Action中文版

很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。最后祝愿各位身体健康,顺利拿到心仪的offer!由于文章的篇幅有限,所以这次的蚂蚁金服和京东面试题答案整理在了PDF文档里《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门,即可获取!若启动报内存不够,可以试着将上述内存都改小,改为1G或500M。

peixiancccc的博客 191

Java-129 深入浅出 MySQL MyCat 分布式数据库分片策略详解:E-R分片、全局表与分片规则

MyCAT 在分布式数据库分片策略中提供了多种机制,以提升查询性能和系统可扩展性。其中 E-R 表分片策略基于父子表的实体关系,将相关数据存储在同一分片,避免跨节点查询,适用于订单-订单明细、用户-用户扩展信息等场景,能显著提升性能并简化事务处理。全局表则用于存储字典类或配置类数据,如省份编码表、系统参数表,通过在各分片中冗余保存副本,实现本地化 JOIN,减少跨分片复杂性并保证一致性。**分片节点(dataNode)**是实际存储分片数据的数据库实例,每个节点独立运行,需结合中间件统一管理,确保负载均衡和

谢谢你的喜欢 我们一起无限进步 1099

mycat 分表子查询_mycat-分库分表

核心文件:server.xmlschema.xmlrule.xml垂直拆分(1)将一个库中数据表拆分到对应的库中,完成垂直拆分比如原始项目库中包含用户、订单、商品模块的数据表,现在按照模块分别建立数据库,将数据库中数据表拆分到对应数据库中,完成垂直拆分(微服务模式就已经做了垂直拆分)(2)将一张有多个字段的表按照字段使用频率来拆分成多张表,完成垂直拆分水平拆分(1)将原始库进行复制多份(库表都是一...

weixin_39658966的博客 341

mycat是什么_详解Mycat核心概念和名词

详解Mycat核心概念和名词Mycat是什么?· 一个彻底开源的,面向企业应用开发的大数据库集群· 支持事务、ACID、可以替代MySQL的加强版数据库· 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群· 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server· 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品· 一个新颖的数...

weixin_39787628的博客 600

失物招领系统e-r图_一文看懂Mycat跨分片Join实现--全局表、ER分片、HBT、sharejoin...

概述Mycat目前版本支持跨分片的join,主要实现的方式有四种。全局表ER分片HBTShareJoin ShareJoin1、概念ShareJoin是一个简单的跨分片Join,基于HBT的方式实现。目前支持2个表的join,原理就是解析SQL语句,拆分成单表的SQL语句执行,然后把各个节点的数据汇集。支持任意配置的A,B表如:A,B的dataNode相同A,B的dataNode不同或2、相关类图...

weixin_39553458的博客 404

MyCat笔记(一):MyCat 使用、名词介绍

1.什么是MyCat 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 一个新颖的数据库中间件产品 (官网介绍更详细...

扛麻袋的少年的博客 1690

二、MyCAT核心配置与概念详解

MyCat

wade1010的专栏 426
上一篇: mycat中全局表的实战应用简析(上)
下一篇: JDBC入门、简单SQL查询
学习笔记666
博客等级 码龄12年 1047粉丝 1369原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值