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位网友表示赞同!
有时候跟朋友一起玩,讨论着如何攻略关卡,增进了我们之间的感情。
有6位网友表示赞同!
《mycat》的音乐真心不错,氛围感十足。
有20位网友表示赞同!
这个游戏的剧情也很丰富,每天都发生新事情,让游戏体验更加完整。
有15位网友表示赞同!
刚开始担心难度很大,但后来发现只要掌握技巧很快就能解锁更多内容。
有9位网友表示赞同!
<em>“爱猫人士的福音!”</em>
有8位网友表示赞同!
《mycat》里面的猫咪互动功能很棒,感觉自己真的在养一只宠物猫。
有14位网友表示赞同!
游戏更新速度快,新玩法层出不穷,总感觉有新鲜玩法等着我去发现。
有17位网友表示赞同!