CN111352766A - 一种数据库的双活实现方法及装置 - Google Patents
一种数据库的双活实现方法及装置 Download PDFInfo
- Publication number
- CN111352766A CN111352766A CN201811573037.8A CN201811573037A CN111352766A CN 111352766 A CN111352766 A CN 111352766A CN 201811573037 A CN201811573037 A CN 201811573037A CN 111352766 A CN111352766 A CN 111352766A
- Authority
- CN
- China
- Prior art keywords
- data
- database
- server
- database servers
- servers
- 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
- 238000000034 method Methods 0.000 title claims abstract description 90
- 230000000694 effects Effects 0.000 title claims abstract description 17
- 230000009977 dual effect Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 238000011084 recovery Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 6
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000000926 separation method Methods 0.000 description 4
- 238000003780 insertion Methods 0.000 description 3
- 230000037431 insertion Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种数据库的双活实现方法及装置,应用于数据库双活系统中的缓存服务器,数据库双活系统还包括均与缓存服务器进行通信的至少两个数据库服务器,且至少两个数据库服务器中的数据完全一致;方法包括:当检测到对第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,第一数据库服务器为至少两个数据库服务器中的任一数据库服务器;根据操作数据所对应的日志,更新至少两个数据库服务器中除第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与第一数据库服务器中的数据完全一致。本发明实施例实现了数据库应用时的负载均衡和备份容灾。
Description
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种数据库的双活实现方法及装置。
背景技术
随着运营商各类业务发展以及互联网渠道和业务的拓展,运营商的客户关系管理(Customer relationship management,CRM)系统正在由面向数以千计的操作员的系统转变化为面向数以千万计的最终用户的系统,这对CRM系统提出了越来越高的体验和性能的要求,尤其承载核心用户资料数据的CRM营业系统,压力越来越大。而传统的性能优化方法,如主机扩容、数据库扩容等,跟不上业务需求压力增长速度,且扩容成本很高,投资巨大。
目前,大型应用一般采用如下两种方式来减小系统压力:
其一,读写分离:在主节点与备用节点间通过日志同步来保证数据的同步,可以实现数据库快速切换与灾难性恢复,通过读写节点分离实现单一的负载分担。但是该种方式只能实现简单的读写负载均衡,而在实际应用中,往往读的比率比写的比率要高,这导致往往达不到真正的负载均衡。
其二,Oracle Rac:Oracle集成提供了集群软件和存储管理软件,为用户降低了应用成本的同时,实现了负载均衡和高可用,并当应用规模需要扩充时,用户可以按需扩展系统,以保证系统的性能。但是Oracle集群软件价格昂贵,而且安装配置复杂,需要专业的存储配置和网络配置;另外,Oracle RAC由于多节点共用一套存储设备,当存储设备出现故障的时候,所有RAC节点无法实现容灾。
综上所述,现有技术中对数据库的应用存在负载均衡和备份容灾的效果较差的问题。
发明内容
本发明实施例提供一种数据库的双活实现方法及装置,以解决现有技术中对数据库的应用所存在的负载均衡和备份容灾的效果较差的问题。
为了解决上述技术问题,第一方面,本发明实施例提供一种数据库的双活实现方法,应用于数据库双活系统中的缓存服务器,所述数据库双活系统还包括均与所述缓存服务器进行通信的至少两个数据库服务器,且所述至少两个数据库服务器中的数据完全一致;所述方法包括:
当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;
根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
第二方面,本发明实施例提供一种数据库的双活实现装置,应用于数据库双活系统中的缓存服务器,所述数据库双活系统还包括均与所述缓存服务器进行通信的至少两个数据库服务器,且所述至少两个数据库服务器中的数据完全一致;所述装置包括:
获取模块,用于当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;
更新模块,用于根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的数据库的双活实现方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现所述的数据库的双活实现方法的步骤。
本发明实施例提供的数据库的双活实现方法及装置,通过在数据库双活系统中部署均能够与至少两个数据库服务器进行通信的缓存服务器,且缓存服务器在检测到对至少两个数据库服务器中的任一数据库服务器中的数据进行操作时,获取操作数据所对应的日志,并且根据操作数据所对应的日志,更新其余数据库服务器中的数据,以使更新后的其余数据库服务器内的数据与进行操作的第一数据库服务器中的数据完全一致,实现了至少两个数据库服务器中的任一数据库服务器均能够读数据和写数据,进而实现了至少两个数据库服务器的高效负载均衡,且在很大程度上提升了设备使用率;此外,通过缓存服务器对至少两个数据库服务器的日志的准确高效分析,实现了至少两个数据库服务器的数据的一致性,进而实现了至少两个数据库服务器的高效备份容灾,保证了恢复数据的完整性和可用性,解决了现有技术中数据库的应用中负载均衡能力和备份容灾能力较差的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1表示本发明实施例中数据库双活系统的架构示意图;
图2表示本发明实施例中数据库的双活实现方法的步骤流程图;
图3表示本发明实施例中数据库的双活实现装置的模块框图;
图4表示本发明实施例中电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本实施例中,提供了一种数据库的双活实现方法,该方法应用于数据库双活系统中的缓存服务器,所述数据库双活系统还包括均与所述缓存服务器进行通信的至少两个数据库服务器,且所述至少两个数据库服务器中的数据完全一致。
具体的,如图1所示,为数据库双活系统的架构示意图。在图1中,为以至少两个数据库服务器的数量为两个为例进行说明。当然,在此需要说明的是,至少两个数据库服务器的数量可以为多个,在此并不具体限定至少两个数据库服务器的数量。
具体的,在图1中,数据库服务器A和数据库服务器B均能够与缓存服务器进行通信。此外,具体的,数据库服务器A、数据库服务器B和缓存服务器等三台服务器可以处于同一个机房中,也可以处于不同物理位置,在此并不做具体限定,只要保证三台服务器之间网络带宽足够,能够互相通信并且满足大量数据归档的传输即可,例如网络带宽可以为10000M。
此外,具体的,至少两个数据库服务器所包含的数据完全一致,且应用能够通过接入任一数据库服务器进行业务访问。当然,在至少两个数据库服务器初始建立时,可以通过块到块的拷贝,实现至少两个数据库服务器的完全一致性,即数据库schema,包括索引都是完全相同的。
具体的,数据库服务器可以为单实例Oracle数据库服务器。
另外,具体的,缓存服务器可以为一台x86服务器,且外接足够大的存储,且能够通过网络共享存储的方式,用于缓存至少两个数据库服务器的在线日志和归档日志文件。
另外,具体的,缓存服务器上具有第一进程、第二进程和第三进程。其中,第一进程可以为logman进程,且第一进程能够获取至少两个数据库服务器中任一数据库服务器内的归档日志,并且能够调用任一数据库服务器上的amdu工具下载在线日志并缓存到共享目录中,然后回传到缓存服务器,还能够调用sqlplus接口对任一数据库服务器进行相关的SQL操作。此外,第二进程能够对从任一数据库服务器上获取的日志进行分析,得到相应的sql语句,以使缓存服务器根据分析得到的SQL语句对操作数据进行分析整理,或者将sql所对应的操作分发到其他数据库服务器。当然,在此需要说明的是,第二进程的数量可以有多个,以能够并行对任一或多个数据库服务器上获取的日志进行分析,以提高日志分析的效率。另外,第三进程能够将正常运行的数据库服务器内的数据拷贝至数据丢失的数据库服务器中,以实现数据库服务器内所丢失数据的恢复,进而实现冗余。
此外,具体的,在此需要说明的是,缓存服务器能够同时对至少两个数据库服务器的日志进行分析,以实现日志分析时的高效性。
这样,通过构建数据库双活系统,使得至少两个数据库服务器均能够接入业务实现负载负担,解决了现有技术中的读写分离模式只有一个数据库能对外提供服务,对只读数据库只能提供查询服务导致的设备使用率较低的问题,提高了设备的使用率;此外,还使得故障恢复接近为零恢复时间目标和恢复点目标,保证了数据的零丢失,保证了恢复数据的完整性和可用性;此外,降低了网络建设成本,将现有技术中只有一套数据库提供服务,另一套数据库只做备份时的50%设备利用率提高到了本实施例中两套数据库均能够提供服务时的75%设备利用率;另外,降低了Oracle License许可费,解决了现有技术中读写分离或者Oracle Dataguard方案都需要购买Oracle Dataguard License的问题;另外,提高了数据库的可操作性。
在本实施例中,如图2所示,为本发明实施例提供的数据库的双活实现方法的步骤流程图,该方法包括如下步骤:
步骤201:当检测到对至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志。
在本步骤中,具体的,第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器,这样保证了应用能够接入任一数据库服务器进行数据操作,实现了至少两个数据库服务器均能够写数据,进而实现了至少两个数据库服务器的高效负载均衡。
当然,在此需要说明的是,可以对至少两个数据库服务器中的多个数据库服务器中的数据同时进行操作,且当检测到对多个数据库服务器中的数据进行操作时,能够获取多个数据库服务器中每个数据库服务器内进行操作的操作数据所对应的日志。
其中,在本实施例中,在获取进行操作的操作数据所对应的日志时,可以当检测到对所述第一数据库服务器中的数据进行操作时,通过所述缓存服务器中的第一进程,从所述第一数据库服务器中获取所述操作数据对应的日志;其中,当所述第一数据库服务器接收到对数据的操作请求时,将操作的数据写到在线日志或归档日志中。
具体的,数据库服务器可以为Oracle数据库服务器,第一进程可以为logman进程。
此外,具体的,当应用接入到第一数据库服务器并发起对数据的操作请求时,第一数据库服务器对操作的数据写在线日志或者归档日志文件。此时,具体的,缓存服务器中的第一进程调用第一数据库服务器本申请的amdu工具将在线日志卸载在本地磁盘进行缓存,此后,第一进程抓取第一数据库服务器上缓存目录下的在线日志和归档日志,并缓存,以完成对第一数据库服务器中操作数据对应的日志。
这样,缓存服务器通过在检测到对第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志并进行缓存,为至少两个数据库服务器中数据的同步提供了基础。
步骤202:根据操作数据所对应的日志,更新至少两个数据库服务器中除第一数据库服务器之外的其余数据库服务器内的数据。
在本步骤中,具体的,在获取操作数据所对应的日志之后,可以根据操作数据所对应的日志,更新至少两个数据库服务器中除第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
这样,基于操作数据所对应的日志对其余数据库服务器内的数据进行更新,保证了所有数据库服务器内数据的一致性,进而实现了数据库服务器的搞下备份容灾。
此外,进一步地,在本实施例中,在根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据时,可以包括如下步骤:
步骤D1:通过所述缓存服务器中的第二进程,对所述操作数据所对应的日志进行解析,得到与所述操作数据所对应的日志相对应的结构化查询语言SQL语句。
在本步骤中,具体的,缓存服务器中的第二进程的数量可以为多个,以实现对日志的高效分析过程,在此并不对此进行具体限制。
此外,具体的,在缓存服务器接收到操作数据所对应的日志之后,可以通过第二进程,对日志进行分析并反向运算成相应结构化查询语言(简称SQL)语句,并保存在缓存服务器中的SQL池中。当然,为了提高分析效率,缓存服务器可以通过多个第二进程进行日志分析,以增强数据库服务器数据的并行处理速度。
这样,通过第二进行对日志进行分析,并解析得到与操作数据所对应的日志相对应的SQL语句,使得能够明确获知对第一数据库服务器内数据的操作过程,进而为其余数据库服务器内数据的更新提供了保障。
步骤D2:确定所述SQL语句的类别。
在本步骤中,具体的,在解析得到SQL语句之后,可以确定SQL语句的类别。
具体的,所述SQL语句的类别包括数据查询语言(简称DQL)、数据操纵语言(简称DML)、数据定义语言(简称DDL)和数据控制语言(简称DCL)。
当然,具体的,DML中包括插入(INSERT)、更新(UPDATE)和删除(DELETE)。DCL包括授权(grant)、提交(commit)和回滚(rollback)指令。
此外,其中,在确定SQL语句的类别之后,所述方法还包括,当所述SQL语句的类别为所述DML中的更新UPDATE或删除DELETE时,根据所述SQL语句,获取所述其余数据库服务器中的目标数据,并对所述目标数据执行锁定操作,其中所述目标数据为与所述第一数据库服务器中的操作数据相同的数据。
具体的,由于系统中的所有数据库服务器内的数据完全一致,因此能够从其余数据库服务器中获取到与第一数据库服务器中的操作数据完全相同的数据,即目标数据。
当然,在此需要说明的是,与操作数据相同的目标数据可以为整表或者行,在此并不做具体限定。
此外,具体的,通过对目标数据执行锁定操作,避免了应用在向第一数据库服务器内的操作数据进行操作的同时,应用向其余数据库服务器中的与操作数据完全相同的目标数据发起数据操作请求,导致的修改过程中数据库服务器中的数据不一致的问题,保证了系统中数据库服务器中数据的一致性,且保证了备份容灾性。
步骤D3:根据所述SQL语句的类别,对所述其余数据库服务器内的数据进行更新。
在本步骤中,具体的,在根据所述SQL语句的类别,对所述其余数据库服务器内的数据进行更新时,可以包括如下情况:
其一,当所述SQL语句的类别为所述DQL时,不对所述其余数据库服务器内的数据进行更新。
具体的,当所述SQL语句的类别为DQL时,缓存服务器不对此做任何处理,即不对所述其余数据库服务器内的数据进行更新。即应用读数据库服务器时,由于不对数据库服务器中的数据进行任何修改,因此不需要对数据库服务器中的数据进行更新。
其二,当所述SQL语句的类别为所述DML时,当通过所述缓存服务器的第一进程,获取到所述第一数据库服务器接收到的所述DCL中的提交或回滚指令所对应的日志时,通过所述第二进程,对所述DCL中的提交或回滚指令所对应的日志进行分析,得到所述操作数据修改的提交或回滚指令;其中,当所述第一数据库服务器接收到DCL中的提交或回滚指令时,将所述提交或回滚指令写到归档日志中;根据所述操作数据修改的提交或回滚指令,通过所述第一进程,对所述其余数据库服务器中与所述操作数据相对应的目标数据执行所述DML所对应的操作,并将对所述目标数据的操作写到归档日志中。
具体的,当SQL语句的类别为DML时,若第一数据库服务器收到应用的DCL中的提交或回滚指令时,第一数据库服务器写数据到磁盘数据文件并写归档日志,操作数据在第一数据库服务器侧完成更新,此时缓存服务器中的第一进程抓取归档日志和在线日志并传送到缓存服务器。然后,缓存服务器中的第二进程对接收到的日志进行分析,并且通过相应的rowid比对,捕捉到操作数据修改的提交或回滚指令并进行缓存。然后,缓存服务器调用第一进程,对其余数据库服务器中与操作数据相同的目标数据执行DML所对应的操作,即执行所分析得到的SQL语句所对应的操作,并写数据文件和归档日志,以完成系统中数据库服务器间数据的同步操作。
当然,在此需要说明的是,若SQL语句的类别为DML中的更新或删除时,还需要在解析得到SQL语句之后,先将其余数据库服务器中与所述操作数据相对应的目标数据进行锁定,以避免其他应用对其余数据库服务器中的目标数据的操作,从而保证数据库服务器间数据的一致性。此外,若SQL语句的类别为插入时,则可以在分析得到第一数据库服务器的提交或回滚指令之后,直接在其余数据库服务器中执行SQL语句。
其三,当所述SQL语句的类别为所述DDL时,直接通过所述第一进程,对所述其余数据库服务器中与所述操作数据相对应的目标数据执行所述DDL所对应的操作,并将操作的目标数据写到归档日志中。
具体的,DDL用来创建数据库服务器中的各种对象,包括表、视图、索引、同义词和聚簇等,因此,在缓存服务器分析得到该种SQL语句时,可以直接调用第一进程,对其余数据库服务器中与所述操作数据相对应的目标数据执行DDL所对应的操作,并将操作的目标数据写到归档日志中。
此外,具体的,当SQL语句的类别为DCL中的授权grand时,同样可以直接调用第一进程,对其余数据库服务器中与所述操作数据相对应的目标数据执行授权所对应的操作,并将操作的目标数据写到归档日志中。
下面通过更新操作来对上述数据更新过程进行说明。
假设数据库双活系统中包括数据库服务器A和数据库服务器B,且应用接入数据库服务器A发起操作请求,此时,数据更新过程包括如下步骤:
第一步,应用接入数据库服务器A并发起操作请求。
第二步,数据库服务器A对操作的数据写在线日志或者归档日志文件。缓存服务器调用数据库服务器A本身的amdu工具将在线日志卸载在本地磁盘缓存,以同归档文件一样等待缓存服务器中的第一进程抓取。
第三步,缓存服务器中的第一进程将数据库服务器A中缓存目录下的在线日志和归档日志取走,由缓存服务器中的第二进程对日志进行分析并反向运算成相应的SQL语句,并保存在缓存服务器的sql池中。为了提高效率,缓存服务器上同时启动多个进程,以增强数据库服务器并行处理速度。
第四步,为了避免应用向数据库服务器B发起的操作请求修改数据,导致数据不一致,同时缓存服务器向数据库服务器B发起锁定操作,对数据库服务器B上与数据库服务器A上进行操作的数据相同的数据进行锁定。
第五步,数据库服务器A收到应用的DCL(提交或回滚指令)请求,数据库服务器A写数据到磁盘数据文件并写归档日志,数据在数据库服务器A完成更新。
第六步,缓存服务器抓取归档日志和在线日志并传输到缓存服务器,缓存服务器对在线日志进行分析,通过相应rowid比对,捕捉到操作数据修改的DCL并缓存。
第七步,缓存服务器调用第一进程,在数据库服务器B执行相应的DCL操作,写数据文件和归档日志,操作完成。
这样,本实施例通过缓存服务器从数据库服务器中获取日志进行分析比较,且分析得到的结果在缓存服务器中缓存比较后更新到其余数据库服务器,保证了系统中所有数据库服务器间数据的一致性,进而使得系统具有较高的备份容灾性,且使得任一数据库服务器均能够接收应用的操作,提高了系统的设备利用率,实现了系统的高负载均衡。
此外,进一步地,在本实施例中,还可以当检测到所述至少两个数据库服务器中的第一数据库服务器中数据丢失时,通过所述缓存服务器中的第三进程,将第二数据库服务器中数据拷贝至所述第一数据库服务器中;其中,所述第二数据库服务器为所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器中的任意一个。
这样,通过缓存服务器中的第三进程,将数据完成的第二数据库服务器中的数据库拷贝至数据存在损失的第一数据库服务器中,保证了第一数据库服务器中数据的完成性和可用性,实现了高质量的备份容灾。
具体的,本实施例提供的上述方法,可用于如下场景:
其一,任一节点数据库宕机或者数据不可用。
当系统中任一节点数据库服务器宕机或者数据不可用时,缓存服务器能够从另一个节点数据库服务器复制数据文件,并应用归档恢复数据,使两台数据库服务器数据完全一致。
其二,任一数据库服务器与缓存服务器链接断开。
当任一数据库服务器与缓存服务器链接断开时,使得能够通过缓存服务器中的第一进程进行断点续传,待网络恢复正常时,日志重新回传到缓存服务器进行日志分析,保证了数据的同步性。
其三,待更新的数据库服务器与缓存服务器断开。
当待更新的数据库服务器与缓存服务器断开时,缓存服务器分析得到的存在数据操作的数据库服务器的日志结果,能够缓存在缓存服务器上,此时包含两种情况:
第一种,若待更新的数据库服务器不能正常接入业务,则待更新的数据库服务器上数据无变化,在待更新的数据库服务器恢复正常后,缓存服务器直接根据分析得到的sql语句进行更新数据即可;
第二种,若待更新的数据库能够正常接入业务并提供服务,则若需要被锁定的数据无变化,则在待更新的数据库服务器恢复正常后,缓存服务器直接根据分析得到的sql语句进行更新数据即可;若需要被锁定的数据同时被应用所修改,则此时缓存服务器能够对两个数据库服务器中的数据进行比较分析,得到最新数据整理成sql语句,并应用在待更新的数据库服务器上。
本实施例通过在数据库双活系统中部署均能够与至少两个数据库服务器进行通信的缓存服务器,且缓存服务器在检测到对至少两个数据库服务器中的任一数据库服务器中的数据进行操作时,获取操作数据所对应的日志,并且根据操作数据所对应的日志,更新其余数据库服务器中的数据,以使更新后的其余数据库服务器内的数据与进行操作的第一数据库服务器中的数据完全一致,实现了至少两个数据库服务器中的任一数据库服务器均能够读数据和写数据,进而实现了至少两个数据库服务器的高效负载均衡,且在很大程度上提升了设备使用率;此外,通过缓存服务器对至少两个数据库服务器的日志的准确高效分析,实现了至少两个数据库服务器的数据的一致性,进而实现了至少两个数据库服务器的高效备份容灾,保证了恢复数据的完整性和可用性。
此外,如图3所示,为本发明实施例中数据库的双活实现装置的模块框图,该装置应用于数据库双活系统中的缓存服务器,所述数据库双活系统还包括均与所述缓存服务器进行通信的至少两个数据库服务器,且所述至少两个数据库服务器中的数据完全一致;所述装置包括:
获取模块301,用于当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;
更新模块302,用于根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
可选地,所述第一获取模块301用于,当检测到对所述第一数据库服务器中的数据进行操作时,通过所述缓存服务器中的第一进程,从所述第一数据库服务器中获取所述操作数据对应的日志;其中,当所述第一数据库服务器接收到对数据的操作请求时,将操作的数据写到在线日志或归档日志中。
可选地,所述更新模块302包括:
获取单元,用于通过所述缓存服务器中的第二进程,对所述操作数据所对应的日志进行解析,得到与所述操作数据所对应的日志相对应的结构化查询语言SQL语句;
确定单元,用于确定所述SQL语句的类别,其中,所述SQL语句的类别包括数据查询语言DQL、数据操纵语言DML、数据定义语言DDL和数据控制语言DCL;
更新单元,用于根据所述SQL语句的类别,对所述其余数据库服务器内的数据进行更新。
可选地,所述装置还包括:
锁定模块,用于当所述SQL语句的类别为所述DML中的更新UPDATE或删除DELETE时,根据所述SQL语句,获取所述其余数据库服务器中的目标数据,并对所述目标数据执行锁定操作,其中所述目标数据为与所述第一数据库服务器中的操作数据相同的数据。
可选地,所述更新单元包括:
第一处理子单元,用于当所述SQL语句的类别为所述DQL时,不对所述其余数据库服务器内的数据进行更新;
第二处理子单元,用于当所述SQL语句的类别为所述DML时,当通过所述缓存服务器的第一进程,获取到所述第一数据库服务器接收到的所述DCL中的提交或回滚指令所对应的日志时,通过所述第二进程,对所述DCL中的提交或回滚指令所对应的日志进行分析,得到所述操作数据修改的提交或回滚指令;其中,当所述第一数据库服务器接收到DCL中的提交或回滚指令时,将所述提交或回滚指令写到归档日志中;根据所述操作数据修改的提交或回滚指令,通过所述第一进程,对所述其余数据库服务器中与所述操作数据相对应的目标数据执行所述DML所对应的操作,并将操作的目标数据写到归档日志中;
第三处理子单元,用于当所述SQL语句的类别为所述DDL时,直接通过所述第一进程,对所述其余数据库服务器中与所述操作数据相对应的目标数据执行所述DDL所对应的操作,并将操作的目标数据写到归档日志中。
可选地,所述装置还包括:
拷贝模块,用于当检测到所述至少两个数据库服务器中的第一数据库服务器中数据丢失时,通过所述缓存服务器中的第三进程,将第二数据库服务器中数据拷贝至所述第一数据库服务器中;其中,所述第二数据库服务器为所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器中的任意一个。
本实施例提供的装置,通过在数据库双活系统中部署均能够与至少两个数据库服务器进行通信的缓存服务器,且缓存服务器在检测到对至少两个数据库服务器中的任一数据库服务器中的数据进行操作时,获取操作数据所对应的日志,并且根据操作数据所对应的日志,更新其余数据库服务器中的数据,以使更新后的其余数据库服务器内的数据与进行操作的第一数据库服务器中的数据完全一致,实现了至少两个数据库服务器中的任一数据库服务器均能够读数据和写数据,进而实现了至少两个数据库服务器的高效负载均衡,且在很大程度上提升了设备使用率;此外,通过缓存服务器对至少两个数据库服务器的日志的准确高效分析,实现了至少两个数据库服务器的数据的一致性,进而实现了至少两个数据库服务器的高效备份容灾,保证了恢复数据的完整性和可用性。
此外,如图4所示,为本发明实施例提供的电子设备的实体结构示意图,该电子设备可以包括:处理器(processor)410、通信接口(Communications Interface)420、存储器(memory)430和通信总线440,其中,处理器410,通信接口420,存储器430通过通信总线440完成相互间的通信。处理器410可以调用存储在存储器430上并可在处理器410上运行的计算机程序,以执行上述各实施例提供的方法,例如包括:当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
此外,上述的存储器430中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的方法,例如包括:当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (9)
1.一种数据库的双活实现方法,其特征在于,应用于数据库双活系统中的缓存服务器,所述数据库双活系统还包括均与所述缓存服务器进行通信的至少两个数据库服务器,且所述至少两个数据库服务器中的数据完全一致;所述方法包括:
当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;
根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
2.根据权利要求1所述的方法,其特征在于,所述当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志,包括:
当检测到对所述第一数据库服务器中的数据进行操作时,通过所述缓存服务器中的第一进程,从所述第一数据库服务器中获取所述操作数据对应的日志;其中,当所述第一数据库服务器接收到对数据的操作请求时,将操作的数据写到在线日志或归档日志中。
3.根据权利要求1所述的方法,其特征在于,所述根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,包括:
通过所述缓存服务器中的第二进程,对所述操作数据所对应的日志进行解析,得到与所述操作数据所对应的日志相对应的结构化查询语言SQL语句;
确定所述SQL语句的类别,其中,所述SQL语句的类别包括数据查询语言DQL、数据操纵语言DML、数据定义语言DDL和数据控制语言DCL;
根据所述SQL语句的类别,对所述其余数据库服务器内的数据进行更新。
4.根据权利要求3所述的方法,其特征在于,所述确定所述SQL语句的类别之后,所述方法还包括:
当所述SQL语句的类别为所述DML中的更新UPDATE或删除DELETE时,根据所述SQL语句,获取所述其余数据库服务器中的目标数据,并对所述目标数据执行锁定操作,其中所述目标数据为与所述第一数据库服务器中的操作数据相同的数据。
5.根据权利要求3所述的方法,其特征在于,所述根据所述SQL语句的类别,对所述其余数据库服务器内的数据进行更新,包括:
当所述SQL语句的类别为所述DQL时,不对所述其余数据库服务器内的数据进行更新;
当所述SQL语句的类别为所述DML时,当通过所述缓存服务器的第一进程,获取到所述第一数据库服务器接收到的所述DCL中的提交或回滚指令所对应的日志时,通过所述第二进程,对所述DCL中的提交或回滚指令所对应的日志进行分析,得到所述操作数据修改的提交或回滚指令;其中,当所述第一数据库服务器接收到DCL中的提交或回滚指令时,将所述提交或回滚指令写到归档日志中;
根据所述操作数据修改的提交或回滚指令,通过所述第一进程,对所述其余数据库服务器中与所述操作数据相对应的目标数据执行所述DML所对应的操作,并将操作的目标数据写到归档日志中;
当所述SQL语句的类别为所述DDL时,直接通过所述第一进程,对所述其余数据库服务器中与所述操作数据相对应的目标数据执行所述DDL所对应的操作,并将操作的目标数据写到归档日志中。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当检测到所述至少两个数据库服务器中的第一数据库服务器中数据丢失时,通过所述缓存服务器中的第三进程,将第二数据库服务器中数据拷贝至所述第一数据库服务器中;其中,所述第二数据库服务器为所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器中的任意一个。
7.一种数据库的双活实现装置,其特征在于,应用于数据库双活系统中的缓存服务器,所述数据库双活系统还包括均与所述缓存服务器进行通信的至少两个数据库服务器,且所述至少两个数据库服务器中的数据完全一致;所述装置包括:
获取模块,用于当检测到对所述至少两个数据库服务器中的第一数据库服务器中的数据进行操作时,获取进行操作的操作数据所对应的日志;其中,所述第一数据库服务器为所述至少两个数据库服务器中的任一数据库服务器;
更新模块,用于根据所述操作数据所对应的日志,更新所述至少两个数据库服务器中除所述第一数据库服务器之外的其余数据库服务器内的数据,以使更新后的其余数据库服务器内的数据与所述第一数据库服务器中的数据完全一致。
8.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的数据库的双活实现方法的步骤。
9.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至6中任一项所述的数据库的双活实现方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811573037.8A CN111352766A (zh) | 2018-12-21 | 2018-12-21 | 一种数据库的双活实现方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811573037.8A CN111352766A (zh) | 2018-12-21 | 2018-12-21 | 一种数据库的双活实现方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111352766A true CN111352766A (zh) | 2020-06-30 |
Family
ID=71197465
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811573037.8A Pending CN111352766A (zh) | 2018-12-21 | 2018-12-21 | 一种数据库的双活实现方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111352766A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100160A (zh) * | 2020-11-05 | 2020-12-18 | 四川新网银行股份有限公司 | 一种基于Elastic Search的双活实时数据仓库建设方法 |
CN112307054A (zh) * | 2020-11-18 | 2021-02-02 | 太原理工大学 | 一种双活数据库主备服务器读写方法 |
WO2022116828A1 (en) * | 2020-12-03 | 2022-06-09 | International Business Machines Corporation | Batch job performance improvement in active-active architecture |
CN118410115A (zh) * | 2024-07-03 | 2024-07-30 | 上海联鼎软件股份有限公司 | 一种oracl数据库的自动双活容灾方法、装置与存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617176A (zh) * | 2013-11-04 | 2014-03-05 | 广东电子工业研究院有限公司 | 一种实现多源异构数据资源自动同步的方法 |
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN104182302A (zh) * | 2014-09-15 | 2014-12-03 | 北京国双科技有限公司 | 数据库备份方法及装置 |
CN104657382A (zh) * | 2013-11-21 | 2015-05-27 | 阿里巴巴集团控股有限公司 | 用于MySQL主从服务器数据一致性检测的方法和装置 |
CN105426373A (zh) * | 2014-09-19 | 2016-03-23 | 阿里巴巴集团控股有限公司 | 一种数据库同步方法与设备 |
US20170351584A1 (en) * | 2016-06-07 | 2017-12-07 | International Business Machines Corporation | Managing a Redundant Computerized Database Using a Replicated Database Cache |
CN108108431A (zh) * | 2017-12-19 | 2018-06-01 | 中国民航信息网络股份有限公司 | 数据同步方法和系统 |
CN108121827A (zh) * | 2018-01-15 | 2018-06-05 | 农信银资金清算中心有限责任公司 | 一种全量数据的同步方法及装置 |
-
2018
- 2018-12-21 CN CN201811573037.8A patent/CN111352766A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103617176A (zh) * | 2013-11-04 | 2014-03-05 | 广东电子工业研究院有限公司 | 一种实现多源异构数据资源自动同步的方法 |
CN104657382A (zh) * | 2013-11-21 | 2015-05-27 | 阿里巴巴集团控股有限公司 | 用于MySQL主从服务器数据一致性检测的方法和装置 |
CN103761318A (zh) * | 2014-01-27 | 2014-04-30 | 中国工商银行股份有限公司 | 一种关系型异构数据库数据同步的方法及系统 |
CN104182302A (zh) * | 2014-09-15 | 2014-12-03 | 北京国双科技有限公司 | 数据库备份方法及装置 |
CN105426373A (zh) * | 2014-09-19 | 2016-03-23 | 阿里巴巴集团控股有限公司 | 一种数据库同步方法与设备 |
US20170351584A1 (en) * | 2016-06-07 | 2017-12-07 | International Business Machines Corporation | Managing a Redundant Computerized Database Using a Replicated Database Cache |
CN108108431A (zh) * | 2017-12-19 | 2018-06-01 | 中国民航信息网络股份有限公司 | 数据同步方法和系统 |
CN108121827A (zh) * | 2018-01-15 | 2018-06-05 | 农信银资金清算中心有限责任公司 | 一种全量数据的同步方法及装置 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100160A (zh) * | 2020-11-05 | 2020-12-18 | 四川新网银行股份有限公司 | 一种基于Elastic Search的双活实时数据仓库建设方法 |
CN112307054A (zh) * | 2020-11-18 | 2021-02-02 | 太原理工大学 | 一种双活数据库主备服务器读写方法 |
CN112307054B (zh) * | 2020-11-18 | 2023-02-28 | 太原理工大学 | 一种双活数据库主备服务器读写方法 |
WO2022116828A1 (en) * | 2020-12-03 | 2022-06-09 | International Business Machines Corporation | Batch job performance improvement in active-active architecture |
US11461315B2 (en) | 2020-12-03 | 2022-10-04 | International Business Machines Corporation | Batch job performance improvement in active-active architecture |
GB2617015A (en) * | 2020-12-03 | 2023-09-27 | Ibm | Batch job performance immprovement in active-active architecture |
CN118410115A (zh) * | 2024-07-03 | 2024-07-30 | 上海联鼎软件股份有限公司 | 一种oracl数据库的自动双活容灾方法、装置与存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11068501B2 (en) | Single phase transaction commits for distributed database transactions | |
US10671642B2 (en) | Copying data changes to a target database | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
US7257689B1 (en) | System and method for loosely coupled temporal storage management | |
US9996427B2 (en) | Parallel backup for distributed database system environments | |
CN111352766A (zh) | 一种数据库的双活实现方法及装置 | |
KR100926880B1 (ko) | Dbms에서의 데이터 복제 방법 및 시스템 | |
US10229152B2 (en) | Automatically restoring data replication consistency without service interruption during parallel apply | |
CN113535656B (zh) | 数据访问方法、装置、设备及存储介质 | |
EP3200096A1 (en) | Remote replication method and apparatus based on duplicated data deletion | |
CN111078667B (zh) | 一种数据迁移的方法以及相关装置 | |
US20150347250A1 (en) | Database management system for providing partial re-synchronization and partial re-synchronization method of using the same | |
US11314719B2 (en) | Method for implementing change data capture in database management system | |
CN107391635A (zh) | 数据同步系统及方法 | |
EP3722973B1 (en) | Data processing method and device for distributed database, storage medium, and electronic device | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
CN115858236A (zh) | 一种数据备份方法和数据库集群 | |
CN108369588B (zh) | 数据库级别自动存储管理 | |
US10990571B1 (en) | Online reordering of database table columns | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
US20210200648A1 (en) | Distributed recovery of server information | |
US11042454B1 (en) | Restoration of a data source | |
JP2023546897A (ja) | オブジェクト処理方法、装置、及びコンピュータ機器 | |
CN113297159B (zh) | 数据存储方法以及装置 | |
US20220197761A1 (en) | Cloud architecture for replicated data services |
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: 20200630 |
|
RJ01 | Rejection of invention patent application after publication |