解决主键冲突问题:例如id自增的order表,如果分布式情况下不处理的话,当每个表的第一条数据id都是1。

  怎么确保id唯一呢?

  解决办法:

  1、本地文件(不推荐)

  2、数据库方式(推荐)

  3、时间戳(位数较多,占空间多,并且不安全)

  数据库方式详解:

    原理:利用数据库的一个表来进行计数累加。但是并不是每次生成序列都需要读写该数据库,这样效率不好。mycat会预加载一部分号段到mycat内存中,这样下次使用先使用内存中的号段,直到使用完毕,才去数据获取下一批号段。如果mycat获取的号段没用完,中途挂掉了,待到mycat在上线时,会重新从下一号段开始获取,例如第一次获取1-100,然而没用完挂了,下次mycat上线就从200开始获取。

    配置步骤:

      找一数据库维护MYCAT_SEQUENCE ,我是在order_win数据库中维护。

        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;

      创建相关函数,mycat官方提供。

        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 $$
        DELIMITER;

        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 $$
        DELIMITER ;

        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 $$
        DELIMITER;

        增加要使用的序列

        INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES ('ORDERS', 400000,100);

        执行完后,确认下已经创建。并修改mycat的配置。

        vim /usr/local/mycat/conf/sequence_db_conf.properties  配置ORDERS这个序列在哪个节点上,参考schema.xml

        vim /usr/local/mycat/conf/server.xml       0文件方式1数据库方式2时间戳方式

        然后重启mycat,测试。

        

      

mycat - 全局序列的更多相关文章

  1. MYCAT全局序列

    1.本地文件方式 sequnceHandlerType = 0 /root/data/program/mycat/conf/server.xml   <property name="s ...

  2. Mycat配置分库分表(垂直分库、水平分表)、全局序列

    1. Mycat相关文章   Linux安装Mycat1.6.7.4并实现Mysql数据库读写分离简单配置   Linux安装Mysql8.0.20并配置主从复制(一主一从,双主双从)   Docke ...

  3. Mycat 全局系列号

    标签:utf8 概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server. ...

  4. Mycat 全局系列号(转载)

    概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server.xml < ...

  5. MyCAT全局序列号

    在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一.为此,MyCat 提供了全局sequence,并且提供了包含本地配置和数据库配置等多种实现方式. 本地文件方式 原理:此方式MyCA ...

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

    全局表 全局表的作用 在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性: 变动不频繁 数据量总体变化不大 数据规模 ...

  7. MyCAT全局序列号-数据库方式

    1.MyCat中的全局序列号介绍 在实现分库分表的情况下,数据库自增主键已无法保证自增主键的全局唯一.为此,MyCat 提供了全局 sequence,并且提供了包含本地配置和数据库配置等多种实现方式. ...

  8. MyCat配置简述以及mycat全局ID

    Mycat可以直接下载解压,简单配置后可以使用,主要配置项如下: 1. log4j2.xml:配置MyCat日志,包括位置,格式,单个文件大小 2. rule.xml: 配置分片规则 3. schem ...

  9. mycat 全局表

    全局表的作用 在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,考虑到字典表具有以下几个特性: 变动不频繁 数据量总体变化不大 数据规模不大,很 ...

随机推荐

  1. 【js】鼠标跟随效果

    1.实现思想 ①鼠标跟随效果,发生在鼠标移动的时候,故需要使用onmousemove事件 ②当页面内容多于1屏时,就需要考虑滚动距离的问题 ③想实现鼠标跟随的效果需要: 元素的left位置 = 鼠标当 ...

  2. How to get Pycharm

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如:代码跳转.智能提示.自动完成.单元测试.版本控制.此外,该IDE提供了一些高级功能, ...

  3. Xmind8 破解

    链接: https://pan.baidu.com/s/1IaNyngxJnKDQ0dNqPasA7w 提取码: g3q2 步骤1: 下载安装XMind 8 . 百度网盘下载: https://pan ...

  4. 初学Python——装饰器

    一.什么是装饰器 当我们做好一个产品之后,需要对它进行不断地维护,对某些函数增加一些功能.这个时候如果去修改源代码将是非常不合适的.(原因:1.原则上已经写好的函数尽量不去修改它,因为一旦修改可能会导 ...

  5. 解决git commit 大文件推送失败

    //查找大文件 git verify-pack -v .git/objects/pack/pack-*.idx | sort -k 3 -g | tail -5 //根据上面查找到的hash值,筛选文 ...

  6. jquery.$.ajax简单的使用

    function LoadWFS() { var viewer = new Cesium.Viewer('cesiumContainer'); $.ajax({ url: "http://l ...

  7. 从零开始搭建django前后端分离项目 系列一(技术选型)

    前言 最近公司要求基于公司的hadoop平台做一个关于电信移动网络的数据分析平台,整个项目需求大体分为四大功能模块:数据挖掘分析.报表数据查询.GIS地理化展示.任务监控管理.由于页面功能较复杂,所以 ...

  8. redis为什么这么火该怎么用

    最近一些人在介绍方案时,经常会出现redis这个词,于是很多小伙伴百度完redis也就觉得它是一个缓存,然后项目里面把数据丢进去完事,甚至有例如将实体属性拆分塞进redis hash里面的奇怪用法等等 ...

  9. CF1129E Legendary Tree 构造

    传送门 神树可还行 我们令\(1\)为树根,那么如果要询问\(x\)是否在\(y\)子树中,就令\(S = \{1\} , T = \{x\} , u = y\),询问一下就可以知道了. 那么考虑先构 ...

  10. 深入理解Java虚拟机(类文件结构+类加载机制+字节码执行引擎)

    目录 1.类文件结构 1.1 Class类文件结构 1.2 魔数与Class文件的版本 1.3 常量池 1.4 访问标志 1.5 类索引.父索引与接口索引集合 1.6 字段表集合 1.7 方法集合 1 ...