MyCat 数据库实践注意事项

标签: mycat 数据库 实践 | 发表时间:2020-08-26 00:07 | 作者:毕小宝
出处:https://juejin.im/backend

背景

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

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

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

schema 和 数据库的关系

客户端连接 MyCat 后如果执行建表语句,那么该表必须在 schema.xml 中声明,否则会创建失败:

在这里插入图片描述 修改 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 按取模分片,然后插入数据后,数据均匀分散在多个物理表中。

表一,关系表

在这里插入图片描述 表二,公司表: 在这里插入图片描述 表三,员工表: 在这里插入图片描述

双表查询:

在这里插入图片描述 三表左关联查询:

   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 数据库 实践] 推荐:

MyCat 数据库实践注意事项

- - 掘金后端
最近两周研究了一下 MyCat ,下载了一份官方的实践指南,搜了几篇部署介绍,启动了三个虚拟机节点,然后就开始了验证过程. 毕竟不是专业 DBA,我的首要目标是弄清楚如何部署,产品从普通 MySQL 数据库迁移到 MyCat 需要注意的事项. 抓主要矛盾,了解关键技术点,解决关键疑惑,有一本书叫《关键20小时,快速学会任何技能》,跟它的核心思想类似.

mycat 数据库中间件

- - Oracle - 数据库 - ITeye博客
出处:http://blog.csdn.net/nxw_tsp/article/details/56277430. 实习的时候,在一个项目当中,项目经理要求把原先的MySQL数据连接基于mycat来进行改造. 当时就在想MyCat是什么东西. MyCat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC协议与大多数主流数据库服务器通信,其核心功能是分表分库,即将一个大表水平分割为N个小表,存储在后端MySQL服务器里或者其他数据库里.

数据库垂直拆分,水平拆分利器,cobar升级版mycat

- - CSDN博客推荐文章
基于阿里的开源cobar ,可以用于生产系统中,目前在做如下的一些改进:. 非阻塞IO的实现,相对于目前的cobar,并发性能大大提升,而且不会陷入假死状态. 优化线程池的分配,目前cobar的线程池分配效率不高. 修复cobar一些BUG. 参考impala中的impala front部分的Java代码,实现高效的Map-Reduce,能够处理上亿的大数据量.

MyCat集群部署(HAProxy + MyCat)

- - 行业应用 - ITeye博客
参考实战视频: http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53. 《高可用架构篇--第13节--MySQL源码编译安装(CentOS-6.6+MySQL-5.6)》. 《高可用架构篇--第14节--MySQL主从复制的配置(CentOS-6.6+MySQL-5.6)》.

Mycat 入门

- - 数据库 - ITeye博客
MyCAT是mysql中间件,前身是阿里大名鼎鼎的Cobar,Cobar在开源了一段时间后,不了了之. 于是MyCAT扛起了这面大旗,在大数据时代,其重要性愈发彰显. 这篇文章主要是MyCAT的入门部署. 因Mycat是用java开发的,所以需要在实验环境下安装java,官方建议jdk1.7及以上版本.

秒懂mycat

- - arccode
阿里开源的一个数据库中间件,专门为大数据量的项目做分库分表用的. 一个彻底开源的,面向企业应用开发的大数据库集群. 支持事务、ACID、可以替代MySQL的加强版数据库. 一个可以视为MySQL集群的企业级数据库,用来替代昂贵的Oracle集群. 一个融合内存缓存技术、NoSQL技术、HDFS大数据的新型SQL Server.

Mycat之——Mycat集群部署(基于HAProxy + Mycat)

- - CSDN博客推荐文章
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/75331934. 操作系统:CentOS-6.5-x86_64. JDK版本:jdk1.7.0_80. HAProxy版本:haproxy-1.5.19.tar.gz. Mycat版本:Mycat-server-1.5.1-RELEASE-20170717215510-linux.tar.gz (自行下载源码编译).

数据库设计的最佳实践

- - CSDN博客数据库推荐文章
1、使用定义明确的表或列名,并保持一致(例如,School、StudentCourse、CourseID). 2、使用单数形式的表名(即,用StudentCourse而非StudentCourses). 表代表了实体的合集,不需要复数形式. 否则你将在定义表时不得不使用“{”、“[”等字符(即为了访问表Student Course,你须得书写“Student Course”.

Spring+MyBatis实践——MyBatis访问数据库

- - 开源软件 - ITeye博客
    在http://dufengx201406163237.iteye.com/blog/2102054中描述了工程的配置,在此记录一下如何使用MyBatis访问数据库;. . .

数据库优化的最佳实践

- - ITeye博客
  选择合理的索引(前缀性及可选性)、删除没有用的索引.    2)使用规范化,但不要使用过头.   规范化(至少是第三范式)是一个易于理解且标准的方法. 然而,在有些情况下,你可能希望违反这些规则. 查询表通常是规范化的产物,也就是说,你创建了一个特殊的表,这个表包含了在其他表中被频繁使用的相关信息的列表.