分库分表介绍

随着微服务这种架构的兴起,我们应用从一个完整的大的应用,切分为很多可以独立提供服务的小应用。每个应用都有独立的数据库。

数据的切分分为两种:

垂直切分:按照业务模块进行切分,将不同模块的表切分到不同的数据库中。

水平切分:将一张大表按照一定的切分规则,按照行切分到不同的表或者不同的库中。

MyCAT介绍

官方网站:http://www.mycat.org.cn/

什么是MyCAT?

简单的说,MyCAT就是:

  • 一个彻底开源的,面向企业应用开发的“大数据库集群”
  • 支持事务、ACID、可以替代Mysql的加强版数据库
  • 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群
  • 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server
  • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品
  • 一个新颖的数据库中间件产品

MyCAT的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。

MyCAT的关键特性

  1. 支持 SQL 92标准
  2. 支持Mysql集群,可以作为Proxy使用
  3. 支持JDBC连接ORACLE、DB2、SQL Server,将其模拟为MySQL Server使用
  4. 支持galera for mysql集群,percona-cluster或者mariadb cluster,提供高可用性数据分片集群
  5. 自动故障切换,高可用性
  6. 支持读写分离,支持Mysql双主多从,以及一主多从的模式
  7. 支持全局表,数据自动分片到多个节点,用于高效表关联查询
  8. 支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询
  9. 多平台支持,部署和实施简单

MyCAT架构

MyCAT核心概念

  1. Schema:由它指定逻辑数据库
  2. Table:逻辑表
  3. DataNode:真正存储节点
  4. DataHost:真正的数据库主机

Mycat存在的问题

跨库join问题

  • 通过业务分析,将不同库的join查询拆分成多个select
  • 建立全局表(每个库都有一个相同的表)
  • 冗余字段(不符合数据库三范式)
  • E-R分片(将有关系的记录都存储到一个库中)
  • 最多支持跨两张表跨库的join

分布式事务(弱事务)

  • 强一致性事务(同步)
  • 最终一致性事务(异步思想)

分布式主键

  • redis incr命令
  • 数据库(生成主键)
  • UUID
  • snowflake算法

1.1 分片策略

MyCAT支持水平分片与垂直分片:

  • 水平分片:一个表格的数据分割到多个节点上,按照行分隔。
  • 垂直分片:一个数据库中多个表格A,B,C,A存储到节点1上,B存储到节点2上,C存储到节点3上。

MyCAT通过定义表的分片规则来实现分片,每个表格可以捆绑一个分片规则,每个分片规则指定一个分片字段并绑定一个函数,来实现动态分片算法。

  1. Schema:逻辑库,与MySQL中的Database(数据库)对应,一个逻辑库中定义了所包括的Table。
  2. Table:表,即物理数据库中存储的某一张表,与传统数据库不同,这里的表格需要声明其所存储的逻辑数据节点DataNode。在此可以指定表的分片规则。
  3. DataNode:MyCAT的逻辑数据节点,是存放table的具体物理节点,也称之为分片节点,通过DataSource来关联到后端某个具体数据库上
  4. DataSource:定义某个物理库的访问地址,用于捆绑到Datanode上

Mycat读写分离

MyCat的读写分离是建立在MySQL主从复制基础之上实现的。

数据库读写分离对于大型系统或者访问量很高的互联网应用来说,是必不可少的一个重要功能。对于MySQL来说,标准的读写分离是主从模式,一个写节点Master后面跟着多个读节点,读节点的数量取决于系统的压力,通常是1-3个读节点的配置

Mycat读写分离和自动切换机制,需要mysql的主从复制机制配合。

关注我,后续更多干货奉上!

