mycat

分布式数据库中间件概念

点点圈 提交于 2021-02-10 06:57:41
从原有的一个库,被切分为多个分片数据库,所有的分片数据库集群构成了整个完整的数据库存储。面对分片集群,数据源切换,事务处理,数据聚合等,是否需要应用程序直接处理这些呢?答案肯定是否定的,这就是数据库中间件存在的原因,把这些统统都交给中间件,应用只专注于业务就行了。 那么应用程序怎么访问数据库中间件呢?和直接访问数据库有什么区别? 通常应用程序不需要知道中间件的存在,业务开发人员只需要知道数据库的概念,所以数据库中间件可以被看做是一个或多个数据库集群构成的逻辑库。对应用来说,逻辑库中读写数据的表就是逻辑表。逻辑表,可以是数据切分后,分布在一个或多个分片库中,也可以不做数据切分,不分片,只有一个表构成。 分片表: 是指那些原有的很大数据的表,需要切分到多个数据库的表,这样,每个分片都有一部分数据,所有分片构成了完整的数据。 非分片表: 是对应于分片表而言的,某些表示可以不用进行切分的。 ER表: 关系型数据库是基于实体关系模型之上,通过其描述了真实世界中事物与关系,Mycat中ER表即使来源于此。根据这一思路,提出了基于ER关系的数据分片策略,子表的记录与所关联的父表记录存放在同一个数据分片上,即子表依赖于父表,通过表分组(Table Group)保证数据Join不会跨库操作。 表分组(Table Group)是解决跨分片数据join的一种很好的思路,也是数据切分规则的重要一条规则。

mysql主从复制 分库 分区 分表

不羁岁月 提交于 2021-02-09 09:00:51
MySql主从复制流程 转载: http://www.cnblogs.com/nulige/p/6034301.html MySQL的主从复制是MySQL本身自带的一个功能,不需要额外的第三方软件就可以实现,其复制功能并不是copy文件来实现的,而是借助binlog日志文件里面的SQL命令实现的主从复制,可以理解为我再Master端执行了一条SQL命令,那么在Salve端同样会执行一遍,从而达到主从复制的效果。 binlog的格式: statement:记录的是修改SQL语句 row:记录的是每行实际数据的变更 mixed:statement和row模式的混合 5.0后默认是row格式,所以应该是传给slave每行数据的变更 。 复制过程有一个很重要的限制——复制在slave上是串行化的,也就是说master上的并行更新操作不能在slave上并行操作。 MySQL的主从复制是一个异步的复制过程,数据库从一个Master复制到Slave数据库,在Master与Slave之间实现整个主从复制的过程是由三个线程参与完成的,其中有两个线程(SQL线程和IO线程)在Slave端,另一个线程(IO线程)在Master端。 MySQL主从复制之前我们需要先启动Master数据库然后再启动Salve数据库,然后在Salve数据库中执行 start slave; ,执行完成之后,流程就如下了:

Mycat分布式数据库架构解决方案--Mycat实现数据库分表

孤街浪徒 提交于 2021-02-04 07:50:10
echo编辑整理,欢迎转载,转载请声明文章来源。欢迎添加echo微信(微信号:t2421499075)交流学习。 百战不败,依不自称常胜,百败不颓,依能奋力前行。——这才是真正的堪称强大!!! 准备工作: 请先在服务器上面安装Mycat,安装教程: https://blog.csdn.net/xlecho/article/details/102755484 了解一下他的核心配置文件: Server.xml详解 、 schema.xml详解 、 rule.xml详解 准备三台服务器,都需要安装mysql 搭建一主两从的MySQL读写分离环境: Mycat分布式数据库架构解决方案--搭建MySQL读写分离环境--一主多从 下载一份Mycat的原码(在服务器上面编写不方便,本地更改好,替换服务器配置文件更方便) Mycat下载 如果前面的准备工作都做好了,并且有配置Mycat实现读写分离,就能很快的上手Mycat实现数据库分库分表。Mycat实现读写分离请参考: https://blog.csdn.net/xlecho/article/details/102897050 由于我们的Mycat实现读写分离配置好了登录用户名和密码,所以配置Mycat实现数据库分库分表的工作就不在需要去配置server.mxl了,但是我们使用分表规则的时候,要涉及两个新的配置文件 rule.xml

MyCat配置文件详解(二):schema.xml代码详细解读!

