sequence配置文件
在实现分库分表的情况下,数据库的自增已经无法保证在集群中是全局唯一的主键,因此,Mycat提供了全局sequence,并且提供了本地配置、数据库配置等多种实现方式。
1. 本地文件方式
采用该方法,Mycat将sequence配置到classpath目录的sequence_conf.properties文件中。
在sequence_conf.properties文件中做如下配置:
GLOBAL.HISIDS= ##HISIDS表示使用过的历史分段(一般无特殊需要则可不配置)
GLOBAL.MINID=10001 ##MINID表示最小的ID值
GLOBAL.MAXID=20000 ##MAXID表示最大的ID值
GLOBAL.CURID=10000 ##CURID表示当前的ID值
要启用这种方式,则首先需要在server.xml中配置如下参数:
<system><property name="sequnceHandlerType">0</property></system>
注意:sequnceHandlerType配置为0,表示使用本地文件方式。
insert into table1(id,name) values(next value for MYCATSEQ_GLOBAL, 'test');
采用这种方式的缺点是Mycat重新发布后,配置文件中的sequence会恢复到初始值;优点是本地加载且读取速度较快。
2.数据库方式
在数据库中创建一张名为sequence的表,有sequence的当前值(current_value)、步长(increment int类型,指每次读取多少个sequence,假设为K)等信息。
获取步骤如下:
(1)初次使用sequence时,根据传入的sequence名称,从数据库表中读取current_value、increment到Mycat中,并将数据库中的current_value修改为current_value+increment值。
(2)Mycat将读取到的current_value+increment作为本次使用的sequence值,在下次使用时,sequence自动加1,当使用increment次后,执行与步骤1相同的操作。
(3)Mycat负责维护这张表,用到那些sequence时,只需要在这张表中插入一条记录即可。若某次读取的sequence没有用完系统就宕机了,则本次已经读取sequence且未使用的值将会被丢弃。
要启用这种方式,则需要在server.xml中配置:
<system><property name="sequnceHandlerType">1</property></system>
3.本地时间戳方式
(1)server.xml中配置:
<system><property name="sequnceHandlerType">2</property></system>
(2)配置sequence_time_conf.properties文件中。
WORKID=0~31,可取0~31中的任意整数。
DATACENTERID=0~31,可取0~31中任意整数。
多个Mycat节点下每个Mycat配置的WORKID、DATACENTERID都不一样,组成唯一标识,总共支持32*32=1024种组合。
4.其他方式
(1)使用catlet注解方式
(2)也可以使用Zookeeper方式实现。
5.自增长主键
zk-create.yaml配置文件
概念:
(1)Mycat Zone指的是分布于不同地域(Zone)的Mycat Cluster,Zone的命名建议用地理位置来标识。
(2)Clustar是Mycat集群,一个Cluster包含一个或多个Mycat Server。
(3)一般来讲,一个Zone都有一组主备Mycat负载均衡器LB,LB与同一中心内的Mycat Cluster组成一对多关系,即一个LB可以服务一个中心内所有Cluster的负载均衡请求,也可以是多个LB,每个负担不同的Mycat Cluster的流量。
(4)建议每个LB都有一个Backup,Backup平时不连接Mycat Cluster,但是监测到LB Master下线以后,就立即开始连接Mycat Cluster并开始工作。
zkURL:127.0.0.1:2181 Zookeeper的连接信息你
+mycat-cluster:集群中所有的主机信息
+mycat-hosts:主机信息
+mycat-zones:Mycat中心
+mycat-MySQLs:MySQL信息
+mycat-MySQLgroup:复制组的信息
+mycat-lbs:mycat lb
其他配置文件
1.缓存文件配置
Mycat支持encache、mapdb、leveldb缓存,可以通过配置文件cacheservice.properties决定使用哪种缓存框架。
2.日志配置
Mycat使用log4j作为日志管理工具。
3.AIO、NIO的配置
在server.xml中usingAIO配置I/O类型:0为NIO、1为AIO
<property name="usingAIO">0</property>
在实现分库分表的情况下,数据库的自增已经无法保证在集群中是全局唯一的主键,因此,Mycat提供了全局sequence,并且提供了本地配置、数据库配置等多种实现方式。
1. 本地文件方式
采用该方法,Mycat将sequence配置到classpath目录的sequence_conf.properties文件中。
在sequence_conf.properties文件中做如下配置:
GLOBAL.HISIDS= ##HISIDS表示使用过的历史分段(一般无特殊需要则可不配置)
GLOBAL.MINID=10001 ##MINID表示最小的ID值
GLOBAL.MAXID=20000 ##MAXID表示最大的ID值
GLOBAL.CURID=10000 ##CURID表示当前的ID值
要启用这种方式,则首先需要在server.xml中配置如下参数:
<system><property name="sequnceHandlerType">0</property></system>
注意:sequnceHandlerType配置为0,表示使用本地文件方式。
insert into table1(id,name) values(next value for MYCATSEQ_GLOBAL, 'test');
采用这种方式的缺点是Mycat重新发布后,配置文件中的sequence会恢复到初始值;优点是本地加载且读取速度较快。
2.数据库方式
在数据库中创建一张名为sequence的表,有sequence的当前值(current_value)、步长(increment int类型,指每次读取多少个sequence,假设为K)等信息。
获取步骤如下:
(1)初次使用sequence时,根据传入的sequence名称,从数据库表中读取current_value、increment到Mycat中,并将数据库中的current_value修改为current_value+increment值。
(2)Mycat将读取到的current_value+increment作为本次使用的sequence值,在下次使用时,sequence自动加1,当使用increment次后,执行与步骤1相同的操作。
(3)Mycat负责维护这张表,用到那些sequence时,只需要在这张表中插入一条记录即可。若某次读取的sequence没有用完系统就宕机了,则本次已经读取sequence且未使用的值将会被丢弃。
要启用这种方式,则需要在server.xml中配置:
<system><property name="sequnceHandlerType">1</property></system>
3.本地时间戳方式
(1)server.xml中配置:
<system><property name="sequnceHandlerType">2</property></system>
(2)配置sequence_time_conf.properties文件中。
WORKID=0~31,可取0~31中的任意整数。
DATACENTERID=0~31,可取0~31中任意整数。
多个Mycat节点下每个Mycat配置的WORKID、DATACENTERID都不一样,组成唯一标识,总共支持32*32=1024种组合。
4.其他方式
(1)使用catlet注解方式
(2)也可以使用Zookeeper方式实现。
5.自增长主键
zk-create.yaml配置文件
概念:
(1)Mycat Zone指的是分布于不同地域(Zone)的Mycat Cluster,Zone的命名建议用地理位置来标识。
(2)Clustar是Mycat集群,一个Cluster包含一个或多个Mycat Server。
(3)一般来讲,一个Zone都有一组主备Mycat负载均衡器LB,LB与同一中心内的Mycat Cluster组成一对多关系,即一个LB可以服务一个中心内所有Cluster的负载均衡请求,也可以是多个LB,每个负担不同的Mycat Cluster的流量。
(4)建议每个LB都有一个Backup,Backup平时不连接Mycat Cluster,但是监测到LB Master下线以后,就立即开始连接Mycat Cluster并开始工作。
关系图如下:
zkURL:127.0.0.1:2181 Zookeeper的连接信息你
+mycat-cluster:集群中所有的主机信息
+mycat-hosts:主机信息
+mycat-zones:Mycat中心
+mycat-MySQLs:MySQL信息
+mycat-MySQLgroup:复制组的信息
+mycat-lbs:mycat lb
其他配置文件
1.缓存文件配置
Mycat支持encache、mapdb、leveldb缓存,可以通过配置文件cacheservice.properties决定使用哪种缓存框架。
2.日志配置
Mycat使用log4j作为日志管理工具。
3.AIO、NIO的配置
在server.xml中usingAIO配置I/O类型:0为NIO、1为AIO
<property name="usingAIO">0</property>