千机游戏提供最新游戏下载和手游攻略!

深入解析——全新Mycat数据库中间件解决方案

发布时间:2024-08-26浏览:59

1.mycat下载地址 https://github.com/MyCATApache/Mycat-download(下载release版本)

2.直接在本地解压

3.在./mycat/conf目录下配置wrapper.conf配置jdk 在windows中需要这样配置

wrapper.java.command=D:/Java/jdk1.8.0_171/bin/java.exe

4.配置server.xml,schema.xml,rule.xml

4.1在server.xml中把

<!--

off heap for merge/order/group/limit 1开启 0关闭

-->

<property name="useOffHeapForMerge">0</property>改为0,默认为1,否则启动的时候会报错

在wrapper.conf中把他注释掉

#wrapper.java.additional.3=-XX:MaxPermSize=64M

<user name="root">

<property name="password">123456</property>

<property name="schemas">TESTDB</property>

<!-- 表级 DML 权限设置 -->

<!--

<privileges check="false">

<schema name="TESTDB" dml="0110" >

<table name="tb01" dml="0000"></table>

<table name="tb02" dml="1111"></table>

</schema>

</privileges>

-->

</user>

<user name="user">

<property name="password">user</property>

<property name="schemas">TESTDB</property>

<property name="readOnly">true</property>

</user>在这里配置mycat用户名密码

5.schema.xml的定义与配置在http://www.mycat.io/document/mycat-definitive-guide.pdf中讲的很明确,就不在多说了

dataNode的数量要与autopartition-long.txt中的数量对应

# range start-end ,data node index

# K=1000,M=10000.

0-500M=0

500M-1000M=1

这表要有两个dataNode

6.记录下全局序列号配置的方法

配置全局序列号有三种方式,server.xml中<property name="sequnceHandlerType">1</property>

0:本地文件方式

缺点:当 MyCAT 重新发布后,配置文件中的 sequence 会恢复到初始值。

优点:本地加载,读取速度较快

1:数据库方式

在数据库中建立一张表,存放 sequence 名称(name),sequence 当前值(current_value),步长(increment int 类型每次读取多少个 sequence,假设为 K)等信息;

当初次使用该 sequence 时,根据传入的 sequence 名称,从数据库这张表中读取 current_value,和 increment 到 MyCat 中,并将 数据库中的 current_value 设置为原 current_value 值+increment 值。 111 .MyCat 将读取到 current_value+increment 作为本次 要使用的 sequence 值,下次使用时,自动加 1,当 使用 increment 次后,执行步骤 1)相同的操作。 MyCat 负责维护这张表,用到哪 些sequence,只需要在这张表中插入一条记录即可。若某次读取的 sequence 没有用完,系统就停掉了,则这次读取的 sequence 剩 余值不会再使用。

2:本地时间戳方式

ID= 64 位二进制 (42(毫秒)+5(机器 ID)+5(业务编码)+12(重复累加) 换算成十进制为 18 位数的 long 类型,每毫秒可以并发 12 位二 进制的累加。

目前我使用的是数据库方式

schema中配置<table name="access_notes" primaryKey="ID" dataNode="dn1,dn2" rule="sharding-by-murmur" />

在dn1中使用如下sql语句

创建MYCAT_SEQUENCE表<br>CREATE TABLE MYCAT_SEQUENCE (

`name` VARCHAR(50) NOT NULL,

current_value INT NOT NULL,

increment INT NOT NULL DEFAULT 1,

remark varchar(100), -- remark 并不是必须的,在这里我是为了让每一个表都对应一个全局的自增,在Remark中配置自增项对应的表名。方便后期维护

PRIMARY KEY(name)) ENGINE=InnoDB;

<br>-- – 获取当前sequence的值(返回当前值,增量)

DROP FUNCTION IF EXISTS `mycat_seq_currval`;

DELIMITER ;;

CREATE DEFINER=`root`@`%` FUNCTION `mycat_seq_currval`(seq_name VARCHAR(50)) RETURNS varchar(64) CHARSET latin1

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 ;

;;

DELIMITER ;

-- 设置sequence值

DROP FUNCTION IF EXISTS `mycat_seq_nextval`;

DELIMITER ;;

CREATE DEFINER=`root`@`%` FUNCTION `mycat_seq_nextval`(seq_name VARCHAR(50)) RETURNS varchar(64) CHARSET latin1

DETERMINISTIC

BEGIN

UPDATE MYCAT_SEQUENCE

SET current_value = current_value + increment WHERE name = seq_name;

RETURN mycat_seq_currval(seq_name);

;;

DELIMITER ;

-- 获取下一个sequence值

DROP FUNCTION IF EXISTS `mycat_seq_setval`;

DELIMITER ;;

CREATE DEFINER=`root`@`%` FUNCTION `mycat_seq_setval`(seq_name VARCHAR(50), value INTEGER) RETURNS varchar(64) CHARSET latin1

DETERMINISTIC

BEGIN

UPDATE MYCAT_SEQUENCE

SET current_value = value

WHERE name = seq_name;

RETURN mycat_seq_currval(seq_name);

;;

DELIMITER ; 此处引用https://www.cnblogs.com/raphael5200/p/5900007.html中的sql

插入一条数据

此时当前序列号是10,步长是1,所以数据库中插入数据的id就是从11开始

在sequence_db_conf.properties中配置ANOTES=dn1,因为这张表还有方法是在dn1这个数据库中创建的

7启动的话在bin下面mycat.bat start

用户评论

回忆未来

这款《mycat》游戏真的太有意思了,每天上班下班都能玩一会儿。

    有12位网友表示赞同!

眷恋

刚刚开始玩,《mycat》的游戏画面超级精美,猫咪造型呆萌可爱。

    有7位网友表示赞同!

开心的笨小孩

玩了几天,我发现《mycat》的玩法挺独特的,让我对这款游戏爱不释手。

    有11位网友表示赞同!

迷路的男人

游戏里可以自定义自己猫的外观和装扮,感觉自己像养了个宠物。

    有18位网友表示赞同!

容纳我ii

有时候跟朋友一起玩,讨论着如何攻略关卡,增进了我们之间的感情。

    有6位网友表示赞同!

余笙南吟

《mycat》的音乐真心不错,氛围感十足。

    有20位网友表示赞同!

咆哮

这个游戏的剧情也很丰富,每天都发生新事情,让游戏体验更加完整。

    有15位网友表示赞同!

伤离别

刚开始担心难度很大,但后来发现只要掌握技巧很快就能解锁更多内容。

    有9位网友表示赞同!

北朽暖栀

<em>“爱猫人士的福音!”</em>

    有8位网友表示赞同!

心亡则人忘

《mycat》里面的猫咪互动功能很棒,感觉自己真的在养一只宠物猫。

    有14位网友表示赞同!

涐们的幸福像流星丶

游戏更新速度快,新玩法层出不穷,总感觉有新鲜玩法等着我去发现。

    有17位网友表示赞同!

热点资讯