mycat 垂直分库与水平分表使用详解

说明

在了解mycat的常用分片规则之前,有必要再对涉及到分片规则相关的几个配置文件做深入的了解,包括:schema.xml,server.xml,rule.xml等, 其中最核心的schema.xml文件是配置分片规则的入口文件,有必要对该配置文件中的关键参数做了解,且看下面这幅图,回顾下里面的配置;
mycat 垂直分库与水平分表使用详解_第1张图片
mycat 垂直分库与水平分表使用详解_第2张图片

一、schema.xml文件解析

1、schema 标签的核心属性:

核心属性如下:

  • name:指定自定义的逻辑库库名(访问时需要在server.xml中配置);
  • checkSQLschema:用于在执行 SQL 语句之前检查是否存在数据库的 schema。该属性的默认值为 true,表示在执行 SQL 语句之前要检查 schema 是否存在。如果设置为 false,则不会进行检查。
  • sqlMaxLimit:如果指定了limit进行查询,列表查询默认查询指定的数量的记录;

2、table标签

核心属性如下:

  • name:定义逻辑表表名,在该逻辑库下唯一;
  • dataNode:定义逻辑表所属的dataNode,该属性需要与dataNode标签中name对应,多个dataNode逗号分隔;
  • rule:分片规则的名字,分片规则名字是在rule.xml中定义的;
  • primaryKey:逻辑表对应真实表的主键;
  • type:逻辑表的类型,目前逻辑表只有全局表和普通表,如果未配置,就是普通表;全局表,配置为 global;

3、datanode标签

核心属性如下:

  • name:定义数据节点的名称;
  • dataHost:数据库实例主机名称(配置物理节点的位置),引用自 dataHost 标签中name属性;
  • database:定义分片所属数据库;

4、datahost标签

核心属性如下:

  • name:唯一标识,供上层标签使用;
  • maxCon/minCon:最大连接数/最小连接数;
  • balance:负载均衡策略,取值 0,1,2,3;
  • writeType:写操作分发方式(0:写操作转发到第一个writeHost,第一个挂了,切换到第二个;1:写操作随机分发到配置的writeHost);
  • dbDriver:数据库驱动,支持 native、jdbc;

二、数据库垂直拆分

系统在运行过程中,随着业务越来越复杂,表也越来越多,从数据库这一层来说,当单库的表增加到一定数量后,由单台服务器的数据存储及处理能力是有限的,所以当业务高峰期时,必然有一部分业务操作表的时处于等待状态,如何解决这个问题呢?

容易想到,将单库下N多张表拆分到多个数据库下,降低单库的表的总量不失为不错的方案,这就是数据库的垂直拆分;

下图为单库下的多个表,通过垂直拆分之后,多个表将会被分散到多个数据库存储;
mycat 垂直分库与水平分表使用详解_第3张图片
那么通过mycat的schema.xml文件的配置,最终可得到如下结构图:
mycat 垂直分库与水平分表使用详解_第4张图片

1、schema.xml 配置

<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">

	<schema name="DB02" checkSQLschema="true" sqlMaxLimit="100">

		<table name="tb_user" dataNode="dn1" primaryKey="id" />
		<table name="tb_product" dataNode="dn2" primaryKey="id" />
		<table name="tb_order" dataNode="dn3" primaryKey="id" />

	</schema>

	<dataNode name="dn1" dataHost="

你可能感兴趣的:(数据库,数据库,服务器,网络)