手把手基于Mycat实现MySQL数据拆分( 四 )


初始化序列表
-- 新增一条数据,序列名为ORDERS,初始值为400000,increment100,这个设置的是Mycat重启之后的值递增100,这个大家根据业务自己设置 INSERT INTO MYCAT_SEQUENCE(NAME,current_value,increment) VALUES('ORDERS',400000,100);
修改schmea.xml文件
修改Mycat的sequence_db_conf.properties文件
前边为序列名后边为所在节点,我们序列名为ORDERS就是在dn1上创建的,如果你是在dn2上创建的序列表,则改为dn2
#sequence stored in datanode GLOBAL=dn1 COMPANY=dn1 CUSTOMER=dn1 ORDERS=dn1
修改server.xml文件

手把手基于Mycat实现MySQL数据拆分

文章插图
 
把改为1,配置使用序列的哪种方式,Mycat提供了三种方式,0为本地文件,1为数据库方式,2为时间戳方式
添加数据
语法就是将ID的值改为next value for MYCATSEQ_SeqName咱们这里的序列名为ORDERS 。
INSERT INTO orders(id,order_type,customer_id,amount) VALUES (next value for MYCATSEQ_ORDERS,101,102,1000);
查询数据
SELECT * FROM orders;
手把手基于Mycat实现MySQL数据拆分

文章插图
 
时间戳方式
全局序列ID=64位二进制(42(毫秒)+5(机器ID)+5(业务编码)+12(重复累加))换算成十进制为18位的long类型,每毫秒可以并发12位二进制累加
 
  • 优势:配置简单
  • 弊端:太长
 
自主生成
可以在项目中自己编写生成序列的代码,或者使用redis的incr生成序列,这种方式也行但是需要在程序中进行编码,我们还是推荐使用Mycat自带的全局序列,也就是第二种方式
总结
 
  • 实现制定好切分方式或者说切分计划
  • 准备好物理Mysql,这些Mysql应该都是白白的很干净的
  • 安装好Mycat,配置Mycat的配置文件
  • 启动Mycat创建表插入数据等操作,通过Mycat会将表和数据创建并且插入到真正的物理MySQL中维护
  • Mycat提供三种全局序列,解决分布式数据库主键ID唯一问题,我们使用数据库方式
 
觉得不错的话,记得动动小手关注,收藏哦,本文若有任何看不懂,或者有错误的地方欢迎大家评论区留言!




推荐阅读