MySQL-Proxy

读写分离很难吗?SpringBoot结合aop简单就实现了!

纵饮孤独 提交于 2021-02-12 18:50:44
点击上方 " 程序员小乐 "关注, 星标或置顶一起成长 每天凌晨00点00分, 第一时间与你相约 每日英文 Take chances, give everything, and leave with no regrets. 抓住机会,全心付出,不留遗憾的离开。 每日掏心 话 生命中遇到的每一个人都是有理由的,之前所有的错失与遗憾,都只是为了遇到最终那个对的人。 来自 : 鄙人薛某 | 责编:乐乐 链接:juejin.im/post/5ddcd93af265da7dce3271de 程序员小乐(ID:study_tech) 第 864 次推文 图源:百度 往日回顾: 如何使用 Nginx 优雅的限流 正文 前言 入职新公司到现在也有一个月了,完成了手头的工作,前几天终于有时间研究下公司旧项目的代码。在研究代码的过程中,发现项目里用到了Spring Aop来实现数据库的读写分离,本着自己爱学习(我自己都不信…)的性格,决定写个实例工程来实现spring aop读写分离的效果。 环境部署 数据库:MySql 库数量:2个,一主一从 关于mysql的主从环境部署,可以参考: https://juejin.im/post/5dd13778e51d453da86c0e6f 开始项目 首先,毫无疑问,先开始搭建一个SpringBoot工程,然后在pom文件中引入如下依赖: <

using mysql-proxy to manipulate login information

丶灬走出姿态 提交于 2021-01-27 06:25:07
问题 Is it possible to intercept and change login information within a lua script for mysql-proxy. for example, if a user were to hit the proxy like this: mysql -h localhost -P 4040 -u bob -D orders -p i would want the connection not only redirected to a backend server, but also the username/database name changed, so that the above command was the equivalent of this: mysql -h production.server -P 3306 -u bob_production -D bob_orders -p I notice that it seems that I can only get auth information in

百万级高并发技术整体架构

