mysql中间件

MySQL中间件介绍

南楼画角 提交于 2019-12-01 07:57:33
360 Atlas Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。 Altas架构: Atlas是一个位于应用程序与MySQL之间,它实现了MySQL的客户端与服务端协议,作为服务端与应用程序通讯,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节,同时为了降低MySQL负担,它还维护了连接池。 主要功能: 1. 读写分离 2. 从库负载均衡 3. IP过滤 4. SQL语句黑白名单 5. 自动分表 (1)需带有分表字段。 (2)支持SELECT、INSERT、UPDATE、DELETE、REPLACE语句。 (3)支持多个子表查询结果的合并和排序。 6.之前官方主要功能逻辑由使用lua脚本编写,效率低,Atlas用C改写,QPS提高,latency降低。 7.安全方面的提升 (1)通过配置文件中的pwds参数进行连接Atlas的用户的权限控制。 (2)通过client-ips参数对有权限连接Atlas的ip进行过滤。 (3)日志中记录所有通过Altas处理的SQL语句,包括客户端IP、实际执行该语句的DB、执行成功与否、执行所耗费的时间

mysql中间件分享(Mysql-prxoy,Atlas,DBProxy,Amoeba,cobar,TDDL)

非 Y 不嫁゛ 提交于 2019-12-01 07:40:49
hello 各位小伙伴大家好,我是小栈君,这期我们分享关于mysql中间件的研究,也就是数据层的读写分离和负载均衡,希望能够在实际的应用中能够帮助到各位小伙伴。 下期我们将继续分享go语言的系列讲解,以及以后的生活中我们也将会分享系列课程包括大数据、人工智能、区块链等等,希望大家能够多多学习和分享给身边的小伙伴,我们一起进步和成长。 mysql-proxy MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤。 从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询。 它的执行流程如图所示: 让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。 mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。 官网: https://downloads.mysql.com/archives/proxy/ 下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。

ubuntu14.04 LTS下Atlas2.2安装说明

落爺英雄遲暮 提交于 2019-11-30 11:07:13
准备工作 本文档是在ubuntu14.04下安装 2.2版本的atlas 。 官方文档很重要,请熟读。 wiki地址: https://github.com/Qihoo360/Atlas/wiki QQ 群:326544838(可以加此群进行咨询) 1. 所用软件: Ubuntu14.04 LTS版 2. 使用服务器地址:192.168.1.244 3. ubuntu14.04 对应的 安装 文件选择 Atlas-2.2-debian7.0-x86_64.deb 4. 主库为192.168.1.160,从库为192.168.1.116,192.168.1.149,192.168.236 2 Atlas 的整体架构 Atlas是由 Qihoo 360, Web平台部基础架构团队开发维护的一个基于MySQL协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用Atlas运行的mysql业务,每天承载的读写请求数达几十亿条。 Atlas 是一个位于应用程序与MySQL之间中间件。在后端DB看来,Atlas相当于连接它的客户端,在前端应用看来,Atlas相当于一个DB。Atlas作为服务端与应用程序通讯,它实现了MySQL的客户端和服务端协议,同时作为客户端与MySQL通讯。它对应用程序屏蔽了DB的细节

【10】MySQL:MyCAT 分布式架构

人盡茶涼 提交于 2019-11-30 10:20:15
写在前面的话 在学习的索引的时候,有提到,当数据表数据达到 800W 的时候,索引的性能就开始逐步下降。对于一个公司而言,主要业务数据表达到 1000W 都很容易。同时这张表一般都是业务常用的表,操作还比较频繁。所以为了提升用户体验,需要采用另外的方式对数据库进行优化,那就是分库分表。而 MyCAT 就是能够帮助我们管理分库分表的这样一个中间件。 MyCAT 环境基础架构准备 架构图 1: 架构图 2: 【1】搭建基础环境: 1. 在 db01 :192.168.100.111 上面安装数据库多实例: # 创建基础目录 mkdir -p /data/{data,logs,backup,conf}/mysql-33{07,08,09,10} mkdir -p /data/logs/mysql-33{07,08,09,10}/{bin-log,slow-log,error-log,relay-log} mkdir -p /data/packages/mysql mkdir -p /data/services # 添加用户 useradd -s /sbin/nologin mysql # 修改目录权限 chown -R mysql.mysql /data/logs/mysql-33* chown -R mysql.mysql /data/data/mysql-33* # 清理默认配置文件

