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 中定义多个逻辑库之后,如果需要给某个用户授权多个逻辑库的访问权限,那么需要用 逗号分割

   "root" defaultAccount="true">
    "password">123456
    "schemas">mydb,trigletest
    "defaultSchema">mydb

复制代码

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,数据库,实践)