本文讲解mycat通过zookeeper集群实现主键自增
zk1:192.168.130.128:2182
zk2:192.168.130.128:2183
zk3:192.168.130.128:2184
修改server.xml
<!--4表示使用zk自增ID方式-->
<property name="sequnceHandlerType">4</property>
修改schema.xml
<schema name="my_test" checkSQLschema="false" sqlMaxLimit="100">
<table name="user" primaryKey="id" autoIncrement="true" dataNode="dn$1-2" rule="rule1" />
</schema>
修改myid.properties
#使用zk管理mycat
loadZk=true
#zk服务器的地址和端口
zkURL=192.168.130.128:2181,192.168.130.128:2182,192.168.130.128:2183
#mycat集群的ID
clusterId=mycat-cluster-1
#本mycat的ID
myid=mycat_fz_01
#集群大小
clusterSize=2
#集群内mycat的ID
clusterNodes=mycat_fz_01,mycat_fz_02
#server booster ; booster install on db same server,will reset all minCon to 2
type=server
boosterDataHosts=dataHost1
另一个mycat服务的该配置文件中 myid=mycat_fz_02
修改sequence_conf.properties
USER.HISIDS=
USER.MINID=0
USER.CURID=0
USER.MAXID=0
修改sequence_distributed_conf.properties
INSTANCEID=ZK #代表使用zk
CLUSTERID=mycat-cluster-1 #与myid.properties中的CLUSTERID设置的值相同
启动zookeeper
/usr/zookeeper/zookeeper1/bin/zkServer.sh start
/usr/zookeeper/zookeeper2/bin/zkServer.sh start
/usr/zookeeper/zookeeper3/bin/zkServer.sh start
启动mycat 集群
/usr/mycat/bin/mycat start
/usr/mycat2/bin/mycat start
测试
进入zk客户端
/usr/zookeeper/zookeeper1/bin/zkCli.sh
查看全局序列
get /mycat/mycat-cluster-1/sequences/incr_sequence/USER/seq
数据插入测试
insert into user(id,name,age,email) values(next value for MYCATSEQ_USER,"张三",23,"zhangsan@qq.com");
insert into user(id,name,age,email) values(next value for MYCATSEQ_USER,"李四",28,"lisi@qq.com");
insert into user(id,name,age,email) values(next value for MYCATSEQ_USER,"王五",21,"wangwu@qq.com");
insert into user(id,name,age,email) values(next value for MYCATSEQ_USER,"赵六",22,"zhaoliu@qq.com");
这就实现了主键自增