MyCat 数据库实践注意事项

背景

最近两周研究了一下 MyCat ,下载了一份官方的实践指南,搜了几篇部署介绍,启动了三个虚拟机节点,然后就开始了验证过程。

毕竟不是专业 DBA,我的首要目标是弄清楚如何部署,产品从普通 MySQL 数据库迁移到 MyCat 需要注意的事项。抓主要矛盾,了解关键技术点,解决关键疑惑,有一本书叫《关键20小时,快速学会任何技能》,跟它的核心思想类似。

本文继续整理在没有完全掌握 MyCat 的用法之前,实践过程中因碰到问题而学到的、需要注意的知识点。

schema 和 数据库的关系

客户端连接 MyCat 后如果执行建表语句,那么该表必须在 schema.xml 中声明,否则会创建失败:
MyCat 数据库实践注意事项_第1张图片
修改 schema.xml ,添加该表后,重启 mycat 再建表:
在这里插入图片描述
重点:MyCat 逻辑库中的任何表,都需要事先在 schema.xml 中定义,对表比较多的项目来说,整理表及其分片策略是个麻烦的工作。

表结构限制

首先,分片的表必须提供分片字段,默认的按 long 分片时,必须有 ID 字段,否则报错:
在这里插入图片描述

逻辑库和用户的权限

需要注意 server.xml 中配置的 MyCat 的逻辑库和对应帐号的权限,否则会出现无权限异常:
在这里插入图片描述
其次,分片字段不允许修改

第三,schema.xml 中定义多个逻辑库之后,如果需要给某个用户授权多个逻辑库的访问权限,那么需要用逗号分割

<user name="root" defaultAccount="true">
	<property name="password">123456</property>
	<property name="schemas">mydb,trigletest</property>
	<property name="defaultSchema">secsight</property>
</user>

MyCat 三表关联测试

官方宣称能够支出两张表关联查询,不知道对多表关联是否支持呢?笔者验证了一下三表关联。创建三个分片的逻辑表,分片规则用 mod-long 按取模分片,然后插入数据后,数据均匀分散在多个物理表中。

表一,关系表
MyCat 数据库实践注意事项_第2张图片
表二,公司表:
MyCat 数据库实践注意事项_第3张图片
表三,员工表:
MyCat 数据库实践注意事项_第4张图片

双表查询:
MyCat 数据库实践注意事项_第5张图片
三表左关联查询:

select a.id,b.company_name,c.employee_name,c.employee_age 
from employee_company a 
left join company b on a.company_id=b.id 
join employee c on a.employee_id=c.id order by a.id;

分片的三个物理库中的14条记录都查出来了,结果如下:
MyCat 数据库实践注意事项_第6张图片

启示录

不知道别的企业是怎么进行技术选择和数据库,产品的数据库是不是应该由专业的数据库技术支持团队来做呢,有没有坑点?我只研究了不到五天,只了解了应用的皮毛而已。如何迁移后真有问题,担不起这个大责哇!

你可能感兴趣的:(项目开发,MyCat)