mysql中间件

MySQL

烂漫一生 提交于 2019-11-27 21:03:59
1.1 mysql 架构   mysql 分为 server 层和存储引擎 1.1.1 server层 连接器:管理连接权限验证 查询缓存:命中缓存直接换回查询结果 分析器:分析语法 优化器:生成执行计划,选择索引 执行器:操作索引返回结果 1.1.2 存储引擎 存储引擎负责数据的存储和提取;其架构是插件式的。innodb 在 mysql5.5.5 版本开始成为 mysql 默认存储引擎。 各存储引擎比对: InnoDB:支持事务,支持外键,InnoDB 是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据,不支持全文索引。 MyISAM:不支持事物,不支持外键,MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的,查询效率上 MyISAM 要高于 InnnDB ,因此做读写分离的时候一般选择用 InnoDB 做主机,MyISAM 做从机 Memory:有比较大的缺陷使用场景很少;文件数据都存储在内存中,如果 mysqld 进程发生异常,重启或关闭机器这些数据都会消失。 1.1.3 sql 的执行过程   第一步客户端连接上 mysql 数据库的连接器,连接器获取权限,维持管理连接;连接完成后如果你没有后续的指令这个连接就会处于空闲状态

MyCAT+MySQL 读写分离部署

孤街醉人 提交于 2019-11-27 19:15:37
单一的 MySQL 服务器一旦宕机,会造成单点故障,整个系统无法运转,所以要有主库(Master)和从库(Slave备库)两份,主库故障时自动切换至备库。另外,大多企业应用是写的少(INSERT/DELETE/UPDATE)查的多(SELECT),所以还要实现读写分离,以便根据读写比例分别扩展读、写库节点的数目。这么复杂的切库与数据分流,如果在应用内部实现,会很繁琐,而且耦合度高,可采用数据库中间件实现这些功能。本文是使用 MyCAT 实现双主(写)双从(读) MySQL 的部署。 作者: 王克锋 出处: https://kefeng.wang/2016/12/22/mycat-mysql/ 版权: 自由转载-非商用-非衍生-保持署名 ,转载请标明作者和出处。 1 MySQL 开源中间件比较 1.1 TDDL(alibaba) 不是独立运行的中间件,以 JAR 包形式供给应用调用;社区已停滞。 1.2 Amoeba(alibaba,陈思儒) 独立运行的中间件,介于应用和MySQL集群之间,后端使用JDBC Driver,所以更通用;社区已停滞。 1.3 Cobar(alibaba) 是 Amoeba 的进化版本,后端JDBC Driver改为原生的 MySQL 协议,不通用,但更强大(如主备切换);社区已停滞(2013年)。 1.4 MyCAT 是 Cobar 的进化版本,后端由

MySQL相关

梦想与她 提交于 2019-11-27 15:58:40
一、SELECT语句的执行顺序 from->on->join->where->group by->聚集函数->having->计算表达式->select->distinct->order by->top 二、存储过程 存储过程是一个可编程的函数,它在数据库中创建并保存。优点有: 1、存储过程能实现较快的执行速度 2、存储过程允许标准组件式编程。 3、存储过程可以用流程控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。 4、存储过程可被作为一种安全机制来充分利用。 5、存储过程能够减少网络流量 存储过程和函数的异同点 相同点:存储过程和函数都是为了可重复的执行操作数据库的sql 语句的集合。 不同点: 1、标识符不同,函数的标识符是function,存储过程是proceduce。 2、函数中有返回值,且必须有返回值,而过程没有返回值,但是可以通过设置参数类型(in,out)来实现多个参数或者返回值。 3、函数使用select 调用,存储过程需要使用call 调用。 三、事务的特性 1、原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行。 2、一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。 3、隔离性(Isolation):事务的执行不受其他事务的干扰

MySQL主从复制与读写分离

