目录

一、分库分表

1.1 介绍

1.1.1 问题分析

1.1.2 拆分策略

1.1.3 垂直拆分

1.1.4 水平拆分

1.1.5 实现技术

1.2 MyCat概述

1.2.1 介绍

1.2.2 下载

1.2.3 安装

1.2.4 目录介绍

1.2.5 概念介绍

1.3 MyCat入门

1.3.1 需求

1.3.2 环境准备

1.3.3 配置

1.3.4 测试

1.4 MyCat配置

1.4.1 schema.xml

1.4.2 rule.xml

1.4.3 server.xml

1.5 MyCat分片

1.5.1 垂直拆分

1.5.2 水平拆分

1.5.3 分片规则


一、分库分表

1.1 介绍

1.1.1 问题分析


1.1.2 拆分策略


1.1.3 垂直拆分


1.1.4 水平拆分


1.1.5 实现技术


1.2 MyCat概述

1.2.1 介绍

        MyCat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。


优势:

  • 性能可靠稳定
  • 强大的技术团队
  • 体系完善
  • 社区活跃

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比

1.2.2 下载

下载地址:http://dl.mycat.org.cn/

MySQL分表分库组件对比 mysql分库分表工具_数据库_02

1.2.3 安装


1.2.4 目录介绍


1.2.5 概念介绍


1.3 MyCat入门

1.3.1 需求


1.3.2 环境准备


1.3.3 配置

MySQL分表分库组件对比 mysql分库分表工具_数据库_03


MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_04

上述的配置表示,定义了两个用户root 和user,这两个用户都可以访问DB01这个阔疾苦,访问密码都是123456,但是root用户访问DB01逻辑库,既可以读又可以写,但是user用户访问DB01逻辑库是只读的

1.3.4 测试

  • 启动

MySQL分表分库组件对比 mysql分库分表工具_mysql_05


  • 测试

MySQL分表分库组件对比 mysql分库分表工具_java_06


1.4 MyCat配置

1.4.1 schema.xml

schema.xml 作为MyCat中最重要的配置文件之一,涵盖了MyCat的逻辑库、逻辑表、分片规则、分片节点及数据源的配置


主要包含以下三组标签

  1. schema标签
  2. datanode标签
  3. datahost标签
  • schema标签

MySQL分表分库组件对比 mysql分库分表工具_xml_07


MySQL分表分库组件对比 mysql分库分表工具_xml_08


MySQL分表分库组件对比 mysql分库分表工具_mysql_09

  • dataNode标签

MySQL分表分库组件对比 mysql分库分表工具_数据库_10

  • dataHost标签

MySQL分表分库组件对比 mysql分库分表工具_数据库_11

1.4.2 rule.xml


1.4.3 server.xml

MySQL分表分库组件对比 mysql分库分表工具_java_12


MySQL分表分库组件对比 mysql分库分表工具_xml_13

在测试权限操作时,只需要将privileges标签的注释放开。在privileges下的schema标签中配置的dml属性配置的是逻辑库的权限。在privileges的schema下的table标签的dml属性中配置逻辑表的权限。

1.5 MyCat分片

1.5.1 垂直拆分

  • 场景
在业务系统中,涉及以下表结构,但是由于用户与订单每天都会产生大量的数据,单台服务器的数据存储及处理能力是哟许欸你的, 可以对数据库表进行拆分,原有的数据库表如下。

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_14

  •  准备

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_15

  • 配置

MySQL分表分库组件对比 mysql分库分表工具_数据库_16

  •  测试

MySQL分表分库组件对比 mysql分库分表工具_xml_17

  •  全局表

MySQL分表分库组件对比 mysql分库分表工具_java_18

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_19

1.5.2 水平拆分

  • 场景

        在业务系统中,有一张表(日志表),业务系统每天都会产生大量的日志数据,单台服务器的数据存储及处理能力是有限的,可以对数据库表进行拆分。

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_20

  • 准备

MySQL分表分库组件对比 mysql分库分表工具_java_21

  • 配置

MySQL分表分库组件对比 mysql分库分表工具_java_22

  •  测试

        配置完毕后,重新启动MyCat,然后再mycat的命令行中,之下如下SQL创建表、并插入数据、查看数据分布情况

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_23

1.5.3 分片规则

  • 范围分片

MySQL分表分库组件对比 mysql分库分表工具_数据库_24

 

MySQL分表分库组件对比 mysql分库分表工具_mysql_25


MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_26

  • 取模分片

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_27


MySQL分表分库组件对比 mysql分库分表工具_xml_28


MySQL分表分库组件对比 mysql分库分表工具_xml_29


  • 一致性hash分片

MySQL分表分库组件对比 mysql分库分表工具_mysql_30


MySQL分表分库组件对比 mysql分库分表工具_java_31

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_32

  • 枚举分片

MySQL分表分库组件对比 mysql分库分表工具_xml_33


MySQL分表分库组件对比 mysql分库分表工具_mysql_34


MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_35

  • 应用指定算法

MySQL分表分库组件对比 mysql分库分表工具_xml_36


MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_37


MySQL分表分库组件对比 mysql分库分表工具_mysql_38

  • 固定分片hash算法

MySQL分表分库组件对比 mysql分库分表工具_mysql_39


MySQL分表分库组件对比 mysql分库分表工具_数据库_40


MySQL分表分库组件对比 mysql分库分表工具_java_41

  • 字符串hash解析

MySQL分表分库组件对比 mysql分库分表工具_mysql_42


MySQL分表分库组件对比 mysql分库分表工具_xml_43


MySQL分表分库组件对比 mysql分库分表工具_mysql_44

  • 按天分片算法

 按照日期及对应的时间周期来分片

MySQL分表分库组件对比 mysql分库分表工具_mysql_45

 

MySQL分表分库组件对比 mysql分库分表工具_mysql_46


MySQL分表分库组件对比 mysql分库分表工具_mysql_47

  • 自然月分片

MySQL分表分库组件对比 mysql分库分表工具_xml_48

  

MySQL分表分库组件对比 mysql分库分表工具_java_49

1.6 MyCat管理及监控

1.6.1 MyCat原理


1.6.2 MyCat管理


1.6.3 MyCat-eye

  • 介绍

        Mycat-web(Mycat-eye)是对Mycat-server提供监控服务,功能不局限于对Mycat-server使用。他通过JDBC连接对Mycat、Mysql监控,监控远程服务器(目前仅限于Linux系统)的cpu、内存、网络、磁盘。

        Mycat-eye运行过程中需要历来zookeeper,因此需要先安装zookeeper


  • 安装

MySQL分表分库组件对比 mysql分库分表工具_xml_50


  • 配置

MySQL分表分库组件对比 mysql分库分表工具_xml_51


  • 测试

MySQL分表分库组件对比 mysql分库分表工具_MySQL分表分库组件对比_52