麒麟v10 上部署 TiDB v5.1.2 生产环境优化实践
731
2023-04-06
Mycat分布式数据库架构解决方案--Mycat实现数据库分表
准备工作:
由于我们的Mycat实现读写分离配置好了登录用户名和密码,所以配置Mycat实现数据库分库分表的工作就不在需要去配置server.mxl了,但是我们使用分表规则的时候,要涉及两个新的配置文件
rule.xmlautopartition-long.txt
配置schema
实现数据库分库分表它和读写分离最大的不同就是dataHost该标签的配置,读写分离,只需要一个dataHost即可。但是dataHost如果只配置一个,就没有办法实现多库读写。我们要实现分表,当然要考虑每一个库对应的表都需要能够读写。所以我们在配置table的时候,对应的每一个库,就需要对应到每一个可以写的库。同时和读写分离不同的是,我们既然要分库分表就需要分表的规则,这里新增了分表规则auto-sharding-long
配置rule.xml
我们在schema中配置了auto-sharding-long的规则就需要在rule.xml中配置对应的规则。(Mycat原始的rule配置文件中就已经有了我们需要配置的规则,所以我们这里不需要改动,但是auto-sharding-long对应的autopartition-long.txt文档,由于演示需要,我们更改一下)
配置autopartition-long.txt
该配置文件的原本配置是M为单位,这样的数据太大,测试的时候,计算麻烦,我们更改配置如下:
0-2000=0 # 代表id的大小在0-2000中间就是用dn1服务器2000-4000=1 # 代表id的大小在2000-4000中间就是用dn2服务器4000-8000=2 # 代表id的大小在4000-8000中间就是用dn3服务器
我们有三个节点,相当于一个有一个服务器集合,每台服务器都是根据下标来对应的,都是从0开始计数,0就代表我们的dn1
测试:
插入三条数据,根据我们配置的规则进行插入
INSERT INTO `user`(`id`, `user_name`, `pass_word`) VALUES (1000, 'a', '123456');INSERT INTO `user`(`id`, `user_name`, `pass_word`) VALUES (3000, 'b', '123456');INSERT INTO `user`(`id`, `user_name`, `pass_word`) VALUES (6000, 'c', '123456');
这里我们有3条1000的数据原因是因为我们id等于1000,所以插入到dn1服务里面,但是dn1是我们对应的MySQL主从复制的主服务器132,所以,插入该服务器之后,另外两台从服务器133/134都会直接将数据复制过去。
验证
服务器dn1,应该id=1000的三台服务器都有,id=3000在我们的133从服务器上,id=6000在我们134服务器上
做一个有底线的博客主
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。