mysql中间件

MySQL复制与读写分离

[亡魂溺海] 提交于 2020-01-01 12:14:22
MySQL的复制架构就是以一台服务器充当主服务器,而一台或多台其它服务器充当从服务器。从服务器基于主服务器的二进制日志跟踪所有对数据库的更改操作,以而在从服务器上的数据拷贝执行相同的更改操作。使用MySQL复制架构可以通过在主服务器和从服务器之间分离客户处理负荷,从而得到更好的客户响应时间。使用复制的另一个好处是可以使用一个从服务器执行备份,而不会干扰主服务器。因而,MySQL复制架构主要应用于:分布数据、负载平衡(load balancing)、备份或其他高可用性(high availability)和容错的架构中。 大体上,复制有3个步骤: 1.主服务器把数据更改记录到二进制日志中(二进制日志事件Binary Log Events) 2.从服务器把主服务器的二进制日志事件拷贝到自己的中继日志(Relay Log)中。 3.从服务器重放中继日志中的事件,把更改应用到自己的数据上。 该过程的第一部分就是主服务器记录二进制日志。在每个事务更新数据完成之前,主服务器在二日志记录这些改变。MySQL将事务串行的写入二进制日志,即使事务中的语句都是交叉执行的。在事件写入二进制日志完成后,主服务器通知存储引擎提交事务。 下一步就是从服务器将主服务器的binary log拷贝到它自己的中继日志。首先,从服务器开始一个工作线程——I/O线程。I/O线程在主服务器上打开一个普通的连接

mysql 中间件学习

a 夏天 提交于 2019-12-28 03:36:48
1、为什么用数据库中间件 2、数据库中间件: 3、mycat功能 一、单主单从读写分离 二、双主双从读写分离 mycat功能 读写分离 数据分片 垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表) 多数据源整合 3、mycat原理: 5、mycat安装 方式一 解压后即可使用 方式二 解压后编译安装 1、server.xml配置文件修改: TESTDB : 逻辑库 2、schema.xml配置文件修改: 来源: CSDN 作者: qq_41134008 链接: https://blog.csdn.net/qq_41134008/article/details/103692711

使用sysbench对mysql压力测试

旧时模样 提交于 2019-12-25 22:30:07
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。关于这个项目的详细介绍请看: https://github.com/akopytov/sysbench 。 它主要包括以下几种方式的测试: cpu性能 磁盘io性能 调度程序性能 内存分配及传输速度 POSIX线程性能 数据库性能(OLTP基准测试) sysbench的数据库OLTP测试支持MySQL、PostgreSQL、Oracle,目前主要用于Linux操作系统,开源社区已经将sysbench移植到了Windows,并支持SQL Server的基准测试。 废话不多说,开始。 1. sysbench安装 mysql版本: mysql-community-server-5.6.29 OS: CentOS 6.7 X86_64 sysbench 0.5相比0.4版本有一些变化,包括oltp测试结合了lua脚本,还多了一些隐藏选项,本文会涉及得到一部分。 目前许多仓库里已编译好的二进制sysbench还是0.4.x版本,不过现在主流也还是github上的0.5(我这里使用的是1.0),可以从 这里 下载0.5版本的rpm包直接安装,不过我选择自己编译,因为只有这个办法是通用的。 // 先安装编译依赖环境 $ sudo yum install gcc gcc-c++

数据库介绍

纵然是瞬间 提交于 2019-12-25 13:38:27
1、数据库是什么? 数据库(database)就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据提供的多种方法来管理数据库里的数据。 2、数据库的种类? 数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的 数据结构 来联系和组织的。 而在当今的互联网中,最常见的数据库模型主要是两种,即 关系型数据库和非关系型数据库 。 2.1、关系型数据库介绍? (1)、关系型数据库的由来 虽然网状数据库和层次数据库已经很好的解决了数据的集中和共享问题,但是在数据库独立性和抽象级别上扔有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存取路径。而关系型数据库就可以较好的解决这些问题。 (2)、关系型数据库介绍 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。 关系型数据库诞生40多年了,从理论产生发展到现实产品,例如: Oracle和MySQL,Oracle 在数据库领域上升到霸主地位,形成每年高达数百亿美元的庞大产业市场。 (3)、常用的关系型数据库 oracle;Mysql;MariaDB

数据库分类

妖精的绣舞 提交于 2019-12-25 13:38:03
http://www.jianshu.com/p/763f890579f9 做了几年开发,用过几种数据库,但是也就知道数据库的名字,其他的也没学到啥,开发过程中大多数也就是写写SQL文,增删改查之类的,现在发现我的知识很模糊,基础不牢靠,需要系统的学习一下。 1.1 数据库介绍 1.1.1什么是数据库 简单的说,数据库(database)就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据提供的多种方法来管理数据库里的数据。 1.2 数据库的种类 数据库通常分为层次式数据库、网络式数据库和关系式数据库三种。而不同的数据库是按不同的 数据结构 来联系和组织的。而在当今的互联网中,最常见的数据库模型主要是两种,即关系型数据库和非关系型数据库。 1.2.1关系型数据库介绍 关系型数据库介绍 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据库的管理。 关系型数据库诞生40多年了,从理论产生发展到现实产品,例如:Oracle和MySQL,Oracle在数据库领域上升到霸主地位,形成每年高达数百亿美元的庞大产业市场。 1.2.2非关系型数据库介绍 NoSQL

mysql读写分离,中间件用mycat