mycat配置访问oracle_MySQL:如何使用MyCAT实现分库分表?相关推荐

  1. MyCat的安装及基本使用(MySQL分库分表)

    1.Mycat的简介 1.1 数据库集群产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数 ...

  2. Sharding-JDBC读写分离_MySql主从配置(1)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记015

    然后我们开始配置mysql的读写分离,这个在mycat的学习的时候,也有这部分的配置操作. 首先我们的windows系统上需要装上mysql,这里以windows为例,linux,也可以参考这个来配置 ...

  3. Sharding-JDBC读写分离_MySql主从配置(2)_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记016

    上一节我们已经,给我们的主数据库服务器,以及从数据库服务器,设置了my.ini文件 给他们分别设置了,server_id以及,主db,指定了从db,复制主db的哪个数据库 然后从db,从主db的哪个数 ...

  4. oracle分库分表原理_02. MyCat 的原理,应用场景,分库分表的思想

    # MyCAT 作用是能够代替昂贵的oracle的MySQL集群中间件. 1) 一个彻底开源的,面向企业应用开发的"大数据库集群" 2) 支持事务.ACID.可以替代Mysql的加 ...

  5. MySQL搭建主从复制 读写分离 分库分表 MyCat高可用

    主从演示 读写演示 分表演示 主从复制 环境的介绍 系统环境:centos7.0 客户端连接工具:xshell 远程文件传输工具:xftp 服务器: 192.168.126.138(主) 192.16 ...

  6. MySQL单表膨胀优化之MyCat分库分表

    MySQL的单表达到多少量级时性能会下降?宽表在千万量级,窄表要好一点在1200W左右.但是MySQL单表达到1500W时性能开始急剧下降! 事实上MySQL单表可以存储10亿级数据,只是这时候性能比 ...

  7. 淘宝TDDL——Matrix层的分库分表配置与实现

    http://gao-xianglong.iteye.com/blog/2019729/ 目录 一.互联网当下的数据库拆分过程 二.TDDL的架构原型 三.下载TDDL的Atom层和Group层源代码 ...

  8. mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

    一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...

  9. Linux+MySQL+MyCat实现分库分表,通过MyCat数据库中间件实现分库分表配置实战

    目录 前言 Linux+MySQL+MyCat实现读写分离,主从同步的解决方案 一.Linux下MySQL数据库服务的安装与部署 二.下载Linux MyCat 三.上传Linux服务器,并解压 四. ...

最新文章

  1. SOCKET用法详解
  2. 关于bitnami redmine 的一些问题
  3. Django-Model中的ForeignKey,ManyToManyField与OneToOneField
  4. Element UI格式化日期
  5. android项目编码规范,Android 项目规范
  6. 线程池状态以及转换java_JAVA线程池总结一下
  7. 韵达混合云深度解析:Docker助力大规模云上调度实践
  8. Python3 configparser值为多行时配置文件书写格式
  9. SPSS下载安装教程
  10. 数据结构期末考题总结(附答案)
  11. 实地测试电源模块性能
  12. 【简单实用】百度网盘提速方法,不用破解和插件
  13. ssh 远程锁住解锁_Linux 中锁定和解锁用户帐户的三种方法
  14. asp.net开发wap程序必备:识别来访手机品牌型号【来源网络】
  15. 163vip.com登陆TOM邮箱,定位商务人士的专属邮箱!
  16. 微信小程序杂技之---九宫格图片排版与操作
  17. 用ESP32与Python实现物联网(IoT)火焰检测报警系统
  18. 目前住院病人主要由护士护理这样做不仅需要大量护士而且由子不能随时观察危重病人的病情变化还可能会延误抢救时机.某医院打算开发-个以计算机为中心的患者监护系统试写出问题定义并且分析开发这个系统的可行性.
  19. 什么是数字孪生?数字孪生技术有没有真正的实用价值?
  20. 黑苹果 之 神舟战神Z7M-SL7D2

热门文章

  1. WebsocketWebSSH
  2. 【网络安全】如何使用PacketSifter从pcap中筛选出有用的信息
  3. win7更新powershell到5.1
  4. 018 Android加固之实现dex加载器
  5. 005 定位控件输入call
  6. 4、大数字运算(BigInteger类和BigDecimal类)
  7. 验证车牌号码是否有效
  8. Acwing第 40 场周赛【完结】
  9. 1100 Mars Numbers (20 分)【难度: 一般 / 知识点: 模拟】
  10. VMware 虚拟机 linux执行 ifconfig 命令 eth0没有IP地址