我只是一个虾纸丫 提交于 2021-01-09 08:04:51
高并发是由于应用系统(如:移动APP或网站等)即页面浏览量或点击量大,单台服务器无法承载大量访问所带来的压力,因此会采用服务器硬件集群技术,用N台服务器进行分流,对于每次访问采取负载均衡策略,被分配到不同的服务器来处理请求。 负载均衡种类 一种是通过硬件来实现,常见硬件有F5,A10,NetScaler、Radware和Array等商用的负载均衡器,但是它们是比较昂贵,成本比较高。 另一种是通过软件来实现,常见的软件有LVS、Nginx、Apache等,它们是基于Linux系统并且开源的负载均衡策略。 整体架构图: 架构说明: Keepalived :是用来 检测服务器的状态,如果有一台web服务器宕机,或工作出现故障时,Keepalived将会检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。 Keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。 LVS (Linux Virtual Server):即Linux虚拟服务器,有三种IP负载均衡技术(VS/NAT、VS/TUN和VS/DR),十种调度算法(rr|wrr

ProxySQL 实现Mysql读写分离

可紊 提交于 2020-12-24 23:48:18
ProxySQL是一个高性能的MySQL中间件,拥有强大的规则引擎。ProxySQL是用C++语言开发的,也是percona推的一款中间件,虽然也是一个轻量级产品,但性能很好(据测试,能处理千亿级的数据),功能也足够,能满足中间件所需的绝大多数功能。 ProxySQL具备了很多优质特性,具体总结如下: -> 连接池,而且是multiplexing - > 主机和用户的最大连接数限制 - > 自动下线后端DB - > 延迟超过阀值 - > ping 延迟超过阀值 -> 网络不通或宕机 - > 强大的规则路由引擎 -> 实现读写分离 -> 查询重写 -> sql流量镜像 - > 支持prepared statement - > 支持Query Cache - > 支持负载均衡,与gelera结合自动failover - > 可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由。换句话说,规则很灵活。基于schema和与语句级的规则,可以实现简单的sharding。 - > 可缓存查询结果。虽然ProxySQL的缓存策略比较简陋,但实现了基本的缓存功能,绝大多数时候也够用了。此外,作者已经打算实现更丰富的缓存策略。 - > 监控后端节点。ProxySQL可以监控后端节点的多个指标,包括:ProxySQL和后端的心跳信息,后端节点的read-only/read-write

架构师之路2017半年精选40篇

此生再无相见时 提交于 2020-12-20 07:00:34
2017上半年精选索引,点击标题阅读。 【特别推荐】 《 架构师之路2016年精选66篇 》 发起一个活动,一起 携手见证 “架构师之路”的 第一篇10w+ ,还差3000阅读,邀您一起转发。 【通用设计与方法论】 《 单KEY业务,数据库水平切分架构实践 》 《 架构设计中常见“反向依赖”与解耦方案 》 《 互联网架构如何实现“高可用” 》 《 互联网架构如何实现“高并发” 》 《 典型数据库架构设计与实践 》 【典型架构实践】 《 计数系统架构设计一次搞定 》 《 session一致性架构设计实践 》 《 TCP接入层的负载均衡、高可用、扩展性架构设计 》 《 配置中心架构设计演进 》 《 跨公网调用的大坑与架构优化 》 《 DNS在架构设计中的巧用 》 《 互联网智能广告系统简易流程与架构 》 【数据库】 《 100亿数据量1万属性10万并发数据库架构设计 》 《 数据库秒级平滑扩容架构方案 》 《 58到家数据库30条军规 》 《 再议数据库军规 》 《 业界难题-“夸库分页”的四种方案 》 《 100亿数据平滑迁移却不影响服务 》 《 MySQL-proxy数据库中间件架构 》 《 用uid分库,那uname上的查询怎么办 》 【一分钟系列】 《 1分钟了解四层/七层反向代理 》 《 1分钟写好连接池 》 《 1分钟理解负载 》 《 1分钟理解领导者-跟随者线程模型 》

MySQL高可用架构(MHA)与Atlas读写分离

非 Y 不嫁゛ 提交于 2020-12-14 22:11:50
1.1 MHA简介 1.1.1 MHA软件介绍   MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,它由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中, MHA能做到在10~30秒之内自动完成数据库的故障切换操作 ,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。   MHA能够在较短的时间内实现自动故障检测和故障转移,通常在10-30秒以内;在复制 框架中,MHA能够很好地解决复制过程中的数据一致性问题,由于不需要在现有的 replication中添加额外的服务器,仅需要一个manager节点,而一个Manager能管理多套复制,所以能大大地节约服务器的数量;另外,安装简单,无性能损耗,以及不需要修改现 有的复制部署也是它的优势之处。   MHA还提供在线主库切换的功能,能够安全地切换当前运行的主库到一个新的主库中 (通过将从库提升为主库),大概 0.5-2秒 内即可完成。   该软件由两部分组成:MHA Manager(管理节点)和MHA Node(数据节点)。MHA Manager可以单独部署在一台独立的机器上管理多个master-slave集群

使用amoeba实现mysql读写分离

╄→гoц情女王★ 提交于 2020-10-16 18:55:00
转载马士兵连老师笔记 使用amoeba实现mysql读写分离 1、什么是amoeba? Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。 主要解决: • 降低 数据切分带来的复杂多数据库结构 • 提供切分规则并降低 数据切分规则 给应用带来的影响 • 降低db 与客户端的连接数 • 读写分离 2、为什么要用Amoeba 目前要实现mysql的主从读写分离,主要有以下几种方案: 1、 通过程序实现,网上很多现成的代码,比较复杂,如果添加从服务器要更改多台服务器的代码。 2、 通过mysql-proxy来实现,由于mysql-proxy的主从读写分离是通过lua脚本来实现,目前lua的脚本的开发跟不上节奏,而写没有完美的现成的脚本,因此导致用于生产环境的话风险比较大,据网上很多人说mysql-proxy的性能不高。 3、 自己开发接口实现,这种方案门槛高,开发成本高,不是一般的小公司能承担得起。 4、 利用阿里巴巴的开源项目Amoeba来实现,具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库,并且安装配置非常简单。国产的开源软件,应该支持,目前正在使用

Atlas2.2源码编译安装

こ雲淡風輕ζ 提交于 2020-08-18 07:05:34
本文主要介绍中间件atlas源码编译安装,由于rpm安装的atlas程序调用时返回的mysql版本为5.0,相应使用低版本的驱动造成时间类型的字段无法支持毫秒级别。 由于需要glib版本要大于2.32以上,centos6系统自带的glib版本为2.28,因此需要重新编译安装2.32以上的glib,这里安装2.34版本的glib需要依赖pcre大于8.31。 一、编译安装pcre8.35 # tar xf pcre-8.35.tar.gz # cd pcre-8.35 # ./configure --prefix=/usr/local/glib--with-pcre=/usr/local/pcre/ 二、编译安装 glib-2.34.3.tar.xz # tar xf glib-2.34.3.tar.xz # cd glib-2.34.3 #./configure --prefix=/usr/local/glib --with-pcre=/usr/local/pcre/ 三、编译安装Atlas-2.2.1.tar.gz 1.解决依赖关系 # yum install libffi-devel lua-devel libeventlibevent-devel 2.修改源码中mysql版本代码,这里mysql版本为5.6.17 找到plugins/proxy/proxy-plugin

【mysql 读写分离】10分钟了解读写分离的作用

江枫思渺然 提交于 2020-08-15 21:50:33
1、什么是读写分离 读写分离,基本的原理是让主数据库处理事务性增、改、删操作(INSERT、UPDATE、DELETE),而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2、为什么要读写分离呢? 因为数据库的“写”(写10000条数据到oracle可能要3分钟)操作是比较耗时的。 但是数据库的“读”(从oracle读10000条数据可能只要5秒钟)。 所以读写分离,解决的是,数据库的写入,影响了查询的效率。 3、什么时候要读写分离? 数据库不一定要读写分离,如果程序使用数据库较多时,而更新少,查询多的情况下会考虑使用,利用数据库 主从同步 。可以减少数据库压力,提高性能。当然,数据库也有其它优化方案。memcache 或是 表折分,或是搜索引擎。都是解决方法。 4、主从复制与读写分离 在实际的生产环境中,对数据库的读和写都在同一个数据库服务器中,是不能满足实际需求的。无论是在安全性、高可用性还是高并发等各个方面都是完全不能满足实际需求的。因此,通过主从复制的方式来同步数据,再通过读写分离来提升数据库的并发负载能力。有点类似于前面我们学习过的rsync,但是不同的是rsync是对磁盘文件做备份,而mysql主从复制是对数据库中的数据、语句做备份。 4.1、 mysq支持的复制类型 1) 基于语句的复制。在服务器上执行sql语句

