CN112307054B - 一种双活数据库主备服务器读写方法 - Google Patents

一种双活数据库主备服务器读写方法 Download PDF

Info

Publication number
CN112307054B
CN112307054B CN202011299688.XA CN202011299688A CN112307054B CN 112307054 B CN112307054 B CN 112307054B CN 202011299688 A CN202011299688 A CN 202011299688A CN 112307054 B CN112307054 B CN 112307054B
Authority
CN
China
Prior art keywords
agent
sql statement
database
main
active
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
Application number
CN202011299688.XA
Other languages
English (en)
Other versions
CN112307054A (zh
Inventor
张�杰
黄鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taiyuan University of Technology
Original Assignee
Taiyuan University of Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Taiyuan University of Technology filed Critical Taiyuan University of Technology
Priority to CN202011299688.XA priority Critical patent/CN112307054B/zh
Publication of CN112307054A publication Critical patent/CN112307054A/zh
Application granted granted Critical
Publication of CN112307054B publication Critical patent/CN112307054B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明一种双活数据库主备服务器读写方法,属于双活数据库主备服务器应用技术领域;所要解决的技术问题为:提供一种双活数据库主备服务器读写方法的改进;解决该技术问题采用的技术方案为:建立两个能够被相互访问的数据库;给两个数据库各设立一个代理,所有对数据的增、删、修改都通过代理执行;设置其中一个代理为主代理,另外一个为副代理;设置主代理负责给SQL语句定序号,副代理无权定序号;当一个应用通过主代理发送SQL语句给数据库执行时,主代理在将这条SQL语句发送到数据库执行前,先给这条SQL语句分配一个序号,并且将这个序号和SQL语句发送给副代理;本发明应用于双活数据库主备服务器读写。

Description

一种双活数据库主备服务器读写方法
技术领域
本发明一种双活数据库主备服务器读写方法,属于双活数据库主备服务器应用技术领域。
背景技术
目前行业内使用关系数据库来管理结构化数据,比如MySQL,postgresSQL,Oracle,将其广泛应用在互联网,金融等社会各个领域;实际使用时,为保障数据安全,需要对数据库进行备份,一种常见的备份方式为日志重放方式,对数据进行实时复制,一般有几分钟延迟,在该方案中,主数据库可以读写,而备份数据库一般只可读,不能做写操作,在主数据库服务器不能工作的时候,用户可以切换使用备份数据库,以达到对数据库的高效可用,减少数据丢失;但上述使用方式需要应用程序修改数据库指向,并且备份数据库需要监控主数据库健康,容易产生误报和误切换,造成数据不一致。
发明内容
本发明为了克服现有技术中存在的不足,所要解决的技术问题为:提供一种双活数据库主备服务器读写方法的改进。
为了解决上述技术问题,本发明采用的技术方案为:一种双活数据库主备服务器读写方法,包括如下步骤:
步骤一:建立两个数据库,要求两个数据库初始状态一致;
步骤二:给两个数据库各设立一个代理,要求两个代理能够相互通信,所有对数据的增、删、修改都通过代理执行;
步骤三:设置其中一个代理为主代理,另外一个为副代理;
步骤四:设置主代理负责给SQL语句定序号,副代理无权定序号;
步骤五:当一个应用通过主代理发送SQL语句给数据库执行时,主代理在将这条SQL语句发送到数据库执行前,先给这条SQL语句分配一个序号,并且将这个序号和SQL语句发送给副代理;
步骤六:当一个应用通过副代理发送SQL语句时,副代理首先将这条SQL语句发送给主代理,主代理收到后给这条SQL语句分配一个序号,并将序号发送回副代理;
步骤七:主代理或副代理按照相同的顺序将所有编号过的SQL语句依次送入数据库执行。
所述步骤三中设置的主代理和副代理能够根据需要自由调换,将使用量大的数据库或代理设为主代理。
本发明相对于现有技术具备的有益效果为:本发明提供的服务器读写改进方法,可以有效提高数据库的可用性,降低了双活数据库和热备操作难度,减少了数据丢失风险,除了可以在基于服务器的数据库上使用,比如mysql,还可以在基于文件的嵌入式数据库上使用,比如sqlite。
具体实施方式
本发明提供一种双活数据库主备服务器读写方法,主要包括如下步骤:
步骤一:设立两个数据库,可以异地,但需要可以被相互访问。数据库初始状态一致。代理之间相互通信,一般有一个平均的通信延迟;
步骤二:给两个数据库各设立一个代理(agent),所有对数据的增/删/修改都应通过代理执行。查询操作一般可以绕过代理直接向数据库发起;
步骤三:设置其中一个代理为主,另外一个为副;
步骤四:主代理负责给SQL语句定序号,副代理无权定序号;
步骤五:当一个应用通过主代理发送SQL语句给数据库执行,主代理在将这条SQL语句发送到数据库执行前,先给这条SQL语句分配一个序号,并且将这个序号和SQL语句发送给副代理;
步骤六:当一个应用通过副代理发送SQL语句,副代理将这条SQL语句发送给主代理,主代理收到后给这条SQL语句分配一个序号,并将序号发送回副代理;
步骤七:主/副代理按照相同的顺序将所有编号过的SQL语句依次送入数据库执行。通过副代理执行的SQL语句因为需要到主代理处拿序号,所以可能有延迟,但是不影响数据库写入或修改;
步骤八:管理员可以自由的设置,调换主/副代理的角色。一般,使用量比较大的数据库/代理会被设为主。
本发明提供的一种双活数据库主备服务器读写方法,使得主服务器和备份服务器都可读可写;执行时,首先在主服务器和备服务器前面加上两个代理,每个代理与数据库服务器连接,所有的写数据请求必须经过代理发送到数据库。
在主服务器前的代理作为主代理,备份服务器前的代理作为备份代理;当有写请求(写SQL语句,如INSERT,UPDATE,DELETE)发送到代理的时候,如果是主代理,则自己生成一个序号,将序号和SQL语句发送到备份代理,如果是备份代理,则将SQL语句发送给主代理,主代理返回一个序号给备份代理,序号从0开始自增;最后主代理和备份代理按照序号从小到大,依次执行收到的(无论是从客户还是从代理那里接受到的)SQL语句。
当主服务器发送故障,可以手动设置交换主代理和备份代理的角色,无论是否交换代理的主备角色,主备服务器都将正常工作,但是正确设置以后,会提高备份服务器的写入性能,因为请求序号这个动作在本地执行,几乎不消耗时间,但是远程请求(备份代理去主代理拿号)就会慢一些,另外读数据可以绕过代理,直接连接到本地数据库服务器上进行读取。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

Claims (2)

1.一种双活数据库主备服务器读写方法,其特征在于:包括如下步骤:
步骤一:建立两个数据库,要求两个数据库初始状态一致;
步骤二:给两个数据库各设立一个代理,要求两个代理能够相互通信,所有对数据的增、删、修改都通过代理执行;
步骤三:设置其中一个代理为主代理,另外一个为副代理;
步骤四:设置主代理负责给SQL语句定序号,副代理无权定序号;
步骤五:当一个应用通过主代理发送SQL语句给数据库执行时,主代理在将这条SQL语句发送到数据库执行前,先给这条SQL语句分配一个序号,并且将这个序号和SQL语句发送给副代理;
步骤六:当一个应用通过副代理发送SQL语句时,副代理首先将这条SQL语句发送给主代理,主代理收到后给这条SQL语句分配一个序号,并将序号发送回副代理;
步骤七:主代理或副代理按照相同的顺序将所有编号过的SQL语句依次送入数据库执行。
2.根据权利要求1所述的一种双活数据库主备服务器读写方法,其特征在于:所述步骤三中设置的主代理和副代理能够根据需要自由调换,将使用量大的数据库或代理设为主代理。
CN202011299688.XA 2020-11-18 2020-11-18 一种双活数据库主备服务器读写方法 Active CN112307054B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011299688.XA CN112307054B (zh) 2020-11-18 2020-11-18 一种双活数据库主备服务器读写方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011299688.XA CN112307054B (zh) 2020-11-18 2020-11-18 一种双活数据库主备服务器读写方法

Publications (2)

Publication Number Publication Date
CN112307054A CN112307054A (zh) 2021-02-02
CN112307054B true CN112307054B (zh) 2023-02-28

Family

ID=74335186

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011299688.XA Active CN112307054B (zh) 2020-11-18 2020-11-18 一种双活数据库主备服务器读写方法

Country Status (1)

Country Link
CN (1) CN112307054B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040039648A (ko) * 2002-11-04 2004-05-12 (주)키씨 데이터베이스 성능 관리 기법
CN101038591A (zh) * 2007-04-11 2007-09-19 华为技术有限公司 数据库同步方法及***
CN101706795A (zh) * 2009-11-30 2010-05-12 上海世范软件技术有限公司 主备服务器上数据库数据同步方法
CN101876997A (zh) * 2009-12-01 2010-11-03 广州从兴电子开发有限公司 一种内存数据库主备同步方法及***
CN103336782A (zh) * 2013-05-30 2013-10-02 莱诺斯科技(北京)有限公司 一种关系型分布式数据库***
WO2017177941A1 (zh) * 2016-04-13 2017-10-19 中兴通讯股份有限公司 主备数据库切换方法和装置
CN110188114A (zh) * 2019-05-27 2019-08-30 上海达梦数据库有限公司 一种数据操作的优化方法、装置、***、设备和存储介质
CN111352766A (zh) * 2018-12-21 2020-06-30 ***通信集团山东有限公司 一种数据库的双活实现方法及装置
CN111382012A (zh) * 2020-03-03 2020-07-07 广州鼎甲计算机科技有限公司 MySQL云数据库的备份方法、装置、计算机设备和存储介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140222443A1 (en) * 2011-06-07 2014-08-07 Kathleen Danenberg Molecular profiling for cancer

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20040039648A (ko) * 2002-11-04 2004-05-12 (주)키씨 데이터베이스 성능 관리 기법
CN101038591A (zh) * 2007-04-11 2007-09-19 华为技术有限公司 数据库同步方法及***
CN101706795A (zh) * 2009-11-30 2010-05-12 上海世范软件技术有限公司 主备服务器上数据库数据同步方法
CN101876997A (zh) * 2009-12-01 2010-11-03 广州从兴电子开发有限公司 一种内存数据库主备同步方法及***
CN103336782A (zh) * 2013-05-30 2013-10-02 莱诺斯科技(北京)有限公司 一种关系型分布式数据库***
WO2017177941A1 (zh) * 2016-04-13 2017-10-19 中兴通讯股份有限公司 主备数据库切换方法和装置
CN111352766A (zh) * 2018-12-21 2020-06-30 ***通信集团山东有限公司 一种数据库的双活实现方法及装置
CN110188114A (zh) * 2019-05-27 2019-08-30 上海达梦数据库有限公司 一种数据操作的优化方法、装置、***、设备和存储介质
CN111382012A (zh) * 2020-03-03 2020-07-07 广州鼎甲计算机科技有限公司 MySQL云数据库的备份方法、装置、计算机设备和存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
基于存储双活技术的调度自动化***高可靠性架构研究;宋英华 等;《供用电》;20200315;第37卷(第3期);58-63+70 *
基于网络抓包的数据库即时备份方法;傅瑞军;《计算机工程与设计》;20101228(第24期);201-204 *

Also Published As

Publication number Publication date
CN112307054A (zh) 2021-02-02

Similar Documents

Publication Publication Date Title
US11256715B2 (en) Data backup method and apparatus
US9886439B2 (en) Archival management of database logs
US10747745B2 (en) Transaction execution commitment without updating of data row transaction status
US7734580B2 (en) Readable physical storage replica and standby database system
US9146934B2 (en) Reduced disk space standby
Baker et al. Megastore: Providing scalable, highly available storage for interactive services.
Amiri et al. Highly concurrent shared storage
Lindström et al. IBM solidDB: In-Memory Database Optimized for Extreme Speed and Availability.
US7917596B2 (en) Super master
EP2797014B1 (en) Database update execution according to power management schemes
US11928089B2 (en) Data processing method and device for distributed database, storage medium, and electronic device
JP7101566B2 (ja) 不揮発性メモリにおけるマルチバージョン同時実行制御(mvcc)
CN104317944B (zh) 一种基于公式的时间戳动态调整并发控制方法
US20200320098A1 (en) High Throughput Cross Database Table Synchronization and Transactional Replication in Federated Databases
CN107533474A (zh) 一种事务处理方法及装置
CN112307054B (zh) 一种双活数据库主备服务器读写方法
US10635552B1 (en) Method for tracking validity of journal copies to allow journal mirroring
CN110377230B (zh) 一种应用于固态硬盘的原子写入方法及装置
Dong et al. Fine-Grained Re-Execution for Efficient Batched Commit of Distributed Transactions
US10846014B2 (en) Concept for group memory write instructions
US20220027337A1 (en) Parallel processing of changes in a distributed system
CN109857523B (zh) 一种用于实现数据库高可用性的方法及装置
Coelho et al. PH1: A transactional middleware for NoSQL
Depoutovitch et al. Taurus MM: Bringing Multi-Master to the Cloud
Shastry et al. Transaction support for HBase

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
GR01 Patent grant
GR01 Patent grant