喜夏-厌秋 提交于 2019-11-27 06:21:46
MySQL 主从复制与读写分离 MySQL 主从复制 (Master-Slave) 与读写分离 (MySQL-Proxy) 实践 Mysql 作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过。但在实际的生产环境中,由单台 Mysql 作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面。 因此,一般来说都是通过 主从复制( Master-Slave )的方式来同步数据,再通过读写分离( MySQL-Proxy )来提升数据库的并发负载能力 这样的方案来进行部署与实施的。 如下图所示: 下面是我在实际工作过程中所整理的笔记,在此分享出来,以供大家参考。 一、 MySQL 的安装与配置 具体的安装过程,建议参考我的这一篇文章: http://heylinux.com/archives/993.html 值得一提的是,我的安装过程都是源码包编译安装的,并且所有的配置与数据等都统一规划到了 /opt/mysql 目录中,因此在一台服务器上安装完成以后,可以将整个 mysql 目录打包,然后传到其它服务器上解包,便可立即使用。 二、 MySQL 主从复制 场景描述: 主数据库服务器: 192.168.10.130 , MySQL 已经安装,并且无应用数据。 从数据库服务器: 192.168.10.131 , MySQL 已经安装

Mysql主从复制,读写分离(mysql-proxy),双主结构完整构建过程

不想你离开。 提交于 2019-11-27 06:20:26
下面介绍Mysql主从复制,读写分离,双主结构完整构建过程,不涉及过多理论,只有实验和配置的过程。 Mysql主从复制(转载请注明出处,博文地址:) 原理是master将改变记录到二进制日志(binary log),slave将master的binary log拷贝到中继日志(relay log),slave通过中继日志同步master的操作。 1,实验环境,实验有2台Ubutu server 14都安装了mysql服务器,在相同的IP段 172.16.34.212(主), 172.16.34.156(从). 2,将这两台IP授权,允许其它IP通过账号密码进行访问(如添加个euht账号允许所有外部IP以密码123456访问),分别登录进两台机子的mysql执行如下语句 Grant all privileges on . to ‘euht’@’%’ identified by ‘123456’ with grant option; Flush privileges; 注: ①上述代码的意思是创建一个euht用户,host=%,允许所有IP通过用户名euht进行访问。添加完刷新权限。 ②此时两台机子的mysql应该是可以相互访问的,如果不可以,导致的原因有很多,最常见的是防火墙没关,mysql服务器绑定了本地地址。通过如下方法一般可解决问题 关闭防火墙,或开放3306端口 更改my

MySQL主从复制读写分离与Yii2实现

旧时模样 提交于 2019-11-27 06:19:42
实现方式 首先说明这种方式一般分为两种: 1.采用代码形式,就是在代码中判断我是否要进行查询还是更新或增加,对应的去不同服务器的从库或主库进行操作 2.使用MySQL proxy 来进行这样可以不用从代码来直接区分是增删改查的语句,直接去MySQL proxy去执行操作,然后MySQL proxy回去对应的主库或者从库执行操作。一般称这样的方式为中间件,除了有MySQL proxy之外还有HAproxy(付费)等。 这两种方式各有其适用的场景,不能片面的指出那种方式比较好,只能是根据自己的业务需求去决定。 关于 MySQL的主从复制的配置以及MySQL proxy的配置 在以下这篇文章当中会详细讲到: http://www.cnblogs.com/DavidYan/articles/2531181.html 或者可以参考这个 http://www.jianshu.com/p/8528072cba9a 接下来我们要说的是在Yii2中是如何实现这个代码层级的读写分离. Yii2中主从复制和读写分离 这里主要围绕最新的Yii2英文文档中的一小节“主从复制与读写分离”展开进行介绍。为什么是英文文档?目前中文翻译的文档不是最新的。 首先我们需要在 web.php中配置一下在component(组件)数组中按照下文进行配置,或者是直接覆盖到config文件夹当中的db.php文件。 [

安装MySQL