MySQL读写分离

妖精的绣舞 提交于 2020-08-12 00:14:07
1、简介   当今MySQL使用相当广泛,随着用户的增多以及数据量的增大,高并发随之而来。然而我们有很多办法可以缓解数据库的压力。分布式数据库、负载均衡、读写分离、增加缓存服务器等等。这里我们将采用读写分离技术进展缓解数据库的压力。   其中实现读写分离的技术有很多方法,这里我们将采用mysql-proxy这个中间软件来实现。这个软件中含有一个读写分离的lua文件,这也是我们使用mysql-proxy实现读写分离必用的文件,它需要lua解析器进行解析。因此我们还需要安装一个lua解析器。 2、基本环境   三台linux虚拟主机   Linux版本CentOS6.6、MySQL 5.5   mysql-proxy-0.8.5   lua-5.1.4   ip:192.168.95.11(写)、192.168.95.12(读)、192.168.95.13(mysql-proxy) 3、配置主从复制 详细可以参考: mysql主从复制与主主复制 http://www.cnblogs.com/phpstudy2015-6/p/6485819.html#_label2 粗略介绍一下数据库的主从复制的配置: 第一步: 在192.168.95.11中创建一个192.168.95.12主机中可以登录的MySQL用户 用户:mysql12 密码:mysql12 mysql >GRANT