旧城冷巷雨未停 提交于 2019-12-22 09:42:35
首先,数据库的读写分离,能让应用对数据库的访问压力下降,较之一台数据库服务器来读写的时候。 2台数据库服务器,1台用来执行写操作,1台用来执行读操作,这样能够分散应用对数据的压力,而且能加强数据库的数据安全性。 所以,面对比较大型的数据读取应用,对其数据库做读写分离,对性能提升是很有好处的。 为什么读写分离可以提高性能? 物理服务器增加,负荷增加 主从只负责各自的写和读,极大程度的缓解X锁和S锁争用 从库可配置myisam引擎,提升查询性能以及节约系统开销 至于你提到的“master所执行的(写)的所有语句,都会在slave被执行一遍”这个只说对一半,从库同步主库的数据和主库直接写还是有区别的,通过主库发送来的binlog恢复数据,但是,最重要区别在于主库向从库发送binlog是异步的,从库恢复数据也是异步的。 读写分离适用与读远大于写的场景,如果只有一台服务器,当select很多时,update和delete会被这些select访问中的数据堵塞,等待select结束,并发性能不高。 对于写和读比例相近的应用,应该部署双主相互复制。 主要步骤 1.mysql主从数据库设置,master用来做写操作,slave用来做读操作。 主从数据库设置,是指slave会通过mysql的主从复制功能,自动去实时去同步master上的数据变更。(单向的slave copy master) 2

MySQL中间件之ProxySQL总结

匆匆过客 提交于 2019-12-18 08:18:25
MySQL中间件之ProxySQL总结 1、ProxySQL简介 ProxySQL为MySQL的中间件,其有两个版本,官方版和percona版,percona版是基于官方版基础上修改而来。ProxySQL是用C++语言开发的,虽然也是一个轻量级产品,但性能很好(据测试,能处理千亿级的数据),功能也足够,能满足中间件所需的绝大多数功能,包括: 1)最基本的读/写分离,且方式有多种。 2)可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由。换句话说,规则很灵活。基于schema和与语句级的规则,可以实现简单的sharding。 3)可缓存查询结果。虽然ProxySQL的缓存策略比较简陋,但实现了基本的缓存功能,绝大多数时候也够用了。此外,作者已经打算实现更丰富的缓存策略。 4)监控后端节点。ProxySQL可以监控后端节点的多个指标,包括:ProxySQL和后端的心跳信息,后端节点的read-only/read-write,slave和master的数据同步延迟性(replication lag)。 2、proxysql的配置系统体系结构 整个配置系统分为三层,如下所示: proxysql的每一个配置项在三层中都存在,但是这三层是独立的,也就是说,proxysql可以同时拥有三份配置,每层都是独立的,可能三份都不一样,可能三份都一样。 RUNTIME这个顶级层

mysql中间件汇总

假如想象 提交于 2019-12-16 08:15:37
一、写在前面 mysql作为互联网公司都会用到的数据库,在使用过程中。会用主从复制来提高性能。会用分库分表解决写入问题。以下介绍mysql中间件的一些实现方案 二、Atlas Atlas时 360 公司开发维护的一个基于MySQL协议的数据中间层项目。 2.1 atlas架构 Atlas是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 2.3 主要功能 1.读写分离 2.从库负载均衡 3.IP过滤 4.自动分表 5.DBA可平滑上下线DB 6.自动摘除宕机的DB 三、Mysql router MySQL Router是mysql官方发布的数据库中间件,是处于应用client和dbserver之间的轻量级代理程序,它能检测,分析和转发查询到后端数据库实例,并把结果返回给client。是mysql-proxy的一个替代品 3.1 mysql router架构 1.Router实现读写分离,程序不是直接连接数据库IP,而是固定连接到mysql router。MySQL Router对前端应用是透明的。 应用程序把MySQL

mysql 分库分表 问题及方案

淺唱寂寞╮ 提交于 2019-12-13 14:30:06
Sharding的基本思想就要把一个 数据库 切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。当然,现实中更多是这两种情况混杂在一起,这时候需要根据实际情况做出选择,也可能会综合使用垂直与水平切分,从而将原有数据库切分成类似矩阵一样可以无限扩充的数据库(server)阵列。 需要特别说明的是:当同时进行垂直和水平切分时,切分策略会发生一些微妙的变化。比如:在只考虑垂直切分的时候,被划分到一起的表之间可以保持任意的关联关系,因此你可以按“功能模块”划分表格,但是一旦引入水平切分之后,表间关联关系就会受到很大的制约,通常只能允许一个主表(以该表ID进行散列的表)和其多个次表之间保留关联关系,也就是说:当同时进行垂直和水平切分时,在垂直方向上的切分将不再以“功能模块”进行划分,而是需要更加细粒度的垂直切分,而这个粒度与领域驱动设计中的“聚合”概念不谋而合,甚至可以说是完全一致,每个shard的主表正是一个聚合中的聚合根!这样切分下来你会发现数据库分被切分地过于分散了

MyCat:取代Cobar数据库中间件

£可爱£侵袭症+ 提交于 2019-12-10 15:46:40
Cobar 是阿里巴巴开源的一个数据库中间件,为了解决类似proxy这类的问题。目前同类型的有奇虎360开源的Atlas。类似的有基本在线上用起来很不爽,问题多多的比如MySQL Proxy和SQL Relay,基本可以忽略。 Cobar 下载: https://github.com/alibaba/cobar Atlas 下载: https://github.com/Qihoo360/Atlas =============================================================== MyCat:取代Cobar数据库中间件 什么是MyCAT?简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的“大数据库集群” 支持事务、ACID、可以替代Mysql的加强版数据库 ? 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 ? 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server ? 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 ? 一个新颖的数据库中间件产品。 目标 低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。 关键特性 支持 SQL 92标准 支持Mysql集群,可以作为Proxy使用