数据库中间件详解 | 珍藏版

天涯浪子 提交于 2019-11-30 10:05:26
1 数据库拆分过程及挑战 互联网当下的数据库拆分过程基本遵循的顺序是:垂直拆分、读写分离、分库分表(水平拆分)。每个拆分过程都能解决业务上的一些问题,但同时也面临了一些挑战。 1.1 垂直拆分 对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库 中进行访问操作。举例来说,对于一个电商系统,其用户模块和产品模块的表刚开始都是位于一个库中。 其中:user、user_account表属于用户模块,product_category、product表属于产品模块。 刚开始,可能公司的技术团队规模比较小,所有的数据都位于一个库中。随着公司业务的发展,技术团队人员也得到了扩张,划分为不同的技术小组,不同的小组负责不同的业务模块。例如A小组负责用户模块,B小组负责产品模块。此时数据库也迎来了第一次拆分:垂直拆分。 这里的垂直拆分,指的是将一个包含了很多表的数据库,根据表的功能的不同,拆分为多个小的数据库,每个库包含部分表。下图演示将上面提到的db_eshop库,拆分为db_user库和db_product库。 通常来说,垂直拆分,都是根据业务来对一个库中的表进行拆分的。关于垂直拆分,还有另一种说法,将一个包含了很多字段的大表拆分为多个小表,每个表包含部分字段,这种情况在实际开发中基本很少遇到。

Sharding-JDBC 3.x 原理篇之基本介绍

徘徊边缘 提交于 2019-11-30 06:28:31
Sharding-JDBC 3.x 原理篇之基本介绍 简介 功能介绍 Sharding-JDBC Sharding-Proxy Sharding-Sidecar 混合架构 各大版本间的区别与变化 1.x 功能列表 2.x 功能清单 3.x 功能清单 规划线路图 相关文档及实例 简介 Sharding-JDBC是当当开源的数据库水平切分的中间件,其代表了客户端类的分库分表技术框架(这一点与MyCat不同,MyCat本质上是一种数据库代理)。Sharding-JDBC定位为轻量级数据库驱动,由客户端直连数据库,以jar包形式提供服务,未使用中间层,无需额外部署,无其他依赖,业务系统开发人员与数据库运维人员无需改变原有的开发与运维方式。因此Sharding-JDBC即为增强版的JDBC驱动,可以实现旧代码迁移零成本的目标。   目前社区较为活跃。目前已广泛应用于现各大互联网公司。通过社区得知,Sharding-JDBC的作者已去京东做全职的Sharding-JDBC开发,相信未来Sharding-JDBC社区的发展将会更好。 功能介绍 目前Sharding-JDBC共有3个主要模块,分别为Sharding-JDBC、Sharding-Proxy、Sharding-Sidecar Sharding-JDBC 定位为轻量级Java框架,在Java的JDBC层提供的额外服务。

2014Oracle技术嘉年华