戏子无情 提交于 2021-02-03 11:55:44
目录 一、schema 标签 1.属性 2.子标签table 二、dataNode 标签 三、dataHost 标签 1.属性 2.子标签heartbeat 3.子标签writeHost、readHost schema.xml 作为MyCat中最重要的配置文件之一 , 涵盖了MyCat的 逻辑库 、 表 、 分片规则 、 分片节点 及 数据源 的配置。 一、schema 标签 < schema name = "ITCAST" checkSQLschema = "false" sqlMaxLimit = "100" > < table name = "TB_TEST" dataNode = "dn1,dn2,dn3" rule = "auto-sharding-long" / > < / schema > schema 标签 用于定义 MyCat实例中的逻辑库 , 一个MyCat实例中, 可以有多个逻辑库 , 可以通过 schema 标签来划分不同的逻辑库。MyCat中的逻辑库的概念 , 等同于MySQL中的 database概念 , 需要操作某个逻辑库下的表时, 也需要切换逻辑库: use ITCAST ; 1.属性 schema 标签 的属性如下 : name 指定逻辑库的库名 , 可以自己定义任何字符串 ; checkSQLschema 取值为 true / false ;

学会数据库读写分离、分表分库

荒凉一梦 提交于 2021-02-03 05:46:39
原文: 学会数据库读写分离、分表分库 https://www.cnblogs.com/joylee/p/7513038.html 系统开发中,数据库是非常重要的一个点。除了程序的本身的优化,如:SQL语句优化、代码优化,数据库的处理本身优化也是非常重要的。主从、热备、分表分库等都是系统发展迟早会遇到的技术问题问题。Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了。希望通过这篇文章的介绍,能学会Mycat的使用。 安装 Mycat官网: http://www.mycat.io/ 可以了解下Mycat的背景和应用情况,这样使用起来比较有信心。 Mycat下载地址: http://dl.mycat.io/ 官网有个文档,属于详细的介绍,初次入门,看起来比较花时间。 下载: 建议大家选择 1.6-RELEASE 版本,毕竟是比较稳定的版本。 安装: 根据不同的系统选择不同的版本。包括linux、windows、mac,作者考虑还是非常周全的,当然,也有源码版的。(ps:源码版的下载后,只要配置正确,就可以正常运行调试,这个赞一下。) Mycat的安装其实只要解压下载的目录就可以了,非常简单。 安装完成后,目录如下: 目录 说明 bin mycat命令,启动、重启、停止等 catlet catlet为Mycat的一个扩展功能 conf Mycat 配置信息,重点关注 lib

阿里P8架构师深度概述分布式架构

只愿长相守 提交于 2021-02-02 13:51:58
简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术的妹子看你时眼神迷离,就好想落霞与孤鹜齐飞! 分布式架构是一个非常复杂的体系,任何技术都不是孤立的存在,任何技术都无法适应所有场景。作为一名分布式系统架构或者资深研发人员,我们必须尽可能多的学习与之相关的各种知识,掌握各种技术的演进路线,正式从一名码农蜕变成为架构师 什么是分布式? 互联网应用的特点是:高并发,海量数据。互联网应用的用户数是没有上限的(取决于其开放特性),这也是和传统应用的本质区别。高并发指系统单位时间内收到的请求数量(取决于使用的用户数),没有上限。海量数据包括:海量数据的存储和海量数据的处理。这两个工程难题都可以使用分布式系统来解决。 简单理解,分布式系统就是把一些计算机通过网络连接起来,然后协同工作。协同工作需要解决两个问题: 1)任务分解 把一个问题拆解成若干个独立任务,每个任务在一台节点上运行,实现多任务的并发执行。 2)节点通信 节点之间互相通信,需要设计特定的通信协议来实现。协议可以采用RPC或Message Queue等方式。 分布式和集群的关系 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 计算机发展历史

阿里P8架构师深度概述分布式架构

妖精的绣舞 提交于 2021-02-02 13:06:02
简介 作为一名架构师,我们要专业,要能看懂代码,及时光着臂膀去机房,也能独挡一面!及时同事搞不定问题,或者撂挑子,你也能给老大一个坚定的眼神:不怕,有我在!还能在会议室上滔滔不绝,如若无人,让不懂技术的妹子看你时眼神迷离,就好想落霞与孤鹜齐飞! 分布式架构是一个非常复杂的体系,任何技术都不是孤立的存在,任何技术都无法适应所有场景。作为一名分布式系统架构或者资深研发人员,我们必须尽可能多的学习与之相关的各种知识,掌握各种技术的演进路线,正式从一名码农蜕变成为架构师 什么是分布式? 互联网应用的特点是:高并发,海量数据。互联网应用的用户数是没有上限的(取决于其开放特性),这也是和传统应用的本质区别。高并发指系统单位时间内收到的请求数量(取决于使用的用户数),没有上限。海量数据包括:海量数据的存储和海量数据的处理。这两个工程难题都可以使用分布式系统来解决。 简单理解,分布式系统就是把一些计算机通过网络连接起来,然后协同工作。协同工作需要解决两个问题: 1)任务分解 把一个问题拆解成若干个独立任务,每个任务在一台节点上运行,实现多任务的并发执行。 2)节点通信 节点之间互相通信,需要设计特定的通信协议来实现。协议可以采用RPC或Message Queue等方式。 分布式和集群的关系 分布式:一个业务分拆多个子业务,部署在不同的服务器上 集群:同一个业务,部署在多个服务器上 计算机发展历史