蓝咒 提交于 2019-11-27 00:58:05
一、MySQL官方网站介绍 1.Developer Zone : MySQL开发工程师板块 Articles : Oracle工程师自己的博客 Plant MySQL : 和MySQL相关从业人员的博客 Bugs : MySQL BugList Worklog : 开发记录 Labs : MySQL实验性项目 2.Downloads : MySQL下载 Enterprise : MySQL企业版本相关,略过 Community : 社区版,我们下载和使用社区版 MySQL Community Server : MySQL Server MySQL Fabric : 和管理相关的工具 MySQL Router : 路由中间件 MySQL Utilities : MySQL应用程序包 MySQL Proxy : MySQL代理。Alpha版本,不推荐 3.Documentation : MySQL文档 官方文档版面更改,下线离线文档在左侧Menu的下面 PDF A4 EPUB HTML 二、MySQL下载 1.推荐下载Linux-Generic 版本 2.Source Code 版本主要作用是为了让开发人员研究源码使用,自己编译对性能提升不明显 3.不推荐 Version 5.5.x ,有部分bug 4.推荐使用Version 5.6.x 和Version 5.7.x 下载地址:

数据库读写分离、分表分库——用Mycat

无人久伴 提交于 2019-11-26 14:38:05
转: 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 Mycat引用的jar包

node项目实战-用node-koa2-mysql-bootstrap搭建一个前端论坛

≡放荡痞女 提交于 2019-11-26 09:37:57
前言 在学习了koa2和express并写了一些demo后,打算自己写一个项目练练手,由于是在校生,没什么好的项目做,即以开发一个前端论坛为目标,功能需求参照一下一些社区拟定,主要有: 登录注册 个人信息维护、头像等基本信息 发表文章,富文本编辑器采用wangEditor插件,编辑、删除文章,文章分类等 文章评论、文章收藏、点赞等 支持文章分页、评论分页加载 关注取关用户 资源(文件)上传分享、下载、查看 学习资源推荐..... 作者个人日记 but。。。。由于种种原因,目前仅实现了部分功能,资源分享还没写 项目运行效果: http://120.77.211.212/home 项目技术栈应用:node-koa2-ejs-bootstrap3—jquery, github地址: https://github.com/Jay214/myb... ,如果觉得对你有帮助或者还看得下去,欢迎star~~鼓励鼓励我这前端渣渣辉。 开发环境 node: v8.3.0 koa: ^2.4.1 mysql: 5.7.1 npm: 5.3.0及以上 如何运行项目 将项目clone至本地 git clone git@github.com:Jay214/myblog-koa2.git 安装模块中间件 npm install 安装mysql mysql版本推荐使用5.7以下的,5.7的有个bug

MySQL优化(超完整版)(二)

懵懂的女人 提交于 2019-11-26 00:47:21
7. MySQL分库分表 (1) 分库分表概念介绍   MySQL的分库分表有两种方式: 垂直拆分 和 水平拆分 。    垂直拆分 :垂直拆分就是要 把表按模块划分到不同数据库表中 (当然原则还是不破坏第三范式),这种拆分在大型网站的演变过程中是很常见的。当一个网站还在很小的时候,只有小量的人来开发和维护,各模块和表都在一起,当网站不断丰富和壮大的时候,也会变成多个子系统来支撑,这时就有按模块和功能把表划分出来的需求。其实,相对于垂直切分更进一步的是服务化改造,说得简单就是要把原来强耦合的系统拆分成多个弱耦合的服务,通过服务间的调用来满足业务需求看,因此表拆出来后要通过服务的形式暴露出去,而不是直接调用不同模块的表。(垂直拆分用于分布式场景)    水平拆分 :解决单表大数据量的问题,水平切分就是要把一个表按照某种规则把数据划分到不同表或数据库里。例如:在大型电商系统中,每天的会员人数不断的增加。达到一定瓶颈后如何优化查询。通过将表数据水平分割成不同的表来实现优化。(实现规则:hash、时间、不同的维度)    通俗理解:水平拆分行,行数据拆分到不同表中, 垂直拆分列,表数据拆分到不同表中。 (2) 水平分表的案例    分表原理: 取模拆分(一致性hash),可以将数据分配的比较均匀。 这里我们以3张表为例: 案例: 首先我创建三张表 user0 / user1 /user2