CN111090527A - 一种基于mysql router 的MGR 读写分离和负载均衡方法 - Google Patents
一种基于mysql router 的MGR 读写分离和负载均衡方法 Download PDFInfo
- Publication number
- CN111090527A CN111090527A CN201911384174.1A CN201911384174A CN111090527A CN 111090527 A CN111090527 A CN 111090527A CN 201911384174 A CN201911384174 A CN 201911384174A CN 111090527 A CN111090527 A CN 111090527A
- Authority
- CN
- China
- Prior art keywords
- mysql
- read
- router
- load balancing
- write separation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000926 separation method Methods 0.000 title claims abstract description 37
- 238000000034 method Methods 0.000 title claims abstract description 21
- 238000012549 training Methods 0.000 claims description 6
- 238000005516 engineering process Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 238000011084 recovery Methods 0.000 claims description 3
- 238000012423 maintenance Methods 0.000 abstract description 5
- 230000006870 function Effects 0.000 description 8
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000007790 scraping Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/505—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
一种基于mysql router 的MGR 读写分离和负载均衡方法,包括以下步骤:S1:自动故障转移,使用MySQL Router来实现读写分离,前端应用层统一连接到MySQL Router;S2:DB负载均衡,MySQL中间件通过类似连接池的方式,将请求按照一定的规则分发给底层数据库,从而实现DB的读写分离、高可用;具体通过Nginx反向代理,基于轮询算法,应用实现负载均衡,通过mysql router实现应用到数据库层的读写分离功能;本发明mysql router实现mysql读写分离和负载均衡,mysql router轻量级,运维成本低,性能优势明显。
Description
技术领域
本发明属于数据库高可用架构设计领域,尤其涉及一种基于mysql router 的MGR读写分离和负载均衡方法。
背景技术
MySQL数据库目前已经越来越多的在生产环境中使用,随着业务量的不断增加,单节点的数据库压力非常大,在某些场景下已经无法支撑。急需一种轻量级的MySQL读写分离的实现方法来解决目前遇到的问题。
ProxySQL是用C++语言开发的,虽然也是一个轻量级产品,功能也足够,能满足中间件所需的绝大多数功能,包括:
1、最基本的读/写分离,且方式有多种。
2、可定制基于用户、基于schema、基于语句的规则对SQL语句进行路由。换句话说,规则很灵活。基于schema和与语句级的规则,可以实现简单的sharding。
3、可缓存查询结果。虽然ProxySQL的缓存策略比较简陋,但实现了基本的缓存功能,绝大多数时候也够用了。
4、监控后端节点。ProxySQL可以监控后端节点的多个指标,包括:ProxySQL和后端的心跳信息,后端节点的read-only/read-write,slave和master的数据同步延迟性(replication lag)。
存在的问题包括:
(一)、功能虽然强大、配置复杂,对用户不够友好。
(二)、对性能影响极大,不适合高并发环境。
(三)、带状态,自身需要维护,需要自身高可用,增加极大运维成本。
(四)、与MGR的兼容性没有官方的mysql router兼容性好。
发明内容
本发明目的在于提供一种基于mysql router 的MGR 读写分离和负载均衡方法,以解决ProxySQL对性能影响大,运维成本高,对MGR支持不好的技术问题。
为实现上述目的,本发明的一种基于mysql router 的MGR 读写分离和负载均衡方法的具体技术方案如下:
一种基于mysql router 的MGR 读写分离和负载均衡方法,包括以下步骤:
S1:自动故障转移,使用MySQL Router来实现读写分离,前端应用层统一连接到MySQLRouter;
S2:DB负载均衡,MySQL中间件通过类似连接池的方式,将请求按照一定的规则分发给底层数据库,从而实现DB的读写分离、高可用。
进一步,所述MySQL Router对前端应用层是透明的,不需要在代码层做任何处理。
进一步,所述S2步骤具体包括以下步骤:
S2-1:每台应用服务器安装部署mysql router,mysql router作为agent代理部署使用,应用直连mysql router;
S2-2:部署两台应用服务器,前段增加Nginx反向代理,通过负载算法,轮训、加权轮训、IP hash等实现应用的搞可用和负载均衡;
S2-3:Mysql router读写分离:通过mysql router实现应用到数据库层的读写分离功能;
S2-4:负载均衡:通过Nginx反向代理,基于轮询算法,应用实现负载均衡;
S2-5:数据库集群:使用三节点MGR高可用集群,基于Paxos分布式算法,多主模式,每一个节点都可以对外提供读写服务,数据最终保持一致性。
进一步,所述S2-3具体步骤如下:
Mysql router读写分离:read-write模式:采用“首个可用”算法,优先使用第一个server,当第一个server不可达时,将会Failover到第二个server,依次进行;
如果都不可达,那么请求将会被中断,且此时Router将不可用。
进一步,所述S2-4具体步骤如下:
负载均衡:read-only模式:Mysql-router可以实现对不同的后端数据进行数据负载均衡,read-only模式将采用“轮询”算法,依次选择server新建连接,如果某个Server不可达,将会重试下一个Server,如果所有的Server都不可达,那么此端口上的请求将中断,即READ操作将不可用;
同时Router将会持续与每个Server保持心跳探测,当恢复后重新加入Active列表,此后那些新建的连接请求可以分发给此Server。
进一步,所述MGR技术,基于Paxos分布式协议,实现了数据最终一致性。
本发明的一种基于mysql router 的MGR 读写分离和负载均衡方法具有以下优点:
1:基于开源社区版mysql router技术;
2:可以作为agent和应用部署在同一台服务器上;
3:配置简单,运维简单,可以实现读写分离,负载均衡;
4:对性能影响极小,大约损失1%的性能,几乎可以忽略不计;
5:MySQL Router架构的前端应用不用直接连接DB Server,而仅仅是连接到MySQLRouter,能够很方便地实现数据库集群的扩展。
附图说明
图1为本发明的一种基于mysql router 的MGR 读写分离和负载均衡方法的架构示意图。
具体实施方式
为了更好地了解本发明的目的、结构及功能,下面结合附图,对本发明一种基于mysql router 的MGR 读写分离和负载均衡方法做进一步详细的描述。
如图1所示,本发明的mysql router实现mysql读写分离和负载均衡;mysqlrouter轻量级,运维成本低,性能优势明显。
主要功能:
1、自动故障转移
使用MySQL Router实现来读写分离,前端应用层不需要直连接底层DB,而是统一连接到MySQL Router。MySQL Router对前端应用层是透明的,我们不需要在代码层做任何处理。应用层会把MySQL Router一个正常的MySQL实例使用,底层DB Master中断会自动使用Backup节点替代,十分方便。
2、DB负载均衡
MySQL中间件通过类似连接池的方式,将请求按照一定的规则分发给底层数据库,从而实现DB的读写分离、高可用。
实现方法:
一、每台应用服务器(Tomcat)安装部署mysql router,mysql router作为agent代理部署使用,应用直连mysql router。
二、部署两台应用服务器(Tomcat),前段增加Nginx反向代理,通过负载算法,轮训、加权轮训、IP hash等实现应用的搞可用和负载均衡。
三、Mysql router读写分离:read-write模式:采用“首个可用”算法,优先使用第一个server,当第一个server不可达时,将会Failover到第二个server,依次进行。如果都不可达,那么请求将会被中断,且此时Router将不可用。
四、负载均衡:read-only模式:Mysql-router可以实现对不同的后端数据进行数据负载均衡,read-only模式将采用“轮询”算法,依次选择server新建连接,如果某个Server不可达,将会重试下一个Server,如果所有的Server都不可达,那么此端口上的请求将中断,即READ操作将不可用。同时Router将会持续与每个Server保持心跳探测,当恢复后重新加入Active列表,此后那些新建的连接请求可以分发给此Server。
五、数据库集群:使用三节点MGR高可用集群,基于Paxos分布式算法,多主模式,每一个节点都可以对外提供读写服务,数据最终保持一致性。
工作原理:
1.通过Nginx反向代理,基于轮询算法,应用实现负载均衡。
2.通过mysql router实现应用到数据库层的读写分离功能。
3.MGR技术,基于Paxos分布式协议,实现了数据最终一致性。
4.mysql router作为agent部署在应用端,与应用共用同一台服务器,性能影响极小,可以忽略不计。
可以理解,本发明是通过一些实施例进行描述的,本领域技术人员知悉的,在不脱离本发明的精神和范围的情况下,可以对这些特征和实施例进行各种改变或等效替换。另外,在本发明的教导下,可以对这些特征和实施例进行修改以适应具体的情况及材料而不会脱离本发明的精神和范围。因此,本发明不受此处所公开的具体实施例的限制,所有落入本申请的权利要求范围内的实施例都属于本发明所保护的范围内。
Claims (6)
1.一种基于mysql router 的MGR 读写分离和负载均衡方法,其特征在于,包括以下步骤:
S1:自动故障转移,使用MySQL Router来实现读写分离,前端应用层统一连接到MySQLRouter;
S2:DB负载均衡,MySQL中间件通过连接池的方式,将请求分发给底层数据库,从而实现DB的读写分离。
2.根据权利要求1所述的一种基于mysql router 的MGR 读写分离和负载均衡方法,其特征在于,所述MySQL Router对前端应用层是透明的,不需要在代码层做任何处理。
3.根据权利要求1所述的一种基于mysql router 的MGR 读写分离和负载均衡方法,其特征在于,所述S2步骤具体包括以下步骤:
S2-1:每台应用服务器安装部署mysql router,mysql router作为agent代理部署使用,应用直连mysql router;
S2-2:部署两台应用服务器,前段增加Nginx反向代理,通过负载算法,轮训、加权轮训、IP hash等实现应用的搞可用和负载均衡;
S2-3:Mysql router读写分离:通过mysql router实现应用到数据库层的读写分离功能;
S2-4:负载均衡:通过Nginx反向代理,基于轮询算法,应用实现负载均衡;
S2-5:数据库集群:使用三节点MGR高可用集群,基于Paxos分布式算法,多主模式,每一个节点都可以对外提供读写服务,数据最终保持一致性。
4.根据权利要求3所述的一种基于mysql router 的MGR 读写分离和负载均衡方法,其特征在于,所述S2-3具体步骤如下:
Mysql router读写分离:read-write模式:采用“首个可用”算法,优先使用第一个server,当第一个server不可达时,将会Failover到第二个server,依次进行;
如果都不可达,那么请求将会被中断,且此时Router将不可用。
5.根据权利要求3所述的一种基于mysql router 的MGR 读写分离和负载均衡方法,其特征在于,所述S2-4具体步骤如下:
负载均衡:read-only模式:Mysql-router可以实现对不同的后端数据进行数据负载均衡,read-only模式将采用“轮询”算法,依次选择server新建连接,如果某个Server不可达,将会重试下一个Server,如果所有的Server都不可达,那么此端口上的请求将中断,即READ操作将不可用;
同时Router将会持续与每个Server保持心跳探测,当恢复后重新加入Active列表,此后那些新建的连接请求可以分发给此Server。
6.根据权利要求1-5任一项所述的一种基于mysql router 的MGR 读写分离和负载均衡方法,其特征在于,所述MGR技术,基于Paxos分布式协议,实现数据最终一致性。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911384174.1A CN111090527A (zh) | 2019-12-28 | 2019-12-28 | 一种基于mysql router 的MGR 读写分离和负载均衡方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911384174.1A CN111090527A (zh) | 2019-12-28 | 2019-12-28 | 一种基于mysql router 的MGR 读写分离和负载均衡方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111090527A true CN111090527A (zh) | 2020-05-01 |
Family
ID=70398403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911384174.1A Pending CN111090527A (zh) | 2019-12-28 | 2019-12-28 | 一种基于mysql router 的MGR 读写分离和负载均衡方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111090527A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685234A (zh) * | 2020-11-26 | 2021-04-20 | 辽宁振兴银行股份有限公司 | 一种金融级两地三中心高可用MySQL数据库实现方法 |
CN117290385A (zh) * | 2023-11-27 | 2023-12-26 | 成都天用唯勤科技股份有限公司 | 基于交易查询应用层分离的数据读写方法、装置及介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718262A (zh) * | 2016-01-18 | 2016-06-29 | 沈文策 | 一种lnmp架构的部署方法 |
CN110569307A (zh) * | 2019-09-09 | 2019-12-13 | 四川长虹电器股份有限公司 | 一种基于ProxySQL和MGR的MySQL读写分离方法 |
-
2019
- 2019-12-28 CN CN201911384174.1A patent/CN111090527A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105718262A (zh) * | 2016-01-18 | 2016-06-29 | 沈文策 | 一种lnmp架构的部署方法 |
CN110569307A (zh) * | 2019-09-09 | 2019-12-13 | 四川长虹电器股份有限公司 | 一种基于ProxySQL和MGR的MySQL读写分离方法 |
Non-Patent Citations (3)
Title |
---|
匿名: "nginx 反向代理和负载均衡策略实战案例", 《"前端大全"微信公众号》 * |
姜承尧: "Galera将死——MySQL Group Replication正式发布", 《"INSIDEMYSQL" 微信公众号》 * |
西门飞冰: "官方工具|MySQL Router 高可用原理与实战", 《"民工哥技术之路"微信公众号》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112685234A (zh) * | 2020-11-26 | 2021-04-20 | 辽宁振兴银行股份有限公司 | 一种金融级两地三中心高可用MySQL数据库实现方法 |
CN112685234B (zh) * | 2020-11-26 | 2024-06-07 | 辽宁振兴银行股份有限公司 | 一种金融级两地三中心高可用MySQL数据库实现方法 |
CN117290385A (zh) * | 2023-11-27 | 2023-12-26 | 成都天用唯勤科技股份有限公司 | 基于交易查询应用层分离的数据读写方法、装置及介质 |
CN117290385B (zh) * | 2023-11-27 | 2024-01-19 | 成都天用唯勤科技股份有限公司 | 基于交易查询应用层分离的数据读写方法、装置及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10713135B2 (en) | Data disaster recovery method, device and system | |
US7440977B2 (en) | Recovery method using extendible hashing-based cluster logs in shared-nothing spatial database cluster | |
US7653668B1 (en) | Fault tolerant multi-stage data replication with relaxed coherency guarantees | |
Bronson et al. | {TAO}:{Facebook’s} distributed data store for the social graph | |
JP6028065B2 (ja) | グラフ・データの分散キャッシュ | |
US10565071B2 (en) | Smart data replication recoverer | |
CN102541990B (zh) | 利用虚拟分区的数据库重新分布方法和系统 | |
US20040030731A1 (en) | System and method for accessing files in a network | |
CN103593266B (zh) | 一种基于仲裁盘机制的双机热备方法 | |
JP2019036353A (ja) | 索引更新パイプライン | |
US20140244578A1 (en) | Highly available main memory database system, operating method and uses thereof | |
US20140047263A1 (en) | Synchronous local and cross-site failover in clustered storage systems | |
CN103138912B (zh) | 数据同步方法及系统 | |
US9864689B2 (en) | Near cache distribution in in-memory data grid (IMDG) non structured query language (NO-SQL) environments | |
CN102148850A (zh) | 一种集群系统的业务处理方法及集群系统 | |
Trivedi et al. | Sharing and caring of data at the edge | |
CN109639773B (zh) | 一种动态构建的分布式数据集群控制系统及其方法 | |
CN106657169B (zh) | 一种Redis中主从节点数据同步方法 | |
CN111090527A (zh) | 一种基于mysql router 的MGR 读写分离和负载均衡方法 | |
CN105045929A (zh) | 一种基于mpp构架的分布式关系型数据库 | |
CN102571991A (zh) | 基于多级映射的大规模多副本分布式存储系统及其应用方法 | |
CN107180034A (zh) | MySQL数据库的集群系统 | |
CN104410531A (zh) | 冗余的系统架构方法 | |
CN110569307A (zh) | 一种基于ProxySQL和MGR的MySQL读写分离方法 | |
CN108259252A (zh) | 一种基于twemproxy的Redis集群方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200501 |
|
RJ01 | Rejection of invention patent application after publication |