为什么继承 Python 内置类型会出问题?!

笑着哭i 提交于 2021-01-31 21:37:58
点击蓝色“ Python空间 ”关注我丫 加个“ 星标 ”,每天一起快乐的学习 作者:豌豆花下猫 来源:Python猫 最近我偶然翻到书中一个有点诡异的知识点,因此准备来聊一聊这个话题—— 子类化内置类型可能会出问题?! 1、内置类型有哪些? 在正式开始之前,我们首先要科普一下: 哪些是 Python 的内置类型? 根据官方文档的分类,内置类型(Built-in Types)主要包含如下内容: 详细文档:https://docs.python.org/3/library/stdtypes.html 其中,有大家熟知的 数字类型 、序列类型、文本类型、映射类型等等,当然还有我们之前介绍过的 布尔类型 、 ...对象 等等。 在这么多内容里,本文只关注那些作为 可调用对象 (callable)的内置类型,也就是跟内置函数(built-in function)在表面上相似的那些: int、str、list、tuple、range、set、dict…… 这些类型(type)可以简单理解成其它语言中的类(class),但是 Python 在此并没有用习惯上的大驼峰命名法,因此容易让人产生一些误解。 在 Python 2.2 之后,这些内置类型可以被子类化(subclassing),也就是可以被继承(inherit)。 2、内置类型的子类化 众所周知,对于某个普通对象 x,Python

为什么继承 Python 内置类型会出问题?!

对着背影说爱祢 提交于 2021-01-31 17:56:34
Python实战社群 Java实战社群 长按识别下方二维码, 按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群 ▲ 作者丨豌豆花下猫 来源丨Python猫 1、内置类型有哪些? 在正式开始之前,我们首先要科普一下: 哪些是 Python 的内置类型? 根据官方文档的分类,内置类型(Built-in Types)主要包含如下内容: 详细文档:https://docs.python.org/3/library/stdtypes.html 其中,有大家熟知的数字类型、序列类型、文本类型、映射类型等等,当然还有我们之前介绍过的布尔类型、...对象 等等。 在这么多内容里,本文只关注那些作为 可调用对象 (callable)的内置类型,也就是跟内置函数(built-in function)在表面上相似的那些: int、str、list、tuple、range、set、dict…… 这些类型(type)可以简单理解成其它语言中的类(class),但是 Python 在此并没有用习惯上的大驼峰命名法,因此容易让人产生一些误解。 在 Python 2.2 之后,这些内置类型可以被子类化(subclassing),也就是可以被继承(inherit)。 2、内置类型的子类化 众所周知,对于某个普通对象 x,Python 中求其长度需要用到公共的内置函数 len(x)

分布式架构的演变过程

杀马特。学长 韩版系。学妹 提交于 2021-01-24 00:52:30
一、前言 ​  随着社会的发展,技术的进步,以前的大型机架构很显然由于高成本、难维护等原因渐渐地变得不再那么主流了,替代它的就是当下最火的分布式架构,从大型机到分布式,经历了好几个阶段,我们弄明白各个阶段的架构,才能更好地理解和体会分布式架构的好处,那么本文我们就来聊聊分布式架构的演进过程,希望能给大家带来眼前一亮的感觉。 二、背景说明 ​  我们都知道一个成熟的大型网站的系统架构并非一开始就设计的非常完美,也没有一开始就具备高性能、高并发、高可用、安全性等特性,而是随着用户量的增加、业务功能的扩展逐步演变过来的,慢慢的完善的。 在这个过程中,开发模式、技术架构等都会随着迭代发生非常大的变化。 而针对不同业务特征的系统,各自都会有自己的侧重点,例如像淘宝这类的网站,要解决的重点问题就是海量商品搜索、下单、支付等问题; 像腾讯这类的网站,要解决的是数亿级别用户的实时消息传输;而像百度这类的公司所要解决的又是海量数据的搜索。每一个种类的业务都有自己不同的系统架构。 ​  下面我们来简单模拟一个架构演变过程。 我们以 javaweb 为例,来搭建一个简单的电商系统,从这个系统中来看系统的演变过程。要注意的是接下来的演示模型, 关注的是数据量、访问量提升,网站结构的变化, 而不关注具体业务的功能点。其次,这个过程是为了让大家能更好的了解网站演进过程中的一些问题和应对策略。