CN113254425A - 数据库事务保持的方法、设备、系统、程序及存储介质 - Google Patents
数据库事务保持的方法、设备、系统、程序及存储介质 Download PDFInfo
- Publication number
- CN113254425A CN113254425A CN202110706679.6A CN202110706679A CN113254425A CN 113254425 A CN113254425 A CN 113254425A CN 202110706679 A CN202110706679 A CN 202110706679A CN 113254425 A CN113254425 A CN 113254425A
- Authority
- CN
- China
- Prior art keywords
- database
- transaction
- target transaction
- statement
- rollback
- 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.)
- Granted
Links
Images
Classifications
-
- 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- 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/1458—Management of the backup or restore process
-
- 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/466—Transaction processing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据库事务保持的方法、设备、系统、程序及存储介质。当数据库实例出现异常时,若存在未提交的事务,则代理服务器可在数据库实例结束异常状态后,协助数据库实例恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,代理服务器可发送回退节点之后的数据库语句,数据库服务器可在正确的状态下执行回退节点之后的数据库语句。进而,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持,降低了事务保持对客户端的依赖,同时,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持效率。
Description
技术领域
本申请涉及数据库技术领域,尤其涉及一种数据库事务保持的方法、设备、系统、程序及存储介质。
背景技术
传统的数据库在发生异常情况下,例如数据库实例的主备切换或者重启时,数据库实例会断开与用户侧的连接,进而,用户侧的应用程序可以感知数据库的异常。为应对数据库异常导致的随时可能出现的“扰动”,应用程序需要有重建连接和重试事务的机制。但是,这种方式对用户侧的应用程序的依赖较高,不易提升数据库异常的处理效率。因此,有待提出一种新的解决方案。
发明内容
本申请的多个方面提供一种数据库事务保持的方法、设备、系统、程序及存储介质,用以在数据库发生异常时,在用户侧无感知的情况下实现事务保持。
本申请实施例提供一种数据库事务保持的方法,适用于数据库服务器,包括:在数据库实例结束异常状态后,确定未提交的事务的回退日志;响应代理服务器发送的事务恢复请求,重建目标事务;所述事务恢复请求包括:所述目标事务的标识以及所述目标事务的回退节点的标识;所述回退节点的标识包括所述目标事务中结束执行的数据库语句的标识;从所述未提交事务的回退日志中,确定所述目标事务的回退日志;根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本;接收所述代理服务器重发的数据库语句,所述重发的数据库语句为所述回退节点的下一条数据库语句;执行所述重发的数据库语句,以保持执行所述目标事务。
本申请实施例还提供一种数据库事务保持的方法,适用于代理服务器,包括:在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点;根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求,以使得所述数据库服务器重建所述目标事务并将所述目标事务的数据回滚至所述回退节点对应的数据版本;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;向所述数据库服务器发送第二数据库语句,以使得所述数据库服务器根据所述第二数据库语句保持执行所述目标事务;所述第二数据库语句为所述回退节点的下一条数据库语句。
本申请实施例还提供一种服务器,包括:存储器和处理器;所述存储器用于存储一条或多条计算机指令;所述处理器用于执行所述一条或多条计算机指令以用于:执行本申请实施例提供的数据库事务保持的方法中的步骤。
本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被处理器执行时能够实现本申请实施例提供的数据库事务保持的方法中的步骤。
本申请实施例还提供一种计算机程序,包括计算机程序/指令,其中,当计算机程序被处理器执行时,致使处理器实现本申请实施例提供的数据库事务保持的方法中的步骤。
本申请实施例还提供一种事务保持系统,包括:数据库的代理服务器以及数据库服务器;所述代理服务器,用于:在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点;根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;向所述数据库服务器发送第二数据库语句;所述第二数据库语句为所述回退节点的下一条数据库语句;所述数据库服务器,用于:在数据库实例结束异常状态后,确定未提交的事务的回退日志;响应代理服务器发送的事务恢复请求,重建目标事务;从所述未提交事务的回退日志中,确定所述目标事务的回退日志;根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本;接收所述代理服务器发送的第二数据库语句,并执行所述第二数据库语句,以保持执行所述目标事务。
本申请实施例提供的数据库事务保持的方法中,当数据库实例出现异常时,若存在未提交的事务,则代理服务器可在数据库实例结束异常状态后,协助数据库实例恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,代理服务器可发送回退节点之后的数据库语句,数据库服务器可在正确的状态下执行回退节点之后的数据库语句。基于这种实施方式,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持。一方面,降低了事务保持对客户端的依赖,有利于降低客户端的开发成本,另一方面,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持的效率。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请一示例性实施例提供的事务保持系统的结构示意图;
图2为本申请一示例性实施例提供的数据库语句执行过程的示意图;
图3为本申请一示例性实施例提供的事务保持过程的示意图;
图4为本申请一示例性实施例提供的数据库事务保持的方法的流程示意图;
图5为本申请另一示例性实施例提供的数据库事务保持的方法的流程示意图;
图6为本申请一示例性实施例提供的服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在计算机领域中,事务(transaction)是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务提供一种机制,将一个活动涉及的所有操作纳入到一个不可分割的执行单元,组成事务的所有操作只有在所有操作均能正常执行的情况下方能提交,只要其中任一操作执行失败,都将导致整个事务的回滚(Rollback)。
数据库事务通常具有原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)等特征,上述特征简称为ACID。
其中,原子性是指,一个事务中的所有操作不会结束在中间某个环节。事务在执行过程中发生错误时,会被回滚到事务开始前的状态。
其中,一致性是指,在一个事务执行之前和执行之后数据库都必须处于一致性状态。如果事务成功地完成,那么系统中所有变化将正确地应用,系统处于有效状态。如果在事务中出现错误,那么系统中的所有变化将自动地回滚,系统返回到原始状态。
其中,隔离性是指,在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务执行的修改必须与任何其他并发事务执行的修改隔离。事务查看数据更新结果时,数据所处的状态为另一事务对其进行修改之前的状态,或者,数据所处的状态为另一事务对其进行修改之后的状态,事务无法查看到中间状态的数据。
其中,持久性是指,事务成功结束后,事务对数据库所做的更新可永久保存下来。即使发生系统崩溃,重新启动数据库系统后,数据库还能恢复到事务成功结束时的状态。
传统的数据库在发生异常情况下,例如数据库实例的主备切换或者重启时,数据库实例会断开与用户侧的连接,例如TCP(Transmission Control Protocol,传输控制协议),UDP(User Datagram Protocol,用户数据报协议),RDMA(Remote Direct MemoryAccess,远程直接数据存取)连接。用户侧的应用程序可以感知数据库的异常。为应对数据库异常导致的随时可能出现的“扰动”,应用程序需要有重建连接和重试事务的机制。但是,这种方式对用户侧的应用程序的依赖较高。用户侧的应用程序通常因为各种原因,例如开发时间短、引用第三方库等,导致无法合理地有效地处理数据库服务中断问题,从而引起故障扩大最终造成损失。
针对上述技术问题,在本申请一些实施例中,提供了一种解决方案,以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请一示例性实施例提供的事务保持系统的结构示意图,如图1所示,事务保持系统100包括客户端10、数据库的代理服务器20以及数据库服务器30。
其中,代理服务器20以及数据库服务器30均可基于服务器设备实现,当服务器设备上部署有数据库的代理应用程序(proxy)时,该服务器设备可被描述为代理服务器;当服务器设备上部署有数据库时,该服务器设备可被描述为数据库服务器。其中,服务器设备可实现为常规服务器、云服务器、云主机、虚拟中心等服务器等设备,本实施例对此不做限制。其中,服务器设备的构成主要包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,不再赘述。在一些可选的实施例中,数据库和代理应用程序可同时部署在一台服务器上,本实施例不做限制。
其中,代理服务器20用于协助实现连接保持,事务保持等功能,以处理数据库实例切换或者重启导致的服务中断,保持异常操作对用户侧的透明。
客户端10存在事务处理需求时,可通过代理服务器20向数据库服务器30发送数据库语句。其中,根据数据库的类型不同,客户端10发送的数据库语句的类型也不同。例如,数据服务器30上部署的数据库为关系型数据库时,该数据库语句可以是SQL (StructuredQuery Language,结构化查询语言)语句。
数据库服务器30上部署有多个数据库,每个数据库可启动多个数据库实例。当数据库实例发生异常时,需要断开与代理服务器20之间的连接,进而导致未提交的事务出现中断。例如,数据库实例的主库因硬件或者软件的故障导致不可用时,数据库服务器30可将数据库实例切换到备数据库。此时,数据库实例的状态变更为“主备切换中”状态,数据库实例需要切断与代理服务器20之间的连接并中断未提交的事务。又例如,在一些情况下,当数据库服务器30或者数据库实例所在的数据库需要进行重启时,数据库实例需要断开与代理服务器20之间的连接,并中断未提交的事务。
当数据库实例完成主备切换或者重启后,数据库实例结束异常状态,并进入“运行中”状态。在本实施例中,结束异常状态后,数据库实例可确定未提交的事务,以及未提交的事务的回退日志。
其中,未提交的事务,指的是数据库实例异常发生时尚未提交的事务。回退日志,即Undo Log,用于记录事务对数据的修改情况。数据库每次执行数据库语句以修改数据时,需要写Undo Log,以记录修改前的数据的版本。Undo Log可在事务回滚或者旧版本删除时使用。例如,可利用Undo Log将事务的行记录回滚到某个数据库修改操作之前的版本。
在确定未提交的事务的回退日志后,数据库实例并不立即根据未提交事务的回退日志执行事务的整体回滚操作,而是进入等待状态,以在代理服务器20的协助下完成事务保持操作。
其中,数据库实例结束异常状态后进入等待状态的实施方式,可通过对数据库实例的参数进行配置实现。在配置数据库实例的参数时,可配置数据库实例结束异常状态后的等待时长,以及等待超时后的实施方式,本实施例不做限制。
其中,代理服务器20,可实时地或者按照设定的周期检查数据库实例是否有未提交的事务以及事务未提交的原因。若存在因数据库异常导致未提交的事务,则代理服务器20可在数据库实例结束异常状态后,使用事务保持功能,与数据库服务器20配合完成事务的恢复。在以下实施例中,将未提交的事务中的任一需要恢复的事务描述为目标事务。
在数据库实例结束异常状态后,代理服务器20可确定未提交的目标事务以及该目标事务的回退节点。其中,回退节点可实现为目标事务中的某一条结束执行的数据库语句对应的数据节点。该回退节点可作为语句维度的数据回滚节点,用于将目标事务的数据回退到该执行结束的数据库语句对应的数据版本。其中,回退(Rollback),又称回滚,指的是程序或数据处理异常时,将程序或数据恢复到上一次正确状态的行为。
在一些实施例中,为节省数据回滚所需的时间成本以及资源成本,该回退节点可实现为目标事务在数据库发生异常之前结束执行的最后一条数据库语句对应的数据节点。进而,在回滚时,只需将数据回滚到最后一条成功执行的语句执行结束之后的数据版本,回滚数据量相对较小。
确定待保持的目标事务以及目标事务的回退节点后,代理服务器20可基于目标事务的标识以及回退节点的标识,向数据库服务器30发送事务恢复请求。其中,目标事务的标识,目标事务的ID(Identity document,身份标识号)、目标事务的唯一识别名称等等。其中,回退节点的标识,可以是回退节点在目标事务的Undo Log中的标识,以用于根据目标事务的Undo Log,确定回退节点对应的数据版本。
数据库服务器30接收代理服务器20发送的事务恢复请求后,可根据事务恢复请求携带的目标事务的标识,确定待恢复的目标事务,并可响应该事务恢复请求,数据库服务器30可重建目标事务。
重建目标事务后,数据库实例可根据目标事务的标识,从未提交事务的回退日志中,确定目标事务的回退日志。其中,目标事务的回退日志中,记录了目标事务的回退节点对应的数据版本。基于此,数据库服务器30可根据回退节点的标识,从目标事务的回退日志确定回退节点对应的数据版本,并将目标事务的数据回滚至该回退节点对应的数据版本。其中,该回退节点对应的数据版本,指的是回退节点对应的数据库语句结束执行之后的数据版本。
通过上述的操作,目标事务可回滚到数据库实例发生异常之前的正确状态。
接下来,代理服务器20可向数据库服务器30继续发送数据库语句,该继续发送的数据库语句为回退节点的下一条数据库语句。
在一些实施例中,该继续发送的数据库语为客户端10在数据库实例结束异常状态之后发送至代理服务器20的,代理服务器20可将接收到的数据库语句发送至事务恢复后的数据库实例。在这种实施方式中,数据库实例在两条相邻的数据库语句之间发生了异常,不存在异常时未结束执行的语句。例如,数据库实例在结束执行目标事务的数据库语句1后发生了异常。数据库实例结束异常状态后,数据库实例在代理服务器20的协助下恢复了目标事务,数据回滚到数据库语句1执行后的版本。此时客户端10向代理服务器20发送数据库语句2,代理服务器20可将数据库语句2发送至数据库实例进行执行。
在另一些实施例中,该继续发送的数据库语句为客户端10在数据库实例进入异常状态之前发送至代理服务器20的,代理服务器20已在数据库实例异常之前将该数据库语句发送至数据库实例。当目标事务的数据回滚至回退节点对应的数据版本后,回退节点之后的数据库语句为被回退的数据库语句。即,回退节点之后的数据库语句对数据库的修改操作产生的数据,在回退的过程中被删除。在这种情况下,被回退的数据库语句需重复执行,以与回退节点进行衔接。
因此,数据库结束异常状态后,代理服务器20可重发数据库实例进入异常状态之前已发送的、且位于回退节点之后的数据库语句,以使得数据库实例重新执行该数据库语句。在这种情况下,目标事务回滚到回退节点执行结束后的正确状态时,无需客户端10重发被回退的数据库语句,而是由代理服务器20按照客户端10发送的数据库语句的顺序,向数据库服务器30发送需执行的下一条数据库语句。进而,可在客户端10一侧无感知的情况下保持继续处理目标事务。
其中,回滚节点可以为数据库发生异常之前结束执行的任意一条数据库语句对应的数据节点;或者,回滚节点可以为数据库发生异常之前结束执行的最后一条数据库语句对应的数据节点。
其中,当回滚节点为数据库发生异常之前结束执行的最后一条数据库语句时,该重发的数据库语句可以是数据库异常时未成功执行的语句,即回滚节点的下一条尚未结束执行的语句。当目标事务的数据回滚至回退节点对应的数据版本后,该未成功执行的数据库语句是被回退的数据库语句。数据库结束异常状态后,代理服务器20可重发该数据库语句,以使得数据库服务器30重新执行该数据库语句。
基于这种实施方式,可将数据库重启之前最后一条成功执行的数据库语句作为回滚节点,将事务恢复到最后一条成功执行的数据库语句结束之后的状态,并可重新执行该回滚节点之后未成功执行的数据库语句。从而,避免了回滚整个目标事务造成资源浪费,同时,无需客户端10重复发送数据库语句,降低了对用户侧的依赖。
数据库服务器30接收代理服务器20重发的数据库语句后,可执行该重发的数据库语句,以实现目标事务的保持。
基于这种实施方式,在数据库实例结束异常状态后,由代理服务器20协助数据库服务器30将目标事务的数据恢复到异常之前的正确版本,并重新将客户端10发送的被回退的数据库语句发送至数据库服务器30,进而,客户端10无需重复发送被回退的数据库语句,可在用户无感知的情况下,实现事务的保持。
在事务保持系统1000中,客户端10与代理服务器20之间,以及代理服务器20与数据库服务器30之间,可采用有线通信方式无线通信方式进行通信。其中,无线通信方式包括蓝牙、ZigBee、红外线、WiFi(WIreless-Fidelity,无线保真技术)等短距离通信方式,也包括LORA等远距离无线通信方式,还可包括基于移动网络的无线通信方式。其中,当通过移动网络通信连接时,移动网络的网络制式可以为2G(GSM)、2.5G(GPRS)、3G(WCDMA、TD-SCDMA、CDMA2000、UTMS)、4G(LTE)、4G+(LTE+)、5G、WiMax等中的任意一种。
本实施例中,当数据库实例出现异常时,若存在未提交的事务,则代理服务器可在数据库实例结束异常状态后,协助数据库实例恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,代理服务器可发送回退节点之后的数据库语句,数据库服务器可在正确的状态下执行回退节点之后的数据库语句。当回退节点之后的数据库语句为数据库实例异常之前已发送的数据库语句时,在事务恢复并回退数据后,代理服务器可重发被回退的数据库语句,数据库服务器可在正确的状态下重复执行被回退的数据库语句。基于这种实施方式,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持。一方面,降低了事务保持对客户端的依赖,有利于降低客户端的开发成本,另一方面,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持的效率。
在一些可选的实施例中,为在数据库异常时实现事务保持,代理服务器20和数据库服务器30可相互配合,在数据库实例正常运行时,同步任一事务的执行进度、数据库语句的执行状态以及事务数据的版本节点信息,以使得代理服务器20获知事务的执行进度,事务已完成执行的语句以及该语句对应的数据版本。基于上述获取到的信息,代理服务器20可在数据库异常时,协助实现事务保持。以下将结合图2,以目标事务的任意一条数据库语句为例进行示例性说明。
可选地, 在数据库实例未进入异常状态时,数据库服务器30可接收代理服务器20发送的目标事务的数据库语句,并执行该数据库语句。如图2所示,数据库实例结束执行目标事务的某一条数据库语句时,可判断该目标事务是否为多语句事务,若为单语句事务,则可认为不存在数据库异常时的事务保持需求。若为多语句事务,则数据库实例可在目标事务的Undo Log中记录该数据库语句的标识。其中,该标识可以是ID、名称或者编号等等,本实施例不做限制。记录数据库语句的Undo Log number后,数据库实例可将该目标事务的标识以及该数据库语句在该回退日志中的标识发送至代理服务器20。代理服务器20接收该目标事务的标识以及目标事务中执行结束的数据库语句在目标事务的回退日志中的标识,并进行保存。
在一些实施例中,将数据库语句的标识,描述为Undo Log number(回退日志编号)。如图2所示,数据库实例可将目标事务的ID以及该结束执行的数据库语句的Undo Lognumber发送给代理服务器20进行保存。
数据库实例执行数据库语句的过程中,可对数据库中的数据进行修改操作,每次修改操作之前,需要写回退日志,以保存修改之前的数据版本。可选地,为便于后续查询回退节点对应的数据版本,可在执行每个数据库语句时,在目标事务的回退日志中标记该数据库语句的标识。
可选地,数据库语句的标识,用于区分数据版本,因此,可根据数据库语句对数据库的修改操作生成数据库语句的标识。其中,数据库实例执行每条数据库语句时,可对数据库进行至少一次修改操作。其中,在每次执行修改操作时,数据库服务器30可记录当前执行的修改操作对应的操作标识。数据库语句的标识,由数据库语句包含的数据库修改操作的标识组成。
为便于查询,可将目标事务对数据库的多个修改操作对应的操作标识设置为逐个递增的数字。其中,该逐个递增的数字,可通过Undo Log number(回退日志编号)进行表示。
针对目标事务而言,在事务对象中,可采用undo_no记录目标事务开始以来产生的所有Undo Log的数量。undo_no可以是一个递增的值。
例如,目标事务刚开始时,undo_no为0,执行第一条DML((Data ManipulationLanguage,数据库操纵语言)时,对数据库进行一次修改操作,则undo_no递增为1;执行第二条DML时,对数据库进行2次修改操作,则undo_no递增为3。undo_no为3表示目标事务产生了3条Undo Log。当需要回滚目标事务时,需要读取3条Undo Log中的内容,以恢复执行第一条DML之前的旧的数据版本,从而将数据回退到执行DML之前的状态。其中,该DML可包括:delete(删除)、insert(插入)、UPDATE(更新)等用于修改数据库的操作语言。
在结束执行每条数据库语句后,数据库实例可将目标事务的ID以及该结束执行的数据库语句的Undo Log number发送至代理服务器20。进而,代理服务器20可根据Undo Lognumber获知目标事务的执行进度,并获知已成功执行的数据库语句。当存在数据回退需求时,代理服务器20可确定数据库实例异常之前最后一条成功执行的语句,并将该最后一条成功执行的语句作为回退节点,将该最后一条成功执行的语句的Undo Log number作为回退节点的标识,向数据库实例发送事务恢复请求。数据库实例可根据该Undo Log number,将目标事务的数据回退至Undo Log number对应的数据版本。
以下将继续结合上述例子进行继续说明。
承接上述例子,目标事务的第一条DML对数据库进行一次修改操作,undo_no递增为1;数据库实例可将目标事务的ID以及undo_no=1发送至代理服务器20。执行第二条DML时,对数据库进行2次修改操作,undo_no递增为3;数据库实例可将目标事务的ID以及undo_no=3发送至代理服务器20。执行第三条DML时,数据库发生异常,第三条DML未结束执行。
第二条DML是数据库异常之前最后一条结束执行的语句。当数据库实例结束异常状态后,代理服务器20可根据目标事务的ID以及undo_no=3,向数据库实例发送事务恢复请求。数据库实例可根据目标事务的ID以及目标事务的Undo Log重建目标事务,并将目标事务的数据回退至 undo_no=3对应的数据版本。接下来,代理服务器20可向数据库实例重发第三条DML,数据库实例可继续执行第三条DML,以保持执行该目标事务。
以下将结合图3,对数据库实例结束异常状态后保持事务的过程进行进一步示例性说明。
在一些可选的实施例中,若数据库实例结束异常状态后不存在空闲的连接,则代理服务器20可向数据库实例发送建立新的连接的请求。数据库实例可响应代理服务器20的连接请求,创建新的连接。创建连接后,代理服务器20可向数据库实例发送针对目标事务的事务恢复请求。
如图3所示,数据库实例结束异常状态后,可通过事务的Undo Log重建事务,并进入等待代理服务器20发送事务恢复请求的状态。接收到事务恢复请求后,数据库实例可判断该事务恢复请求是否为有效请求;若为有效请求,则可根据该目标事务的事务信息,对该新建的连接进行配置,以将目标事务与该连接进行绑定。其中,该目标事务的事务信息包括:事务ID、事务的隔离级别、事务开启时间、事务状态(是否为活跃状态)等。
可选地,如图3所示,数据库服务器30判断该事务恢复请求是否为有效请求时,可判断代理服务器20是否在数据库实例结束异常状态后的设定时长范围内发送事务恢复请求。若代理服务器20在数据库实例结束异常状态后的设定时长范围内发送事务恢复请求,则数据库实例可确定该事务恢复请求为有效请求。反之,则认为代理服务器20的事务恢复请求为超时请求。
可选地,如图3所示,数据库服务器30判断该事务恢复请求是否为有效请求时,可判断数据库实例是否开启事务保持功能。若数据库实例开启事务保持功能,则可认为该事务恢复请求为有效请求。可选地,如图3所示,数据库服务器30判断该事务恢复请求是否为有效请求时,可判断新建立的连接是否已经绑定其他事务。若未绑定其他事务,可认为该事务恢复请求为有效请求,并可在后续将该目标事务与该新建的连接进行绑定。
可选地,如图3所示,数据库服务器30判断该事务恢复请求是否为有效请求时,可判断该请求保持的目标事务是否存在。若该目标事务存在,可认为该事务恢复请求为有效请求。
可选地,如图3所示,数据库服务器30判断该事务恢复请求是否为有效请求时,可判断代理服务器20发送的回退节点对应的回退数据的数据量是否小于设定的数量阈值。若回退数据的数据量小于该设定的数量阈值,则可确定该事务恢复请求为有效请求。反之,若回退数据的数据量大于或者等于设定的数量阈值,则回退数据将耗费较多的时间成本和资源成本,不利于提升提升事务恢复的效率。
上述有效性判断的实施方式可以单独执行也可以组合执行,本实施例不做限制。
除前述实施例记载的数据库异常时的事务保持系统之外,本申请实施例还提供一种数据库事务保持的方法,以下将进行示例性说明。
图4是本申请一示例性实施例提供的数据库事务保持的方法的流程示意图,该方法在数据库服务器一侧执行时,可包括如图4所示的步骤:
步骤401、在数据库实例结束异常状态后,确定未提交的事务的回退日志。
步骤402、响应代理服务器发送的事务恢复请求,重建目标事务;所述事务恢复请求包括:所述目标事务的标识以及所述目标事务的回退节点的标识;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识。
步骤403、从所述未提交事务的回退日志中,确定所述目标事务的回退日志。
步骤404、根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本。
步骤405、接收所述代理服务器发送的第二数据库语句,所述第二数据库语句为所述回退节点的下一条数据库语句。
步骤406、执行所述第二数据库语句,以保持执行所述目标事务。
进一步可选地,该方法还包括:在数据库实例进入异常状态之前,接收所述代理服务器发送的所述目标事务的数据库语句;执行所述数据库语句,并在所述目标事务的回退日志中标记所述数据库语句的标识;在所述数据库语句执行结束时,将所述目标事务的标识以及所述数据库语句在所述回退日志中的标识发送至所述代理服务器。
进一步可选地,执行所述数据库语句,并在所述目标事务的回退日志中标记所述数据库语句的标识的一种方式,包括:根据所述数据库语句,对所述数据库进行至少一次修改操作;在每次执行修改操作时,记录当前执行的修改操作对应的操作标识;其中,所述目标事务对所述数据库的多个修改操作对应的操作标识为逐个递增的数字。
进一步可选地,所述第二数据库语句为:所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句;所述第一数据库语句为:所述第二数据库语句的上一条结束执行的数据库语句。
进一步可选地,响应代理服务器发送的针对目标事务的事务恢复请求,重建目标事务的一种方式,包括:响应所述代理服务器的连接请求,创建连接;判断所述事务恢复请求是否为有效请求;若为有效请求,则根据所述目标事务的事务信息,对所述连接进行配置,以将所述连接与所述目标事务进行绑定。
进一步可选地,判断所述事务恢复请求是否为有效请求的一种方式,包括:在所述数据库实例结束异常状态后,若所述代理服务器在设定时长范围内发送所述事务恢复请求,则确定所述事务恢复请求为有效请求;或者, 若所述回退节点对应的回滚数据量小于设定的数量阈值,则确定所述事务恢复请求为有效请求。
本实施例中,当数据库实例出现异常时,若存在未提交的事务,则数据库实例可在结束异常状态后,在数据库的代理服务器的协助下恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,数据库实例可接收代理服务器重发的被回退的数据库语句,并可在正确的状态下重复执行被回退的数据库语句。基于这种实施方式,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持。一方面,降低了事务保持对客户端的依赖,有利于降低客户端的开发成本,另一方面,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持的效率。
图5是本申请另一示例性实施例提供的数据库事务保持的方法的流程示意图,该方法在数据库的代理服务器一侧执行时,可包括如图5所示的步骤:
步骤501、在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点。
步骤502、根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求,以使得所述数据库服务器重建所述目标事务并将所述目标事务的数据回滚至所述回退节点对应的数据版本;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识。
步骤503、向所述数据库服务器发送第二数据库语句,以使得所述数据库服务器根据所述第二数据库语句保持执行所述目标事务;所述第二数据库语句为所述回退节点的下一条数据库语句。
进一步可选地,该方法还包括:在数据库实例进入异常状态之前,向所述数据库服务器发送所述目标事务的数据库语句;在所述数据库语句执行结束后,接收所述数据库服务器发送的所述目标事务的标识,以及,所述数据库语句在所述目标事务的回退日志中的标识。
进一步可选地,所述第二数据库语句为:所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句;向所述数据库服务器发送第二数据库语句,包括:向所述数据库服务器重发所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句,以使得所述数据库服务器重新执行所述第二数据库语句。
在本实施例中,当数据库实例出现异常时,若存在未提交的事务,则代理服务器可在数据库实例结束异常状态后,协助数据库实例恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,代理服务器可重发被回退的数据库语句,数据库服务器可在正确的状态下重复执行被回退的数据库语句。基于这种实施方式,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持。一方面,降低了事务保持对客户端的依赖,有利于降低客户端的开发成本,另一方面,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持的效率。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤401至步骤404的执行主体可以为设备A;又比如,步骤401和402的执行主体可以为设备A,步骤403的执行主体可以为设备B;等等。
另外,在上述实施例及附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如401、402等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
图6示意了本申请一示例性实施例提供的服务器的结构示意图,该服务器上可部署数据库,以实现前述实施例记载的事务保持系统中的数据库服务器。如图6所示,该服务器包括:存储器601、处理器602以及通信组件603。
存储器601,用于存储计算机程序,并可被配置为存储其它各种数据以支持在服务器上的操作。这些数据的示例包括用于在服务器上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
其中,存储器601可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
处理器602,与存储器601耦合,用于执行存储器601中的计算机程序,以用于:在数据库实例结束异常状态后,确定未提交的事务的回退日志;响应代理服务器发送的事务恢复请求,重建目标事务;所述事务恢复请求包括:所述目标事务的标识以及所述目标事务的回退节点的标识;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;从所述未提交事务的回退日志中,确定所述目标事务的回退日志;根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本;接收所述代理服务器发送的第二数据库语句,所述第二的数据库语句为所述回退节点的下一条数据库语句;执行所述第二数据库语句,以保持执行所述目标事务。
进一步可选地,处理器602还用于:在数据库实例进入异常状态之前,接收所述代理服务器发送的所述目标事务的数据库语句;执行所述数据库语句,并在所述目标事务的回退日志中标记所述数据库语句的标识;在所述数据库语句执行结束时,将所述目标事务的标识以及所述数据库语句在所述回退日志中的标识发送至所述代理服务器。
进一步可选地,处理器602在执行所述数据库语句,并在所述目标事务的回退日志中标记所述数据库语句的标识时,具体用于:根据所述数据库语句,对所述数据库进行至少一次修改操作;在每次执行修改操作时,记录当前执行的修改操作对应的操作标识;其中,所述目标事务对所述数据库的多个修改操作对应的操作标识为逐个递增的数字。
进一步可选地,所述第二数据库语句为:所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句;所述第一数据库数据为:所述第二数据库语句的上一条结束执行的数据库语句。
进一步可选地,处理器602在响应代理服务器发送的针对目标事务的事务恢复请求,重建目标事务时,具体用于:响应所述代理服务器的连接请求,创建连接;判断所述事务恢复请求是否为有效请求;若为有效请求,则根据所述目标事务的事务信息,对所述连接进行配置,以将所述连接与所述目标事务进行绑定。
进一步可选地,处理器602在判断所述事务恢复请求是否为有效请求时,具体用于:在所述数据库实例结束异常状态后,若所述代理服务器在设定时长范围内发送所述事务恢复请求,则确定所述事务恢复请求为有效请求;或者, 若所述回退节点对应的回滚数据量小于设定的数量阈值,则确定所述事务恢复请求为有效请求。
进一步,如图6所示,该服务器还包括:电源组件604等其它组件。图6中仅示意性给出部分组件,并不意味着服务器只包括图6所示组件。
其中,通信组件603被配置为便于通信组件所在设备和其他设备之间有线或无线方式的通信。通信组件所在设备可以接入基于通信标准的无线网络,如WiFi,2G、3G、4G或5G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件可基于近场通信(NFC)技术、射频识别(RFID)技术、红外数据协会(IrDA)技术、超宽带(UWB)技术、蓝牙(BT)技术和其他技术来实现。
其中,电源组件604,为电源组件所在设备的各种组件提供电力。电源组件可以包括电源管理系统,一个或多个电源,及其他与为电源组件所在设备生成、管理和分配电力相关联的组件。
本实施例中,在事务保持系统中,当数据库实例出现异常时,若存在未提交的事务,则代理服务器可在数据库实例结束异常状态后,协助数据库实例恢复未提交的事务,并将该未提交的事务的数据回滚到指定的回退节点对应的数据版本。在事务恢复并回退数据后,代理服务器可重发被回退的数据库语句,数据库服务器可在正确的状态下重复执行被回退的数据库语句。基于这种实施方式,在数据库结束异常状态后,可在用户无感知的情况下实现未提交的事务的保持。一方面,降低了事务保持对客户端的依赖,有利于降低客户端的开发成本,另一方面,可基于回退节点准确地将事务的数据回退到某个版本,有利于降低事务恢复所需的时间成本以及资源成本,提升事务保持的效率。
图6示意图的服务器实现为事务保持系统中的数据库的代理服务器时,还可执行如下的事务保持方法,其中,处理器602用于:在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点;根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求,以使得所述数据库服务器重建所述目标事务并将所述目标事务的数据回滚至所述回退节点对应的数据版本;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;向所述数据库服务器发送第二数据库语句,以使得所述数据库服务器根据所述第二数据库语句保持执行所述目标事务;所述第二数据库语句为所述回退节点的下一条数据库语句。
进一步可选地,处理器602还用于:在数据库实例进入异常状态之前,向所述数据库服务器发送所述目标事务的数据库语句;在所述数据库语句执行结束后,接收所述数据库服务器发送的所述目标事务的标识,以及,所述数据库语句在所述目标事务的回退日志中的标识。
进一步可选地,所述第二数据库语句为:所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句;处理器602向所述数据库服务器发送第二数据库语句时,具体用于:向所述数据库服务器重发所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句,以使得所述数据库服务器重新执行所述第二数据库语句。
相应地,本申请实施例还提供一种存储有计算机程序的计算机可读存储介质,计算机程序被执行时能够实现上述方法实施例中可由服务器执行的各步骤。
相应地,本申请实施例还提供一种计算机程序,包括计算机程序/指令,其中,当计算机程序被处理器执行时,致使处理器实现上述方法实施例中可由服务器执行的各步骤。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器 (CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器 (RAM) 和/或非易失性内存等形式,如只读存储器 (ROM) 或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存 (PRAM)、静态随机存取存储器 (SRAM)、动态随机存取存储器 (DRAM)、其他类型的随机存取存储器 (RAM)、只读存储器 (ROM)、电可擦除可编程只读存储器 (EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘 (DVD) 或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体 (transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种数据库事务保持的方法,适用于数据库服务器,包括:
在数据库实例结束异常状态后,确定未提交的事务的回退日志;
响应代理服务器发送的事务恢复请求,重建目标事务;所述事务恢复请求包括:所述目标事务的标识以及所述目标事务的回退节点的标识;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;
从所述未提交事务的回退日志中,确定所述目标事务的回退日志;
根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本;
接收所述代理服务器发送的第二数据库语句,所述第二数据库语句为所述回退节点的下一条数据库语句;
执行所述第二数据库语句,以保持执行所述目标事务。
2.根据权利要求1所述的方法,还包括:
在数据库实例进入异常状态之前,接收所述代理服务器发送的所述目标事务的数据库语句;
执行所述数据库语句,并在所述目标事务的回退日志中标记所述数据库语句的标识;
在所述数据库语句执行结束时,将所述目标事务的标识以及所述数据库语句在所述回退日志中的标识发送至所述代理服务器。
3.根据权利要求2所述的方法,其中,执行所述数据库语句,并在所述目标事务的回退日志中标记所述数据库语句的标识,包括:
根据所述数据库语句,对所述数据库进行至少一次修改操作;在每次执行修改操作时,记录当前执行的修改操作对应的操作标识;
其中,所述目标事务对所述数据库的多个修改操作对应的操作标识为逐个递增的数字。
4.根据权利要求1所述的方法,其中,所述第二数据库语句为:所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句;所述第一数据库语句为:所述第二数据库语句的上一条结束执行的数据库语句。
5.根据权利要求1-4任一项所述的方法,其中,响应代理服务器发送的针对目标事务的事务恢复请求,重建目标事务,包括:
响应所述代理服务器的连接请求,创建连接;
判断所述事务恢复请求是否为有效请求;
若为有效请求,则根据所述目标事务的事务信息,对所述连接进行配置,以将所述连接与所述目标事务进行绑定。
6.根据权利要求5所述的方法,其中,判断所述事务恢复请求是否为有效请求,包括:
在所述数据库实例结束异常状态后,若所述代理服务器在设定时长范围内发送所述事务恢复请求,则确定所述事务恢复请求为有效请求;或者,
若所述回退节点对应的回滚数据量小于设定的数量阈值,则确定所述事务恢复请求为有效请求。
7.一种数据库事务保持的方法,适用于代理服务器,包括:
在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点;
根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求,以使得所述数据库服务器重建所述目标事务并将所述目标事务的数据回滚至所述回退节点对应的数据版本;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;
向所述数据库服务器发送第二数据库语句,以使得所述数据库服务器根据所述第二数据库语句保持执行所述目标事务;所述第二数据库语句为所述回退节点的下一条数据库语句。
8.根据权利要求7所述的方法,还包括:
在数据库实例进入异常状态之前,向所述数据库服务器发送所述目标事务的数据库语句;
在所述数据库语句执行结束后,接收所述数据库服务器发送的所述目标事务的标识,以及,所述数据库语句在所述目标事务的回退日志中的标识。
9.根据权利要求7所述的方法,其中,所述第二数据库语句为:所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句;
向所述数据库服务器发送第二数据库语句,包括:
向所述数据库服务器重发所述数据库实例进入异常状时,所述目标事务中未结束执行的数据库语句,以使得所述数据库服务器重新执行所述第二数据库语句。
10.一种服务器,包括:存储器和处理器;
所述存储器用于存储一条或多条计算机指令;
所述处理器用于执行所述一条或多条计算机指令以用于:执行权利要求1-9任一项所述的数据库事务保持的方法中的步骤。
11.一种存储有计算机程序的计算机可读存储介质,其中,计算机程序被处理器执行时能够实现权利要求1-9任一项所述的数据库事务保持的方法。
12.一种事务保持系统,包括:数据库的代理服务器以及数据库服务器;
所述代理服务器,用于:在数据库实例结束异常状态后,确定未提交的目标事务以及所述目标事务的回退节点;根据所述目标事务的标识以及所述回退节点的标识,向数据库服务器发送事务恢复请求;所述回退节点的标识包括所述目标事务中结束执行的第一数据库语句的标识;向所述数据库服务器发送第二数据库语句;所述第二数据库语句为所述回退节点的下一条数据库语句;
所述数据库服务器,用于:在数据库实例结束异常状态后,确定未提交的事务的回退日志;响应代理服务器发送的事务恢复请求,重建目标事务;从所述未提交事务的回退日志中,确定所述目标事务的回退日志;根据所述目标事务的回退日志,将所述目标事务的数据回滚至所述回退节点对应的数据版本;接收所述代理服务器发送的第二数据库语句,并执行所述第二数据库语句,以保持执行所述目标事务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110706679.6A CN113254425B (zh) | 2021-06-24 | 2021-06-24 | 数据库事务保持的方法、设备、系统、程序及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110706679.6A CN113254425B (zh) | 2021-06-24 | 2021-06-24 | 数据库事务保持的方法、设备、系统、程序及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254425A true CN113254425A (zh) | 2021-08-13 |
CN113254425B CN113254425B (zh) | 2022-01-11 |
Family
ID=77189626
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110706679.6A Active CN113254425B (zh) | 2021-06-24 | 2021-06-24 | 数据库事务保持的方法、设备、系统、程序及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254425B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114510495A (zh) * | 2022-04-21 | 2022-05-17 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
CN114925084A (zh) * | 2022-05-31 | 2022-08-19 | 易保网络技术(上海)有限公司 | 分布式事务处理方法、系统、设备及可读存储介质 |
CN115098537A (zh) * | 2021-10-19 | 2022-09-23 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
WO2023111910A1 (en) * | 2021-12-16 | 2023-06-22 | International Business Machines Corporation | Rolling back database transaction |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104679841A (zh) * | 2015-02-11 | 2015-06-03 | 北京京东尚科信息技术有限公司 | 一种消费端数据流复制方法及系统 |
CN105608086A (zh) * | 2014-11-17 | 2016-05-25 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN106557514A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
US20180322156A1 (en) * | 2017-05-08 | 2018-11-08 | Sap Se | Atomic processing of compound database transactions that modify a metadata entity |
CN109144785A (zh) * | 2018-08-27 | 2019-01-04 | 北京百度网讯科技有限公司 | 用于备份数据的方法和装置 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
CN110019050A (zh) * | 2017-10-19 | 2019-07-16 | 中兴通讯股份有限公司 | 一种数据回滚方法、系统、设备及计算机可读存储介质 |
CN111221869A (zh) * | 2018-11-27 | 2020-06-02 | 北京京东振世信息技术有限公司 | 一种追踪数据库事务时间和分析数据库锁的方法和装置 |
CN112256656A (zh) * | 2019-07-22 | 2021-01-22 | 中兴通讯股份有限公司 | 事务回滚方法及装置、数据库、系统、计算机存储介质 |
-
2021
- 2021-06-24 CN CN202110706679.6A patent/CN113254425B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105608086A (zh) * | 2014-11-17 | 2016-05-25 | 中兴通讯股份有限公司 | 分布式数据库系统的事务处理方法及装置 |
CN104679841A (zh) * | 2015-02-11 | 2015-06-03 | 北京京东尚科信息技术有限公司 | 一种消费端数据流复制方法及系统 |
CN106557514A (zh) * | 2015-09-29 | 2017-04-05 | 中兴通讯股份有限公司 | 一种分布式事务回滚方法及装置 |
US20180322156A1 (en) * | 2017-05-08 | 2018-11-08 | Sap Se | Atomic processing of compound database transactions that modify a metadata entity |
CN110019050A (zh) * | 2017-10-19 | 2019-07-16 | 中兴通讯股份有限公司 | 一种数据回滚方法、系统、设备及计算机可读存储介质 |
CN109144785A (zh) * | 2018-08-27 | 2019-01-04 | 北京百度网讯科技有限公司 | 用于备份数据的方法和装置 |
CN111221869A (zh) * | 2018-11-27 | 2020-06-02 | 北京京东振世信息技术有限公司 | 一种追踪数据库事务时间和分析数据库锁的方法和装置 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
CN112256656A (zh) * | 2019-07-22 | 2021-01-22 | 中兴通讯股份有限公司 | 事务回滚方法及装置、数据库、系统、计算机存储介质 |
Non-Patent Citations (1)
Title |
---|
宋伟等: "基于事务回退的事务存储系统的故障恢复", 《软件学报》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115098537A (zh) * | 2021-10-19 | 2022-09-23 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
CN115098537B (zh) * | 2021-10-19 | 2023-03-10 | 腾讯科技(深圳)有限公司 | 事务执行方法、装置、计算设备及存储介质 |
WO2023111910A1 (en) * | 2021-12-16 | 2023-06-22 | International Business Machines Corporation | Rolling back database transaction |
CN114510495A (zh) * | 2022-04-21 | 2022-05-17 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
CN114510495B (zh) * | 2022-04-21 | 2022-07-08 | 北京安华金和科技有限公司 | 一种数据库业务数据一致性处理方法和系统 |
CN114925084A (zh) * | 2022-05-31 | 2022-08-19 | 易保网络技术(上海)有限公司 | 分布式事务处理方法、系统、设备及可读存储介质 |
CN114925084B (zh) * | 2022-05-31 | 2023-07-21 | 易保网络技术(上海)有限公司 | 分布式事务处理方法、系统、设备及可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113254425B (zh) | 2022-01-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113254425B (zh) | 数据库事务保持的方法、设备、系统、程序及存储介质 | |
CN109241185B (zh) | 一种数据同步的方法以及数据同步装置 | |
CN109739935B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
US5721918A (en) | Method and system for fast recovery of a primary store database using selective recovery by data type | |
US10942823B2 (en) | Transaction processing system, recovery subsystem and method for operating a recovery subsystem | |
US7043504B1 (en) | System and method for parallel primary and secondary backup reading in recovery of multiple shared database data sets | |
US8898109B2 (en) | Automatic transaction retry after session failure | |
JPH02310665A (ja) | 分散トランザクション処理システム | |
CN105574187A (zh) | 一种异构数据库复制事务一致性保障方法及系统 | |
US20100017642A1 (en) | Distributed Transaction Processing System Having Resource Managers That Collaborate To Decide Whether To Commit Or Abort A Transaction In Response To Failure Of A Transaction Manager | |
US20230004576A1 (en) | Data synchronization method and device for databases, and storage medium | |
CN115292407A (zh) | 同步方法、设备及存储介质 | |
CN110413687B (zh) | 基于节点互证校验的分布式事务故障处理方法及相关设备 | |
CN109783578B (zh) | 数据读取方法、装置、电子设备以及存储介质 | |
EP0834122B1 (en) | Synchronisation procedure in a routing node | |
EP4276651A1 (en) | Log execution method and apparatus, and computer device and storage medium | |
US10983709B2 (en) | Methods for improving journal performance in storage networks and devices thereof | |
CN111666266A (zh) | 一种数据迁移方法及相关设备 | |
GB2303474A (en) | Optimized synchronisation procedure | |
US20180032555A1 (en) | Object database system including an object-specific historical attribute-change information system | |
WO2020094063A1 (zh) | 存储数据的方法、装置、存储介质及电子装置 | |
CN112948484A (zh) | 分布式数据库系统和数据灾备演练方法 | |
CN114281603A (zh) | 一种事务对应的消息的发送方法及装置 | |
CN111949223B (zh) | 一种双活卷扩容方法以及相关装置 | |
CN113297134B (zh) | 数据处理系统及数据处理方法、装置、电子设备 |
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 |