Mycat 和 Sharding JDBC 的区别
Sharding JDBC 官方帮助文档:https://shardingsphere.apache.org/document/legacy/4.x/document/cn/manual/sharding-jdbc/configuration/
Mycat 官网 http://www.mycat.org.cn/
-
Mycat是服务器端的代理,Sharding JDBC是客户端的代理。
-
Mycat不支持同一库内的水平切分,Sharding JDBC支持。
-
Sharding JDBC 的读写分离中的读只能从读库中去读取,不能从写库中读,Mycat支持主库和从库分配策略去读取主库和从库。
-
关于全局分布ID,Mycat支持统一ID序列(ID的值统一的从一个集中的ID序列生成器中获取),Sharding JDBC不支持,Sharding JDBC 支持UUID作为统一的全局ID,Mycat不支持UUID的方式。
-
MyCat支持的全局统一ID,是从ID序列生成器中取,Mycat的ID序列生成器有两种方式:本地文件方式、数据库方式。
本地文件方式 :
1.修改server.xml
2.修改 sequence_conf.properties
- 必须:O_ORDER 是和数据库里面的表名一致。
- Mycat Bug,设置完成之后必须把schema.xml中的
checkSQLschema
改为false
数据库方式 :
1.修改server.xml
2.修改 sequence_db_conf.properties
-
O_ORDER 必须和数据库里面的表名一致
-
O_ORDER 后面对应的dn129指的是shema.xml中配置的数据节点,也是我们运行sql文件的节点。
3.运行 mycat 提供的 sql文件
-
运行之后会生成一个个表和四个函数
-
生成统一ID的另一种方法:雪花算法 总共 64bit
0 41位的时间戳 5位机房 5位机器 12位序号
- 基本保持全局唯一,毫秒内并发最大个数2的12次方 即 4096 个ID。
- 时间回调可能会引起ID的重复。
- Mycat 和 Sharding JDBC均支持雪花算法。
- Sharding-JDBC 可以设置最大回调容忍时间。
Mycat如何设置雪花算法
- 修改server.xml文件
- - 因为在雪花算法中生成的ID的长度是17位,所在在
schema.xml
中的分片规则需要斟酌一下,一开始用的auto-sharding-long
这个格则在rule.xml
中对应的函数使用autopartition-long.txt
配置,而autopartition-long.txt
文件中最大的值不能超过100M,我们这理采用mod-long
(取余规则)规则即可。