别等时光非礼了梦想. 提交于 2019-11-30 06:08:16
作为国内最顶尖的Oracle数据库技术盛会,我们今年荣幸的邀请到Oracle公司副总裁Thomas Kyte,Pythian集团 CTO Alex Gorbachev等Oracle数据库领域国际级专家,特别为中国的数据库爱好者带来他们多年的总结与经验分享。另外,我们还将邀请来自Oracle、京东、网易、 搜狐、新浪、去哪儿网、移动、联通等公司的核心数据库专家/架构师为各位朋友带来国内最新的数据库领域应用及最佳实践分享,届时更有多位神秘重量级嘉宾登场。 如果你想让大数据及 云 计算真正为你所用,创造价值; 如果你想集各家电商之所长,让你的数据架构更加卓越; 如果你疲于应付各种突发数据库问题,希望运维更加便捷; 参加Oracle技术嘉年华,这里不会让你失望! 嘉年华主题:数据库技术企业应用最佳实践 嘉年华定位:Oracle数据库领域行业顶尖专家技术交流、分享盛宴。 会议时间:11月14日-15日 会议地点:北京·五洲皇冠国际酒店 日程安排:第一天(11月14日) 主场:新经济背景环境下IT新技术运用 开场演讲 重量嘉宾 Oracle云战略 Oracle美国总部研发团队全球副总裁 Sally Piao 数据驱动-云时代的Oracle架构变革创新与整合运营 云和恩墨首席架构师 盖国强 茶歇 数据库的技术发展演变和创新 甲骨文公司副总裁及大中华区技术产品事业部总经理吴承杨

MySQL数据库优化技巧

青春壹個敷衍的年華 提交于 2019-11-30 00:35:51
一个成熟的数据库架构并不是一开始设计就具备高可用、高伸缩等特性的,它是随着用户量的增加,基础架构才逐渐完善。这篇文章主要谈谈MySQL数据库在发展周期中所面临的问题及优化方案,暂且抛开前端应用不说,大致分为以下五个阶段: 阶段一:数据库表设计 项目立项后,开发部门根据产品部门需求开发项目。 开发工程师在开发项目初期会对表结构设计。对于数据库来说,表结构设计很重要,如果设计不当,会直接影响到用户访问网站速度,用户体验不好!这种情况具体影响因素有很多,例如慢查询(低效的查询语句)、没有适当建立索引、数据库堵塞(锁)等。当然,有测试部门的团队,会做产品测试,找Bug。 由于开发工程师重视点不同,初期不会考虑太多数据库设计是否合理,而是尽快完成功能实现和交付。等项目上线有一定访问量后,隐藏的问题就会暴露,这时再去修改就不是这么容易的事了! 阶段二:数据库部署 是时候运维工程师出场了,项目上线。 项目初期访问量一般是寥寥无几,此阶段Web+数据库单台部署足以应对在1000左右的QPS(每秒查询率)。考虑到单点故障,应做到高可用性,可采用MySQL主从复制+Keepalived实现双机热备。主流HA软件有:Keepalived(推荐)、Heartbeat。 阶段三:数据库性能优化 如果将MySQL部署到普通的X86服务器上,在不经过任何优化情况下,MySQL理论值正常可以处理1500左右QPS

MySQL、Oracle、SQL Server区别

穿精又带淫゛_ 提交于 2019-11-29 21:21:28
本文是从知乎上扒下来的两个个人认为比较好的回答,通读全文可能还是一知半解,留作后期学习慢慢咀嚼。原网址: https://www.zhihu.com/question/19866767 回答一:从历史、应用场景和架构3个方面回答这个问题。 作者:孙文亮 来源:知乎 SQL,在这里我理解成SQL Server。三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性。排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相似,就不赘述了。 一、如果要说明三者的区别,首先就要从历史入手。 Oracle: 中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板Larry Ellision。 Ellision 32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去。开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番。 Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文《A Relational Model of Data for Large Shared Data Banks》【1】。作者CODD选取了关系代数的五种运算,并基于运算,架构了一种新型的数据存储模型。基于这种模型,Oracle成为了一个非常典型的关系数据库。因此也变的 严谨、安全、高速、稳定 ,并且变的越来越庞大。

MySQL-python中间件的安装及Flask_SQLAlchemy的学习

▼魔方 西西 提交于 2019-11-29 15:15:44
在windows上安装MySQL-python中间件的网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysql-python Flask 是一个 Python 的 web 开发微框架,Flask_SQLAlchemy的学习网址:http://www.pythondoc.com/flask-sqlalchemy/ 通过cmd命令窗登陆到mysql: ( 注意得先进入到mysql的bin目录下 ) 来源: CSDN 作者: fandeng_h 链接: https://blog.csdn.net/dengfan666/article/details/78404040