相册网站怎么做的,wordpress自动发布,wordpress主题汉化是什么意思,烤肉自助餐网站建设目录 1.介绍
概述
拆分策略
垂直拆分
水平拆分
实现技术
shardingJDBC:
MyCat:
2.Mycat概述
环境准备
分片配置
schema.xml
server.xml
启动服务
分片测试
3.MyCat配置
schema.xml
schema标签
datanode标签
datahost标签
rule.xml
…目录 1.介绍
概述
拆分策略
垂直拆分
水平拆分
实现技术
shardingJDBC:
MyCat:
2.Mycat概述
环境准备
分片配置
schema.xml
server.xml
启动服务
分片测试
3.MyCat配置
schema.xml
schema标签
datanode标签
datahost标签
rule.xml
server.xml
4.垂直拆分分库
场景
准备
配置
schema标签
server标签
测试
多表联查
解决
5.水平拆分
6.分片规则
6.1范围分片
6.2取模分片
6.3一致性哈希
6.4枚举
6.5应用指定算法
6.6固定分片hash算法
6.7字符串哈希解析
6.8 按日期天分片
6.9 按日期月分片
7.MyCat管理与监督 1.介绍
概述
随着互联网及移动互联网的发展应用系统的数据量也是成指数式增长若采用单数据库进行数据存储存在以下性能瓶颈: IO瓶颈:热点数据太多数据库缓存不足产生大量磁盘IO效率较低。请求数据太多带宽不够网络IO瓶颈。CPU瓶颈:排序、分组、连接查询、聚合统计等SOL会耗费大量的CPU资源请求数太多CPU出现瓶颈。 分库分表的中心思想都是将数据分散存储使得单一数据库/表的数据量变小来缓解单一数据库的性能问题从而达到提升数据库性能的目的 拆分策略
根据形式不同可以分为垂直拆分和水平拆分。
垂直相当于从中间切开分库是把一个库中多个表拆成几份存储到不同数据库中所以这些数据库中的库结构不一样。分表是把一个表中的各字段拆分到不同数据库各表结构也不同。
水平就是物理切割只是把各库中的部分数据存储到不同数据库这些数据库结构一样。分表则把表中行部分存在不同数据库表结构也相同。 垂直拆分
水平拆分 实现技术 shardingJDBC:
基于AOP原理在应用程序中对本地执行的SQL进行拦截解析、改写、路由处理。需要自行编码配置实现只支持java语言性能较高。 MyCat:
数据库分库分表中间件不用调整代码即可实现分库分表支持多种语言性能不及前者。
2.Mycat概述
Mycat是开源的、活跃的、基于java语言编写的MySOL数据库中间件。可以像使用mysql一样来使用mycat对于开发人员来说根本感觉不到mycat的存在。
环境准备
在节点主机中都新增db01的数据库后续只对Mycat进行配置。
分片配置
schema.xml 逻辑库Schema逻辑库是 MyCat 中的一个虚拟数据库它对应于 MySQL 中的 DATABASE。逻辑库定义了包含的逻辑表和分片规则。 逻辑表Table逻辑表是 MyCat 中的一个虚拟表它对应于物理数据库中的实际表。逻辑表定义了数据如何分布到不同的数据节点 数据节点DataNode定义了数据存储的具体位置。 数据主机DataHost定义了数据库的连接信息和读写分离策略。 分片规则Rule定义了如何将数据分布到不同的数据节点。 server.xml readyOnly只读权限ture则表明该用户只有读权限。 启动服务 -h指定 MySQL 服务器的主机名或 IP 地址。 -P指定 MySQL 服务器的端口号。 -u指定连接到 MySQL 服务器的用户名。 -p指定连接到 MySQL 服务器的密码。
Mycat的登录格式与MySQL类似是由于其通过以下方式实现与 MySQL 的兼容性 SQL 解析 MyCat 内置了 SQL 解析器能够解析和理解 MySQL 的 SQL 语法。它会拦截和解析客户端发送的 SQL 语句然后根据配置的分片规则和路由策略将 SQL 语句分发到相应的物理数据库节点。 协议兼容 MyCat 实现了 MySQL 的网络协议使得客户端可以像连接普通 MySQL 数据库一样连接 MyCat。这包括支持 MySQL 的二进制协议和文本协议。 透明代理 MyCat 作为一个透明代理对客户端来说它就像一个普通的 MySQL 数据库。客户端发送的 SQL 语句和数据请求都会被 MyCat 拦截和处理然后转发到后端的物理数据库。返回的结果也会被 MyCat 处理后返回给客户端。 查看已存在schema.xml文件中配置的逻辑库与逻辑表。
分片测试
在MyCat中通过创建逻辑表该表结构会同步至节点数据库中而往其逻辑表插入的数据会根据分片规则散落至各节点数据库。 3.MyCat配置
schema.xml
schema.xml作为MyCat中最重要的配置文件之一,涵盖了MyCat的逻辑库 、逻辑表 、分片规则、分片节点及数据源的配置。 主要包含以下三组标签: schema标签
schema标签用于定义 MyCat实例中的逻辑库,一个MyCat实例中,可以有多个逻辑库,可以通过 schema 标签来划分不同的逻辑库。 MyCat中的逻辑库的概念 等同于MySQL中的database概念,需要操作某个逻辑库下的表时,也需要切换逻辑库(use xxx)。 schema标签table标签定义了MyCat中逻辑库schema下的逻辑表,所有需要拆分的表都需要在table标签中定义。 datanode标签 datahost标签 rule.xml
rule.xml中定义所有拆分表的规则,在使用过程中可以灵活的使用分片算法,或者对同一个分片算法使用不同的参数,它让分片过程可配置化。主要包含两类标签:tableRule、Function。 tableRule为分片规则Function为具体配置 server.xml
server.xml配置文件包含了MyCat的系统配置信息主要有两个重要的标签:system、user。
system为一些系统配置的信息。
user配置用户的信息以及其可以访问的权限 4.垂直拆分分库
场景 主数据库中包含4种分类的各表决定拆分成3个表。
准备 配置
schema标签 table必须包含所有需要拆分的逻辑表。
这里讲逻辑表分为3部分从上至下商品相关表关联分片节点dn1订单dn2用户dn3.
dataNode配置了分片节点关联的节点主机。
server标签 将用户可访问的数据库名称修改为创建的逻辑库名称。
由于是逻辑表还需要在MyCat中执行对应的创建表语句才能在节点主机看到物理表结构。 测试
多表联查
联查表在同一节点主机中查询成功 联查表在不同节点主机中查询失败 解决 将地址信息分片到所有节点并将typeglobal声明为全局表。 5.水平拆分
将一张表中的数据分片到不同节点主机中表结构相同内容不同。
本质一样schema配置逻辑库ITCAST中的逻辑表tb_log数据分片在dn4,dn5,dn6的分片节点中rule指定分片规则。 dataNode配置节点关联的节点主机。
server配置用户访问权限
使用MyCat后所有DDLDML语句在MyCat中执行。 6.分片规则
6.1范围分片
rule引用tableRule name中的分片规则algorithm引用funcion name中的分片算法。 6.2取模分片
6.1与6.2不适用字段值为字符串。 6.3一致性哈希
所谓一致性哈希相同的哈希因子计算值总是被划分到相同的分区表中不会因为分区节点的增加而改变原来数据的分区位置。 6.4枚举
通过在配置文件中配置可能的枚举值,指定数据分布到不同数据节点上,本规则适用于按照省份、性别、状态拆分数据等业务。 6.5应用指定算法
运行阶段由应用自主决定路由到那个分片直接根据字符子串(必须是数字)计算分片号 6.6固定分片hash算法
该算法类似于十进制的求模运算但是为二进制的操作例如取d的二进制低10位与 1111111111进行位运算。 paritioncount位分片数length为长度。 前两个分片节点长度256第三个长度512. 6.7字符串哈希解析
截取字符串中的指定位置的子字符串,进行hash算法算出分片。 6.8 按日期天分片 6.9 按日期月分片 7.MyCat管理与监督
MyCat对SQL语句解析解析根据rule配置的分片规则对字段进行分片分析后决定路由给哪个节点。 MyCat对查询到的结果集再合并进行一系列处理后返回给客户端。
排序等操作都是在MyCat中执行因为对部分数据处理无意义采用整合后再处理。