CN104965850B - 一种基于开源技术的数据库高可用实现方法 - Google Patents
一种基于开源技术的数据库高可用实现方法 Download PDFInfo
- Publication number
- CN104965850B CN104965850B CN201510210821.2A CN201510210821A CN104965850B CN 104965850 B CN104965850 B CN 104965850B CN 201510210821 A CN201510210821 A CN 201510210821A CN 104965850 B CN104965850 B CN 104965850B
- Authority
- CN
- China
- Prior art keywords
- data
- redis
- database
- mysql
- write
- 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.)
- Active
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于开源技术的数据库高可用实现方法,本发明使用关系型数据库——MySQL与非关系型数据库——Redis结合的方式,将传统数据放入MySQL中,将一部分使用频繁或者I/O量比较大的数据放入非关系型数据库Redis中,并定期将Redis内的数据转存到MySQL内。本发明的有益效果是,实现的技术均为开源技术;(2)、使用此方法实现的数据库性能强于非开源、非免费的数据库;(3)、使用该方法实现的数据库能长时间支持大数据的读写操作,数据实时性高;(4)、该方法实现的数据库规模可弹性控制,并且具有一定的容灾能力。
Description
技术领域
本发明适用于云计算中的数据采集、交换等大I/O操作,属于IT数据存储技术领域。
背景技术
当前云计算已经成为一个比较热门的话题,在提交给用户良好的使用体验的背后,是维护人员的大量工作,其中就包括大量的性能数据分析(包括CPU、内存、网络、磁盘的性能)。对于规模比较大的集群来说,大量的性能数据采集到后需要及时的存放并且还要能实时的给其他业务系统使用,采用传统关系型数据库在面对这样的问题时就有些吃力,当大量采集数据写入时,业务系统获取性能数据就会变得比较缓慢;一方面,现在大多比较可靠的企业级关系型数据库都是非开源、非免费的,尤其在面对大数据需要集群化部署时更需要昂贵的费用;另一方面,作为政府企业,将大量重要的数据存放于一个非开源、自己不能完全掌握的系统内是一个很危险的行为,这将面临数据绑架或资料泄密的可能。在这样的情况下一个既开源又能满足性能需求的解决方案就变得尤其重要。
发明内容
本发明的目的正是为了克服上述现有技术存在的缺陷而提供一种基于开源技术的数据库高可用实现方法,本发明所使用的技术均基于开源技术,将多种技术结合在一起既满足了开源带来的好处,也避免了各个单独技术的缺点。本发明本身自带负载均衡机制与容灾功能,同时整个设计内添加了内存数据库作为高速缓存部分,提升了性能的同时也加强了系统的安全性与稳定性。
本发明是通过如下技术方案来实现的。
一种基于开源技术的数据库高可用实现方法,本发明特征在于,使用关系型数据库——MySQL与非关系型数据库——Redis结合的方式,将传统数据放入MySQL中 ,将一部分使用频繁或者I/O量比较大的数据放入非关系型数据库Redis中,并定期将Redis内的数据转存到MySQL内,使得数据能保持完整性;本方法分为三个部分:MySQL数据库、Redis数据库以及控制器部分,每个部分实现功能如下:
MySQL数据库:用于存放写入量少、修改操作交少的数据,并将存放Redis数据库内定期迁移的数据和历史记录等;提供给持久化数据给应用访问;
Redis数据库:存放I/O比较集中、I/O量比较大、数据频繁变动的数据;提供一段时间内的数据给应用访问;
控制器:监控MySQL与Redis每个节点的运行情况,当节点出故障时使用相应的措施使整个数据库可以被持续使用;提供一个单一的MySQL或Redis接口供外部应用访问;执行调度功能,定期迁移Redis数据到MySQL数据库内;数据节点负载均衡功能,分发请求,平衡每个数据库节点压力;
本方法实现方式为:
1).搭建MySQL数据库:使用集群化部署方案,集群内每两个MySQL作为一组,每组采用主从部署方式部署,其中一个MySQL只用于响应写入和修改操作,另外一个MySQL只用于读取操作,两个数据库之前的数据同步由主从方式自动完成,使用amoeba作为控制器,对外提供单个访问地址;
2).搭建Redis数据库:使用集群化部署方案,集群内每两个Redis为一组,每组采用主从化部署方式,其中一个Redis用于响应写入操作,另外一个Redis用于响应查询操作;两个Redis之间使用Redis自带同步机制同步数据,使用自主研发的Redis作为控制器,对外提供单个访问地址;
3).编写控制器:本发明使用java作为开发语言,实现实时监控MySQL和Redis的每个节点情况,并执行从Redis转存数据到MySQL的操作。具体行为过程为:每隔一段时间给MySQL和Redis的每个节点发送心跳包,当发现其中的主节点(响应写入操作的节点)断线时,自动将该组的从节点转换为主节点继续工作,当原主节点恢复后,将原主节点转为从节点工作,当从节点掉线时,将读取操作也分配到主节点上,当从节点恢复后将读取的操作还原回原来的从节点上;在控制器内设定定时器,定时执行操作将数据从Redis内转移到MySQL数据库内;提供Redis和MySQL的对外接口;编写负载均衡机制,实现分配任务均衡数据库节点压力。
4).将搭建好的MySQL访问地址、Redis访问地址、控制器的对外访问接口提供给应用来访问数据。
本方法的操作步骤为:
1)、启动数据库实例与数据库管理软件, 启动数据库负载均衡、读写分离控制器;
2)、启动作为大容量、高速的缓存,启动缓存负载均衡、读写分离控制器;
3)、启动数据库控制器;
4)、启动应用实例;
5)、当有大量数据操作时,根据数据变动类型将读写量大或变动频繁的数据先写入缓存写入部分,读写相对少并且变动不频繁的数据写入数据库写入部分;
6)、应用实例或其他功能读取数据时直接读取缓存读取部分、数据库读取部分(由控制器实现);
7)、当规模比较小时:如果缓存写入部分出现故障,控制器自动将读取部分转换为写入、读取部分,不影响应用正常使用;当数据库读、写部分出现故障时,控制器自动切换功能,不影响应用使用;当规模相对较大时,部分节点故障并不影响应用的使用。
本发明的有益效果是,实现的技术均为开源技术;(2)、使用此方法实现的数据库性能强于非开源、非免费的数据库;(3)、使用该方法实现的数据库能长时间支持大数据的读写操作,数据实时性高;(4)、该方法实现的数据库规模可弹性控制,并且具有一定的容灾能力。
附图说明
图1为本发明架构示意图。
具体实施方式
一种基于开源技术的数据库高可用实现方法,本发明特征在于,使用关系型数据库——MySQL与非关系型数据库——Redis结合的方式,将传统数据放入MySQL中 ,将一部分使用频繁或者I/O量比较大的数据放入非关系型数据库Redis中,并定期将Redis内的数据转存到MySQL内,使得数据能保持完整性;本方法分为三个部分:MySQL数据库、Redis数据库以及控制器部分,每个部分实现功能如下:
MySQL数据库:用于存放写入量少、修改操作交少的数据,并将存放Redis数据库内定期迁移的数据和历史记录等;提供给持久化数据给应用访问;
Redis数据库:存放I/O比较集中、I/O量比较大、数据频繁变动的数据;提供一段时间内的数据给应用访问;
控制器:监控MySQL与Redis每个节点的运行情况,当节点出故障时使用相应的措施使整个数据库可以被持续使用;提供一个单一的MySQL或Redis接口供外部应用访问;执行调度功能,定期迁移Redis数据到MySQL数据库内;数据节点负载均衡功能,分发请求,平衡每个数据库节点压力;
本方法实现方式为:
1).搭建MySQL数据库:使用集群化部署方案,集群内每两个MySQL作为一组,每组采用主从部署方式部署,其中一个MySQL只用于响应写入和修改操作,另外一个MySQL只用于读取操作,两个数据库之前的数据同步由主从方式自动完成,使用amoeba作为控制器,对外提供单个访问地址;
2).搭建Redis数据库:使用集群化部署方案,集群内每两个Redis为一组,每组采用主从化部署方式,其中一个Redis用于响应写入操作,另外一个Redis用于响应查询操作;两个Redis之间使用Redis自带同步机制同步数据,使用自主研发的Redis作为控制器,对外提供单个访问地址;
3).编写控制器:本发明使用java作为开发语言,实现实时监控MySQL和Redis的每个节点情况,并执行从Redis转存数据到MySQL的操作。具体行为过程为:每隔一段时间给MySQL和Redis的每个节点发送心跳包,当发现其中的主节点(响应写入操作的节点)断线时,自动将该组的从节点转换为主节点继续工作,当原主节点恢复后,将原主节点转为从节点工作,当从节点掉线时,将读取操作也分配到主节点上,当从节点恢复后将读取的操作还原回原来的从节点上;在控制器内设定定时器,定时执行操作将数据从Redis内转移到MySQL数据库内;提供Redis和MySQL的对外接口;编写负载均衡机制,实现分配任务均衡数据库节点压力。
4).将搭建好的MySQL访问地址、Redis访问地址、控制器的对外访问接口提供给应用来访问数据。
本方法的操作步骤为:
1)、启动数据库实例与数据库管理软件, 启动数据库负载均衡、读写分离控制器;
2)、启动作为大容量、高速的缓存,启动缓存负载均衡、读写分离控制器;
3)、启动数据库控制器;
4)、启动应用实例;
5)、当有大量数据操作时,根据数据变动类型将读写量大或变动频繁的数据先写入缓存写入部分,读写相对少并且变动不频繁的数据写入数据库写入部分;
6)、应用实例或其他功能读取数据时直接读取缓存读取部分、数据库读取部分(由控制器实现);
7)、当规模比较小时:如果缓存写入部分出现故障,控制器自动将读取部分转换为写入、读取部分,不影响应用正常使用;当数据库读、写部分出现故障时,控制器自动切换功能,不影响应用使用;当规模相对较大时,部分节点故障并不影响应用的使用。
如图1所示,从整体架构来看,整个MySQL+Redis对外作为一个单独的数据库,当外部的数据数据采集服务器或应用服务器(以下统称为外部应用服务)连接到数据库的控制器,并不需要单独的去连接MySQL数据库和Redis数据库,当外部应用服务有大量的数据需要记录到数据库的时候,由外部应用服务给出标识数据需要存放的类型(需要存放的Redis还是MySQL),控制器接收数据后自动将数据存入指定的数据库内;当需要读取数据时,外部应用服务器自行根据存入的标识到控制器给出请求就能获得相应的数据。从系统性能来看,首先Redis集群部分充当了整个数据库的缓存部分,由于Redis是非关系型的内存数据库,数据同时存在内存和存储中,在做数据交换时可直接操作内存中的数据,避免了还需要去存储查询的问题,同时由于Redis是非关系型数据库而避免了关系数据库的加锁问题;其次Redis和MySQL均采用读写分离的部署方式,同时使用集群化部署方式,使得分配到单个数据库节点的压力得到均衡,不会因为大量的写入和修改操作而造成数据查询缓慢。从数据的安全性与完整性来看,首先Redis本身采用内存+存储的方式来存放数据,数据同时存放在内存和存储中,不会因为断电而造成数据丢失,同时Redis采用集群化部署方式,一部分节点故障并不会使得整个数据库服务中断;其次MySQL数据库目前比较成熟,采用集群化部署的方式部署大大增加了数据库的安全性,同时集群内每两个节点作为一组,每组采用读写分离机制,当集群内一部分节点出现故障时并不会中断整个数据库的服务;从数据完整性方面来说,数据库控制器会定期的将Redis内存放的数据迁移到MySQL内,总能保证数据有一个完整的快照;数据库控制器部分增加了负载均衡机制,使得每个数据节点不会因为需要响应的请求量突然增加而压力集中到一个节点上,导致该节点出现故障。
Claims (1)
1.一种基于开源技术的数据库高可用实现方法,其特征在于,使用关系型数据库——MySQL与非关系型数据库——Redis结合的方式,将传统数据放入MySQL中,将一部分使用频繁或者I/O量比较大的数据放入非关系型数据库Redis中,并定期将Redis内的数据转存到MySQL内,使得数据能保持完整性;本方法分为三个部分:MySQL数据库、Redis数据库以及控制器部分,每个部分实现功能如下:
MySQL数据库:用于存放写入量少、修改操作较少的数据,并将存放Redis数据库内定期迁移的数据和历史记录;提供给持久化数据给应用访问;
Redis数据库:存放I/O比较集中、I/O量比较大、数据频繁变动的数据;提供一段时间内的数据给应用访问;
控制器:监控MySQL与Redis每个节点的运行情况,当节点出故障时使用相应的措施使整个数据库可以被持续使用;提供一个单一的MySQL或Redis接口供外部应用访问;执行调度功能,定期迁移Redis数据到MySQL数据库内;数据节点负载均衡功能,分发请求,平衡每个数据库节点压力;
本方法实现方式为:
1).搭建MySQL数据库:使用集群化部署方案,集群内每两个MySQL作为一组,每组采用主从部署方式部署,其中一个MySQL只用于响应写入和修改操作,另外一个MySQL只用于读取操作,两个数据库之前的数据同步由主从方式自动完成,使用amoeba作为控制器,对外提供单个访问地址;
2).搭建Redis数据库:使用集群化部署方案,集群内每两个Redis为一组,每组采用主从化部署方式,其中一个Redis用于响应写入操作,另外一个Redis用于响应查询操作;两个Redis之间使用Redis自带同步机制同步数据,使用自主研发的Redis作为控制器,对外提供单个访问地址;
3).编写控制器:本发明使用java作为开发语言,实现实时监控MySQL和Redis的每个节点情况,并执行从Redis转存数据到MySQL的操作;具体行为过程为:每隔一段时间给MySQL和Redis的每个节点发送心跳包,当发现其中的主节点断线时,自动将与上述主节点在同一组的从节点转换为主节点继续工作,当原主节点恢复后,将原主节点转为从节点工作,当从节点掉线时,将读取操作也分配到主节点上,当从节点恢复后将读取的操作还原回原来的从节点上;在控制器内设定定时器,定时执行操作将数据从Redis内转移到MySQL数据库内;提供Redis和MySQL的对外接口;编写负载均衡机制,实现分配任务均衡数据库节点压力;
4).将搭建好的MySQL访问地址、Redis访问地址、控制器的对外访问接口提供给应用来访问数据;
本方法的操作步骤为:
1)、启动数据库实例与数据库管理软件,启动数据库负载均衡、读写分离控制器;
2)、启动作为大容量、高速的缓存,启动缓存负载均衡、读写分离控制器;
3)、启动数据库控制器;
4)、启动应用实例;
5)、当有大量数据操作时,根据数据变动类型将读写量大或变动频繁的数据先写入缓存写入部分,读写相对少并且变动不频繁的数据写入数据库写入部分;
6)、应用实例或其他功能读取数据时直接读取缓存读取部分、数据库读取部分;
7)、当规模比较小时:如果缓存写入部分出现故障,控制器自动将读取部分转换为写入、读取部分,不影响应用正常使用;当数据库读、写部分出现故障时,控制器自动切换功能,不影响应用使用;当规模相对较大时,部分节点故障并不影响应用的使用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510210821.2A CN104965850B (zh) | 2015-04-29 | 2015-04-29 | 一种基于开源技术的数据库高可用实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510210821.2A CN104965850B (zh) | 2015-04-29 | 2015-04-29 | 一种基于开源技术的数据库高可用实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104965850A CN104965850A (zh) | 2015-10-07 |
CN104965850B true CN104965850B (zh) | 2018-01-30 |
Family
ID=54219886
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510210821.2A Active CN104965850B (zh) | 2015-04-29 | 2015-04-29 | 一种基于开源技术的数据库高可用实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965850B (zh) |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106909568A (zh) * | 2015-12-23 | 2017-06-30 | 北京奇虎科技有限公司 | 一种数据库集群主数据库的切换方法及装置 |
CN105718592B (zh) * | 2016-01-27 | 2019-04-23 | 北京铭万智达科技有限公司 | 基于Redis的数据调用方法及其系统 |
CN107622062A (zh) * | 2016-07-13 | 2018-01-23 | 天脉聚源(北京)科技有限公司 | 一种对大批量数据存储的方法和系统 |
CN107783974B (zh) * | 2016-08-24 | 2022-04-08 | 阿里巴巴集团控股有限公司 | 数据处理系统及方法 |
CN106528306A (zh) * | 2016-11-08 | 2017-03-22 | 天津海量信息技术股份有限公司 | 消息队列的存储方法 |
CN106597968A (zh) * | 2016-12-24 | 2017-04-26 | 大连尚能科技发展有限公司 | 一种基于Redis的变流器高速实时监控系统和方法 |
CN109696316B (zh) * | 2017-10-20 | 2021-05-28 | 株洲中车时代电气股份有限公司 | 一种列车远程监测系统 |
CN108123963B (zh) * | 2018-01-19 | 2021-05-11 | 深圳市易仓科技有限公司 | 一种跨境电商的api辅助系统及处理方法 |
CN108628717A (zh) * | 2018-03-02 | 2018-10-09 | 北京辰森世纪科技股份有限公司 | 一种数据库系统及监控方法 |
CN108833494A (zh) * | 2018-05-24 | 2018-11-16 | 国家电网有限公司 | 一种分布式数据存储方法和系统 |
CN108984589A (zh) * | 2018-05-29 | 2018-12-11 | 努比亚技术有限公司 | 一种数据写入方法及服务器 |
CN109213760B (zh) * | 2018-08-02 | 2021-10-22 | 南瑞集团有限公司 | 非关系数据存储的高负载业务存储及检索方法 |
CN109165101B (zh) * | 2018-09-11 | 2021-03-19 | 南京朝焱智能科技有限公司 | 基于Redis的内存服务器设计方法 |
CN109857813B (zh) * | 2018-12-26 | 2021-04-27 | 荣科科技股份有限公司 | 数据存储方法及数据处理装置 |
CN110334091A (zh) * | 2019-05-09 | 2019-10-15 | 重庆天蓬网络有限公司 | 一种数据分片分布式处理方法、系统、介质和电子设备 |
CN111026783A (zh) * | 2019-10-22 | 2020-04-17 | 无锡天脉聚源传媒科技有限公司 | 一种防卡死的数据存储方法、系统及装置 |
CN111125132A (zh) * | 2019-12-19 | 2020-05-08 | 紫光云(南京)数字技术有限公司 | 一种数据存储系统和存储方法 |
CN111488392B (zh) * | 2020-04-16 | 2023-07-07 | 北京思特奇信息技术股份有限公司 | 一种查询方法、系统及电子设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855277A (zh) * | 2012-07-23 | 2013-01-02 | 中国联合网络通信集团有限公司 | 数据中心系统及数据处理方法 |
CN103390015A (zh) * | 2013-01-16 | 2013-11-13 | 华北电力大学 | 基于统一索引的海量数据联合存储方法及检索方法 |
KR20140024623A (ko) * | 2012-08-20 | 2014-03-03 | (주)네오위즈게임즈 | 게임 처리를 위한 운용 방법, 그 시스템 및 기록매체 |
-
2015
- 2015-04-29 CN CN201510210821.2A patent/CN104965850B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102855277A (zh) * | 2012-07-23 | 2013-01-02 | 中国联合网络通信集团有限公司 | 数据中心系统及数据处理方法 |
KR20140024623A (ko) * | 2012-08-20 | 2014-03-03 | (주)네오위즈게임즈 | 게임 처리를 위한 운용 방법, 그 시스템 및 기록매체 |
CN103390015A (zh) * | 2013-01-16 | 2013-11-13 | 华北电力大学 | 基于统一索引的海量数据联合存储方法及检索方法 |
Non-Patent Citations (2)
Title |
---|
A Data Distribution Platform Based on Event-Driven Mechanism;Wang Wei.etc;《2011 Seventh International Conference on Computational Intelligence and Security》;20120112;第1395-1399页 * |
Hadoop集群监控系统的设计与实现;徐宇弘;《中国优秀硕士学位论文全文数据库》;20140315;I139-31 * |
Also Published As
Publication number | Publication date |
---|---|
CN104965850A (zh) | 2015-10-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104965850B (zh) | 一种基于开源技术的数据库高可用实现方法 | |
CN111124301B (zh) | 一种对象存储设备的数据一致性存储方法及系统 | |
US11755415B2 (en) | Variable data replication for storage implementing data backup | |
US10567500B1 (en) | Continuous backup of data in a distributed data store | |
CA2907086C (en) | System-wide checkpoint avoidance for distributed database systems | |
JP6044539B2 (ja) | 分散ストレージシステムおよび方法 | |
CA2910270C (en) | Efficient read replicas | |
EP3416060B1 (en) | Fast crash recovery for distributed database systems | |
JP6434131B2 (ja) | 分散処理システム、タスク処理方法、記憶媒体 | |
US9984139B1 (en) | Publish session framework for datastore operation records | |
US10650024B2 (en) | System and method of replicating data in a distributed system | |
US10803012B1 (en) | Variable data replication for storage systems implementing quorum-based durability schemes | |
Vallath | Oracle real application clusters | |
US11079960B2 (en) | Object storage system with priority meta object replication | |
WO2016174739A1 (ja) | 複合計算機システム、管理計算機、およびデータ連携管理方法 | |
US10970177B2 (en) | Methods and systems of managing consistency and availability tradeoffs in a real-time operational DBMS | |
US11093465B2 (en) | Object storage system with versioned meta objects | |
CN112328539A (zh) | 一种基于大数据的数据迁移方法 | |
US20200401312A1 (en) | Object Storage System with Meta Object Replication | |
Li et al. | A distributed storage method for real-time database system design | |
Le et al. | NDCouplingHDFS: A coupling architecture for a power-proportional Hadoop distributed file system | |
JP7057408B2 (ja) | 記憶システム及びその制御方法 | |
CN117271583A (zh) | 优化大数据查询的系统及方法 | |
WO2023239707A1 (en) | Latency reduction of flash-based devices using programming interrupts | |
Le et al. | NDCouplingHDFS: A Coupling Architecture for a Power-proportional |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |