CN108388487B - 一种数据装载方法、装置、设备和存储介质 - Google Patents
一种数据装载方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN108388487B CN108388487B CN201810171053.8A CN201810171053A CN108388487B CN 108388487 B CN108388487 B CN 108388487B CN 201810171053 A CN201810171053 A CN 201810171053A CN 108388487 B CN108388487 B CN 108388487B
- Authority
- CN
- China
- Prior art keywords
- node
- data
- sent
- database server
- nodes
- 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
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/1458—Management of the backup or restore process
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
Abstract
本发明公开一种数据装载方法、装置、设备和存储介质,该方法包括:将待发送信息填入空闲结点,对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表;依据结点标记结果,将待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表;若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将待回收结点重新挂载到所述待发送结点链表;将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。本发明通过将待装载数据临时缓存于待回收结点,能够在主备数据库服务器切换的情况保证数据正常装载,提高数据装载的完整性和可靠性。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据装载方法、装置、设备和存储介质。
背景技术
随着互联网带动数据库技术的发展,数据库承载着越来越多对于数据的组织、存储和管理等操作,因此对于数据服务的完整性和可靠性的要求也越来越高。
在生产环境中,通常不止有一台数据库服务器对外提供服务,即在主数据库服务器对外提供服务的同时,还存在一台备用数据库服务器在一旁随时待命。一旦主数据库服务器出现宕机等异常情况导致不能提供正常服务时,备用数据库服务器将自动接管主数据库服务器对外提供服务。
生产环境中常常存在数据迁移等业务的存在,需要将原始数据导入到数据库中以便管理。然而,在向可进行主数据库服务器与备用数据库服务器切换的数据库系统导入数据时,一旦出现在数据的发送或者提交时主数据库服务器出现异常,而备用数据库服务器接管主数据库服务器的情况时,客户端需要重新准备数据的发送环境,但由于主数据库服务器可能会在数据发送时、数据提交前或者数据提交后发生异常,因此前两种情况将会导致此阶段传输的数据发生丢失或者装载发生终止,进而影响数据的正常装载,降低数据装载的完整性和可靠性。
发明内容
本发明实施例提供了一种数据装载方法、装置、设备和存储介质,能够在主备数据库服务器切换的情况下保证数据的正常装载,提高数据装载的完整性和可靠性。
第一方面,本发明实施例提供了一种数据装载方法,包括:
将待发送信息填入空闲结点,根据所述待发送信息对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有所述待发送信息的待发送结点;
依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点;
若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将所述待回收结点重新挂载到所述待发送结点链表;
将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。
第二方面,本发明实施例提供了一种数据装载装置,包括:
信息处理模块,用于将待发送信息填入空闲结点,根据所述待发送信息对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有所述待发送信息的待发送结点;
数据装载模块,用于依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点;
主备切换模块,用于若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将所述待回收结点重新挂载到所述待发送结点链表;
信息重发模块,用于将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。
第三方面,本发明实施例提供了一种设备,包括:
一个或多个处理器;
存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明任意实施例所述的数据装载方法。
第四方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例所述的数据装载方法。
本发明通过将待发送信息填入空闲结点并进行结点标记,将标记后的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有待发送信息的待发送结点,等待信息的发送;当待发送结点中的信息被发送至主数据库服务器的同时,将待发送结点挂载到待回收结点链表,将待发送信息临时缓存于待回收结点链表中的待回收结点中,同样待回收结点标记有相同的结点标记。当主数据库服务器工作状态异常而无法完成数据的接收或装载时,则在主数据库服务器切换至备数据库服务器之后,将待回收结点中临时缓存的信息重新发送至备数据库服务器继续进行数据的接收和装载。本发明通过将待装载数据和/或控制命令暂存于待回收结点中,解决了主数据库服务器出现异常而备数据库服务器自动接管数据装载时,待装载数据出现缺失或装载出现中断的问题,实现在主备数据库服务器切换的情况下保证数据的正常装载,提高数据装载的完整性和可靠性。
附图说明
图1为本发明实施例一提供的一种数据装载方法的流程图;
图2为本发明实施例二提供的主备切换时待装载数据发送的流程图;
图3为本发明实施例三提供的主备切换时数据装载的流程图;
图4为本发明实施例四提供的退出数据装载的流程图;
图5为本发明实施例五提供的一种数据装载装置的结构示意图;
图6为本发明实施例六提供的一种设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1为本发明实施例一提供的一种数据装载方法的流程图,本实施例可适用于发送端将本地数据向数据库进行装载的情况,该方法可由数据装载装置来执行。该方法具体包括如下步骤:
步骤110、将待发送信息填入空闲结点,根据待发送信息对空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有待发送信息的待发送结点。
在本发明具体实施例中,待发送信息可以包括发送端下发的待装载数据和控制命令,其中控制命令又可以包括提交命令和退出命令。其中,提交命令用于控制数据库服务器将接收到的全部待装载数据提交至数据库,以完成发送端到数据库的数据装载,保证数据永久存储于数据库中,即使在系统异常出现重启等情况下仍然能够得到或恢复出正确且完整的数据;退出命令用于停止整个数据的发送过程,并清空释放数据装载过程中使用的结点空间。
在本实施例中,数据结点是指用于保存待发送信息的结点空间,包括空闲结点、待发送结点和待回收结点,都是在数据的装载过程中动态生成的独立的存储单元。其中,空闲结点位于空闲结点链表中,为预分配的一批用于任务线程所需结点空间,用于存储发送端下发的待发送信息;当待发送信息为待装载数据时,用于将待发送信息填入空闲结点的任务线程会首先将待装载数据转换为数据库服务器能够识别的且与空闲结点链表中列出的数据的类型相同的数据类型,其次将类型转换后的待装载数据填入空闲结点中。其中,任务线程是指执行对发送端下达的待发送信息进行处理、将处理后的信息填入至空闲结点并将空闲结点挂载到待发送结点的线程。待发送结点位于待发送结点链表中,是发送线程的数据结点来源地,任务线程处理后数据结点的目的地,初始结点个数为0个,用于存储发送线程即将发送的待发送信息。其中,发送线程是指执行待发送结点和数据库服务器或回收结点之间信息交互的线程。待回收结点位于待回收结点链表中,用于存储被发送至主数据库服务器但未提交的待发送信息,对未提交成功的待装载数据和提交命令进行临时缓存。
在本实施例中,结点标记是指根据待发送信息的具体内容,对空闲结点进行标记,以便于当空闲结点挂载到待发送结点链表时,发送线程可以直接根据结点标记执行后续操作。相应的,结点标记至少可以包括三种类型,即普通数据标记、提交标记以及退出标记。每一个被用到的结点都会被置上一种结点标记,且在整个数据的装载过程中至始至终将一直使用这个结点标记。可以理解的是,普通数据标记是指对填有待装载数据的空闲结点进行的标记,在后续操作中,用于指示发送线程将待发送结点中的待装载数据发送至主数据库服务器,并将该待发送结点挂载到待回收结点链表;提交标记是指对填有提交命令的空闲结点进行的标记,在后续操作中,用于指示发送线程将待发送结点中的提交命令发送至主数据库服务器,并将该待发送结点挂载到待回收结点链表;退出标记是指对填有退出命令的空闲结点进行的标记,在后续操作中,用于指示任务线程和发送线程退出数据装载,并释放所有结点空间。
示例性的,任务线程读取到一批待装载数据并经过类型转换处理后,任务线程会从空闲结点链表中摘取一个空闲结点,并将类型转换后的待装载数据填入到该空闲结点内。若要填完一批待装载数据,可能需要用到多个空闲结点。随后,这些空闲结点携带着真实的待装载数据,并被置上普通数据标记,被任务线程挂载到待发送结点链表中。
示例性的,当一批或者多批待装载数据发送完成后,任务线程会申请一个空闲结点用于存放控制服务器将数据永久保存于数据库中的提交命令,因此该空闲结点不携带任何真实数据。置上提交标记后,该空闲结点同样被任务线程挂载到待发送结点链表中。
再例如,当所需装载的数据都装载完毕后,任务线程会申请一个空闲结点用于存放控制发送端本地数据装载系统退出的退出命令,该空闲结点不携带任何真实数据,并置上退出标记,该空闲结点同样被任务线程挂载到待发送结点链表中,并自动退出数据装载。
步骤120、依据结点标记结果,将待发送结点中的待发送信息发送至主数据库服务器,并将待发送结点挂载到待回收结点链表,生成带有结点标记并存储有待发送信息的待回收结点。
在本发明具体实施例中,如上所述,若待发送结点的结点标记为普通数据标记,则该待发送结点中存储有待装载数据,将待装载数据发送至主数据库服务器,此时,主数据库服务器接收到待装载数据,同时数据库的内存中已经存在该批待装载数据;并将待发送结点挂载到待回收结点链表进行待装载数据的临时缓存。若待发送结点的结点标记为提交标记,则该待发送结点中存储有用于控制主数据库服务器将接收到的全部待装载数据提交至数据库的提交命令,将提交命令发送至主数据库服务器,主数据库服务器根据提交命令,对接收到的数据做持久化操作,确保接收到的待装载数据永久保存于数据库中而不丢失;并将待发送结点挂载到待回收结点链表进行提交命令的临时缓存。然而,对于标记为退出标记的待发送结点,则该待发送结点中存储有用于指示退出数据装载的退出命令,任务线程将该空闲结点挂载至待发送结点链表后,自动退出数据装载;发送线程摘取到此待发送结点时,根据待发送结点的结点标记会自动退出数据装载,并进行空间清理以及资源释放等操作。
步骤130、若接收到主数据库服务器反馈的状态异常响应,则在主数据库服务器切换为预先准备的备数据库服务器之后,将待回收结点重新挂载到待发送结点链表。
在本发明具体实施例中,当待装载数据或提交命令被发送至主数据库服务器后,主数据库服务器会及时反馈给发送端一个状态响应,以此来告知发送端主数据库服务器工作状态是否正常,即待装载数据的发送或装载是否成功。根据状态响应判断主数据库服务器的工作状态是否异常,若接收到主数据库服务器反馈的状态异常响应,则此时主数据库服务器出现宕机等异常情况导致不能进行数据的正常接收和装载,进而该主数据库服务器可以通过自动或者人工触发的方式切换为预先准备的在一旁随时待命的备数据库服务器,备数据库服务器自动接管该主数据库服务器的数据装载任务,继续进行主服务器执行数据装载时的所有操作。
然而,在主数据库服务器和备数据库服务器进行切换时,极易导致数据的丢失或装载的终止。为了保证此时数据装载的完整性和可靠性,在数据库服务器发生主备切换时,应当判断待装载数据是否需要重新发送和装载。
当此时的结点标记为普通数据标记时,则说明发送至主数据库服务器且并未提交的待装载数据,由于主数据库服务器的异常,该部分数据已全部失效,进而将此时待回收结点重新挂载到待发送结点链表中,等待重新发送至备数据库服务器,以完成待装载数据的批量发送。
当此时的结点标记为提交标记时,则查询数据库的数据增量与发送端已发送的数据量是否一致,若数据量一致,则说明数据提交成功,表示该批数据装载成功,即可释放待回收结点;然而,若数据量不一致,则说明数据提交失败,因此同数据发送阶段主数据库服务器发生异常时,主数据库服务器内已接收但未提交成功的待装载数据已全部失效,进而将此时待回收结点重新挂载到待发送结点链表中,等待重新发送至备数据库服务器。
步骤140、将待发送结点中的待发送信息重新发送至备数据库服务器。
在本发明具体实施例中,只有数据库服务器发生了主备切换时,才存在可能重发送数据的情况,若没有主备切换则无需重发数据。因此,在主数据库服务器出现宕机等异常情况导致不能进行数据的正常接收和装载时,该主数据库服务器切换为备数据库服务器,备数据库服务器自动接管该主数据库服务器的数据装载任务。在确定数据需要重新发送时,则将待发送结点中的待发送信息重新发送至备数据库服务器,以使备数据库服务器继续完成如主数据库服务器的数据装载的所有操作。
本实施例的技术方案,通过将待发送信息填入空闲结点并进行结点标记,将标记后的空闲结点挂载到待发送结点链表等待信息的发送;当待发送结点中的信息被发送至主数据库服务器的同时,将待发送结点挂载到待回收结点链表作为信息的临时缓存。当主数据库服务器工作状态异常而无法完成数据的接收或装载时,则在主数据库服务器切换至备数据库服务器之后,将待回收结点中临时缓存的信息重新发送至备数据库服务器继续进行数据的接收和装载。本发明通过将待装载数据和/或控制命令暂存于待回收结点中,解决了主数据库服务器出现异常而备数据库服务器接管数据装载时,待装载数据出现缺失或装载出现中断的问题,实现在主备数据库服务器切换的情况下保证数据的正常装载,提高数据装载的完整性和可靠性。
实施例二
本实施例在上述实施例一的基础上,提供了一种数据装载的一个优选实施方式,能够在待发送信息为待装载数据的情况下完成主备切换时待装载数据向服务器的批量发送。图2为本发明实施例二提供的主备切换时待装载数据发送的流程图,如图2所示,该方法包括以下具体步骤:
步骤201、若待发送信息为待装载数据,则将待装载数据转换为符合服务器端的数据类型。
在本发明具体实施例中,待装载数据是指发送端下达的要装载进数据库进行永久保存的数据。因此,为了保护数据的完整性和可靠性,应当将装载前的待装载数据首先转换为数据库服务器可以识别的数据类型,且该数据类型与空闲结点链表中列出的数据的类型相同。以使在整个数据的装载过程中,待装载数据可以被正确识别出,进而不会导致数据出现乱码等无法识别的情况,避免待装载数据在装载过程中被损坏。
步骤202、将待发送信息填入空闲结点。
在本发明具体实施例中,任务线程读取到一批待装载数据并经过类型转换处理后,任务线程会从空闲结点链表中摘取一个空闲结点,并将类型转换后的待装载数据填入该空闲结点。值得注意的是,若要填完一批待装载数据,可能需要用到多个空闲结点。
步骤203、若待发送信息为待装载数据,则将该空闲结点标记为普通数据标记。
步骤204、将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有待发送信息的待发送结点。
在本发明具体实施例中,填上待装载数据的空闲结点中存储有真实的待装载数据,相应的,将该空闲结点标记为普通数据标记。并将标记的空闲结点挂载到待发送结点链表,在待发送结点链表中形成带有结点标记并存储有待发送信息的待发送结点,等待待装载数据的发送。
步骤205、若待发送结点的结点标记为普通数据标记,则将待装载数据发送至主数据库服务器,并将待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点。
在本发明具体实施例中,发送线程从待发送结点链表中摘取到待发送结点,根据结点标记结果,若待发送结点的结点标记为普通数据标记,则将待装载数据发送至主数据库服务器,完成待装载数据的发送。同时,将待发送结点挂载到待回收结点链表,在待回收结点链表中形成带有结点标记并存储有待发送信息的待回收结点,对发送至主数据库服务器但未提交的待装载数据进行临时缓存。
步骤206、接收主数据库服务器反馈的状态响应。
在本发明具体实施例中,每当待装载数据被发送至主数据库服务器时,可以视为完成了一次数据发送请求,则相应的主数据库服务器反馈给发送端一个状态响应,以此告知发送端主数据库的工作状态。
步骤207、根据状态响应判断主数据库服务器的工作状态是否异常,若是,则执行步骤208;若否,则执行步骤211。
步骤208、若接收到主数据库服务器反馈的状态异常响应,则主数据库服务器切换为预先准备的备数据库服务器。
在本发明具体实施例中,根据状态响应若判断主数据库服务器的工作状态异常,则表示此时主数据库服务器出现宕机等异常情况导致主数据库服务器不能进行数据的正常装载。进而该主数据库服务器切换为预先准备的在一旁随时待命的备数据库服务器,备数据库服务器自动接管该主数据库服务器的数据装载任务,继续进行主服务器执行数据装载时的所有操作。
步骤209、将待回收结点重新挂载到待发送结点链表。
步骤210、将待发送结点中的待装载数据重新发送至备数据库服务器。
在本发明具体实施例中,由于主数据库服务器是在待装载数据的发送阶段出现了异常,因此这部分数据还未被永久保存于数据库完成数据的装载,且待回收结点还临时缓存着这部分已发送的待装载数据。但由于主数据库服务器的异常,主数据库服务器中的该部分数据已全部失效,因此,将此时待回收结点链表上的待回收结点重新挂载到待发送结点链表中,将待回收结点中临时缓存的待装载数据重新发送至备数据库服务器,以完成待装载数据的批量发送。
步骤211、待装载数据发送成功。
在本发明具体实施例中,同样可以根据备数据库服务器反馈的状态响应,来判断备数据库服务器的工作状态是否正常。若备数据库服务器工作状态正常,则待装载数据发送成功。进而后续批量数据的发送以及命令的下达,都需发送至备数据库服务器,以此完成数据的发送和装载。若备数据库服务器工作状态异常,则重复上述数据库服务器主备切换的操作,采用当前备数据库服务器的备用数据库服务器,继续进行后续批量数据的装载。
本实施例的技术方案,通过将类型转换后的待装载数据填入空闲结点并标记为普通数据标记,将标记后的空闲结点挂载到待发送结点链表等待数据的发送;当待发送结点中的待装载数据被发送至主数据库服务器的同时,将待发送结点挂载到待回收结点链表作为待装载数据的临时缓存。当主数据库服务器工作状态异常而无法完成数据的接收或装载时,则在主数据库服务器切换至备数据库服务器之后,将待回收结点中临时缓存的待装载数据重新发送至备数据库服务器继续进行数据的接收和装载。本发明在待装载数据的发送阶段,通过将待装载数据暂存于待回收结点中,解决了主备数据库服务器切换时,已存入主数据库服务器的待装载数据出现丢失的问题,实现了在主备数据库服务器切换的情况下保证数据的正常发送,提高数据装载的完整性和可靠性。
实施例三
本实施例在上述实施例一的基础上,提供了一种数据装载的一个优选实施方式,能够在待发送信息为提交命令的情况下完成主备切换时数据的成功装载。图3为本发明实施例三提供的主备切换时数据装载的流程图,如图3所示,该方法包括以下具体步骤:
步骤301、将待发送信息填入空闲结点。
步骤302、若待发送信息为提交命令,则将该空闲结点标记为提交标记。
在本发明具体实施例中,当待装载数据已经发送至主数据库服务器后,主数据库服务器接收到待装载数据,同时数据库的内存中已经存在该批待装载数据。当发送端下达提交命令时,提交命令用于控制主数据库服务器将接收到的全部待装载数据提交至数据库,以完成数据的装载。示例性的,提交命令可以控制数据库服务器将接收到的全部待装载数据写入数据库的磁盘中,和/或将数据库相应的变化写入数据库的日志中,或者其他任何可以实现数据永久保存于数据库中的操作方式。以保证在即使系统异常之后再重启等操作后,仍然能够正确得到或恢复出完整的数据。填有提交命令的空闲结点中不携带任何真实的数据信息,将该空闲结点标记为提交标记,以使发送线程根据提交标记进行控制命令的发送。
步骤303、将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有待发送信息的待发送结点。
步骤304、若待发送结点的结点标记为提交标记,则将提交命令发送至主数据库服务器,并将待发送结点挂载到待回收结点链表;其中,所述提交命令用于控制主数据库服务器将接收到的全部待装载数据提交至数据库。
在本发明具体实施例中,与数据的发送相同,将待发送结点中存储的提交命令发送至主数据库服务器,并将待发送结点挂载到待回收结点链表,对提交命令进行临时缓存。
步骤305、接收主数据库服务器反馈的状态响应。
在本发明具体实施例中,每当提交命令被发送至主数据库服务器时,可以视为完成了一次控制命令发送请求,则相应的主数据库服务器反馈给发送端一个状态响应,以此告知发送端主数据库的工作状态。
步骤306、根据状态响应判断主数据库服务器的工作状态是否异常,若是,则执行步骤307;若否,则执行步骤311。
步骤307、若接收到主数据库服务器反馈的状态异常响应,则主数据库服务器切换为预先准备的备数据库服务器。
步骤308、若待回收结点的结点标记为提交标记,则查询数据库的数据增量与发送端已发送的数据量是否一致,若否,执行步骤309;若是,执行步骤311。
在本发明具体实施例中,当此时的结点标记为提交标记时,则查询数据库的数据增量与发送端已发送的数据量是否一致。若数据库的数据增量与发送端已发送的数据量一致,则说明数据提交成功,表示该批数据装载成功,进而即使此时主数据库服务器出现异常,也不会对该批数据的装载带来不良的影响。然而,若数据库的数据增量与发送端已发送的数据量不一致,则说明数据提交失败,因此由于主数据库服务器的异常,主数据库服务器内已接收但未提交成功的待装载数据已全部失效。
步骤309、提交失败,将待回收结点重新挂载到待发送结点链表中;其中,待回收结点中存储有待装载数据和提交命令。
在本发明具体实施例中,当主数据库服务器出现异常且待装载数据提交失败时,主数据库服务器内已接收但未提交成功的待装载数据已全部失效。进而将临时缓存有待装载数据和提交命令的待回收结点重新挂载到待发送结点链表中,等待数据和提交命令的重新发送和装载。
步骤310、将待发送结点中的待装载数据和提交命令重新发送至备数据库服务器;其中,所述提交命令用于控制备数据库服务器将接收到的全部待装载数据一并提交至数据库。
在本发明具体实施例中,待发送结点中的待装载数据和提交命令重新发送至备数据库服务器,保证了主数据库服务器中已失效的待装载数据重新发送到备数据库服务器,而不会导致此部分数据的丢失或装载的终止。且备数据库服务器根据重新收到的提交命令,将该部分重新接收到的待装载数据一并提交至数据库中,在临时缓存数据的成功接收之后同时完成了该部分数据的装载。保证主备切换时数据的正常发送和装载,提高数据装载时数据的完整性和可靠性。
步骤311、数据装载成功,释放待回收结点。
在本发明具体实施例中,当待装载数据成功提交后,即可视为数据装载成功。此时无需再对成功装载的数据和命令进行临时缓存,进而释放待回收结点中的临时缓存数据和命令。并在主备数据库服务器切换后,继续利用备数据库服务器对后续批量的数据进行装载。
本实施例的技术方案,通过将提交命令填入空闲结点并标记为提交标记,将标记后的空闲结点挂载到待发送结点链表等待发送;当待发送结点中的提交命令被发送至主数据库服务器的同时,将待发送结点挂载到待回收结点链表作为提交命令的临时缓存。当主数据库服务器工作状态异常而无法完成数据的接收或装载时,则在主数据库服务器切换至备数据库服务器之后,将回收结点中临时缓存的待装载数据和提交命令重新发送至备数据库服务器继续进行数据的接收和装载。本发明在待装载数据的提交阶段,通过将待装载数据和提交命令暂存于待回收结点链表中,解决了主备数据库服务器切换时,已存入主数据库服务器但未提交成功的待装载数据出现丢失的问题,实现了在主备数据库服务器切换的情况下保证数据的正常发送和装载,提高数据装载的完整性和可靠性。
实施例四
本实施例在上述实施例一的基础上,提供了一种数据装载的一个优选实施方式,能够在待发送信息为退出命令的情况下完成装载的退出。图4为本发明实施例四提供的退出数据装载的流程图,如图4所示,该方法包括以下具体步骤:
步骤410、将待发送信息填入空闲结点。
步骤420、若待发送信息为退出命令,则将该空闲结点标记为退出标记。
在本发明具体实施例中,当所有数据都装载完毕后,发送端会下达退出命令时,所述退出命令用于控制任务线程执行完操作后退出信息的接收、处理和发送,并转告给发送线程直接退出,以完成发送端本地数据装载系统的退出。填有退出命令的空闲结点中不携带任何真实的数据信息,将该空闲结点标记为退出标记,以使发送线程根据退出标记进行控制命令的发送和系统的退出。
步骤430、将标记的空闲结点挂载到待发送结点链表。
在本发明具体实施例中,任务线程将标记的空闲结点挂载到待发送结点链表后,会自动退出装载。
步骤440、退出数据装载,并释放所有结点。
在本发明具体实施例中,发送线程摘取到被附有退出标记的待发送结点时,也会自动退出装载,同时清理本地数据装载系统环境,释放所有结点的空间资源。
本实施例的技术方案,通过将退出命令填入空闲结点并标记为退出标记,任务线程将标记后的空闲结点挂载到待发送结点链表等待命令的发送,并退出数据装载;发送线程根据结点标记完全退出数据装载系统,同时清理本地数据装载系统环境,释放所有结点的空间资源。本发明通过退出命令的逐步下发,使数据装载系统在退出的同时,对系统环境进行清理,释放所有结点的空间,为下一次的数据装载做好前期的准备,便于数据和控制命令的发送和临时缓存,提高数据装载的可靠性。
实施例五
图5为本发明实施例五提供的一种数据装载装置的结构示意图,本实施例可适用于发送端将本地数据向数据库进行装载的情况,该装置可实现本发明任意实施例所述的数据装载方法。该装置具体包括:
信息处理模块510,用于将待发送信息填入空闲结点,根据所述待发送信息对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有所述待发送信息的待发送结点;
数据装载模块520,用于依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点;
主备切换模块530,用于若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将所述待回收结点重新挂载到所述待发送结点链表;
信息重发模块540,用于将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。
优选的,所述数据装载模块520,具体用于:
若所述待发送结点的结点标记为普通数据标记,则将待装载数据发送至所述主数据库服务器;或者,
若所述待发送结点的结点标记为提交标记,则将提交命令发送至所述主数据库服务器;其中,所述提交命令用于控制所述主数据库服务器将接收到的全部待装载数据提交至数据库。
进一步的,所述信息重发模块540,包括:
数据量查询单元,用于若所述待回收结点的结点标记为提交标记,则查询所述数据库的数据增量与发送端已发送的数据量是否一致;
信息重发单元,用于若所述数据库的数据增量与发送端已发送的数据量不一致,则将所述待回收结点重新挂载到所述待发送结点链表中;将所述待发送结点中的待装载数据和提交命令重新发送至所述备数据库服务器;其中,所述待回收结点中存储有待装载数据和提交命令,所述提交命令用于控制所述备数据库服务器将接收到的全部待装载数据一并提交至所述数据库。
优选的,所述信息重发单元,还用于:
若所述待回收结点的结点标记为普通数据标记,则将所述待回收结点挂载到所述待发送结点链表中;将所述待发送结点中的待装载数据重新发送至所述备数据库服务器。
进一步的,所述装置包括:
响应接收模块550,用于在所述若接收到所述主数据库服务器反馈的状态异常响应之前,接收所述主数据库服务器反馈的状态响应;
状态判断模块560,用于根据所述状态响应判断所述主数据库服务器的工作状态是否异常。
进一步的,所述装置包括:
数据类型转换模块570,用于在所述将待发送信息填入空闲结点之前,若所述待发送信息为待装载数据,则将所述待装载数据转换为符合服务器端的数据类型。
进一步的,所述装置包括:
退出模块580,用于在所述将标记的空闲结点挂载到待发送结点链表之后,若所述空闲结点的结点标记为退出标记,则退出数据装载,并释放所有结点。
本实施例的技术方案,通过各个功能模块间的互相配合,实现了信息的填入、结点的标记、信息的发送、信息的临时缓存、主备数据库服务器的切换以及数据的重新发送和装载等功能。本发明通过将待装载数据暂存于回收结点中,解决了主数据库服务器出现异常而备数据库服务器接管数据装载时,待装载数据出现缺失或装载出现中断的问题,实现在主备数据库服务器切换的情况下保证数据的正常装载,提高数据装载的完整性和可靠性。
实施例六
图6为本发明实施例六提供的一种设备的结构示意图。如图6所示,该设备具体包括:一个或多个处理器610,图6中以一个处理器610为例;存储器620,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器610执行,使得一个或多个处理器610实现本发明任意实施例所述的数据装载方法。处理器610与存储器620可以通过总线或其他方式连接,图6中以通过总线连接为例。
存储器620,作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据装载方法对应的程序指令(例如,主备数据库服务器的切换以及回收结点中临时缓存数据的重新发送和装载)。处理器610通过运行存储在存储器620中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据装载方法。
存储器620可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据设备的使用所创建的数据等。此外,存储器620可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器620可进一步包括相对于处理器610远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
实施例七
本发明实施例七还提供一种计算机可读存储介质,其上存储有计算机程序(或称为计算机可执行指令),该程序被处理器执行时用于执行一种数据装载方法,该方法包括:
将待发送信息填入空闲结点,根据所述待发送信息对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有所述待发送信息的待发送结点;
依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点;
若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将所述待回收结点重新挂载到所述待发送结点链表;
将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。
当然,本发明实施例所提供的一种计算机可读存储介质,其计算机可执行命令不限于如上所述的方法操作,还可以执行本发明任意实施例所提供的数据装载方法中的相关操作。
通过以上关于实施方式的描述,所属领域的技术人员可以清楚地了解到,本发明可借助软件及必需的通用硬件来实现,当然也可以通过硬件实现,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如计算机的软盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(RandomAccess Memory,RAM)、闪存(FLASH)、硬盘或光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。值得注意的是,上述搜索装置的实施例中,所包括的各个单元和模块只是按照功能逻辑进行划分的,但并不局限于上述的划分,只要能够实现相应的功能即可;另外,各功能单元的具体名称也只是为了便于相互区分,并不用于限制本发明的保护范围。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种数据装载方法,其特征在于,包括:
将待发送信息填入空闲结点,根据所述待发送信息对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有所述待发送信息的待发送结点;依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点;若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将所述待回收结点重新挂载到所述待发送结点链表;
所述将所述待回收结点重新挂载到所述待发送结点链表,包括:
若所述待回收结点的结点标记为提交标记,则查询所述主数据库服务器对应的数据库的数据增量与发送端已发送的数据量是否一致,若否,则提交失败,将所述待回收结点重新挂载到所述待发送结点链表中,其中,所述待回收结点中存储有待装载数据和提交命令;
将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。
2.根据权利要求1所述的方法,其特征在于,所述依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,包括:若所述待发送结点的结点标记为普通数据标记,则将待装载数据发送至所述主数据库服务器;或者,若所述待发送结点的结点标记为提交标记,则将提交命令发送至所述主数据库服务器;其中,所述提交命令用于控制所述主数据库服务器将接收到的全部待装载数据提交至数据库。
3.根据权利要求1所述的方法,其特征在于,在所述若接收到所述主数据库服务器反馈的状态异常响应之前,还包括:接收所述主数据库服务器反馈的状态响应;
根据所述状态响应判断所述主数据库服务器的工作状态是否异常。
4.根据权利要求1所述的方法,其特征在于,在所述将待发送信息填入空闲结点之前,包括:若所述待发送信息为待装载数据,则将所述待装载数据转换为符合服务器端的数据类型。
5.根据权利要求1所述的方法,其特征在于,在所述将标记的空闲结点挂载到待发送结点链表之后,还包括:若所述空闲结点的结点标记为退出标记,则退出数据装载,并释放所有结点。
6.一种数据装载装置,其特征在于,包括:
信息处理模块,用于将待发送信息填入空闲结点,根据所述待发送信息对所述空闲结点进行结点标记,并将标记的空闲结点挂载到待发送结点链表,生成带有结点标记并存储有所述待发送信息的待发送结点;
数据装载模块,用于依据结点标记结果,将所述待发送结点中的待发送信息发送至主数据库服务器,并将所述待发送结点挂载到待回收结点链表,生成带有结点标记并存储有所述待发送信息的待回收结点;主备切换模块,用于若接收到所述主数据库服务器反馈的状态异常响应,则在所述主数据库服务器切换为预先准备的备数据库服务器之后,将所述待回收结点重新挂载到所述待发送结点链表;所述将所述待回收结点重新挂载到所述待发送结点链表,包括:若所述待回收结点的结点标记为提交标记,则查询所述主数据库服务器对应的数据库的数据增量与发送端已发送的数据量是否一致,若否,则提交失败,将所述待回收结点重新挂载到所述待发送结点链表中,其中,所述待回收结点中存储有待装载数据和提交命令;
信息重发模块,用于将所述待发送结点中的待发送信息重新发送至所述备数据库服务器。
7.根据权利要求6所述的装置,其特征在于,所述数据装载模块,具体用于:
若所述待发送结点的结点标记为普通数据标记,则将待装载数据发送至所述主数据库服务器;或者,若所述待发送结点的结点标记为提交标记,则将提交命令发送至所述主数据库服务器;其中,所述提交命令用于控制所述主数据库服务器将接收到的全部待装载数据提交至数据库。
8.一种终端,其特征在于,包括:一个或多个处理器;存储器,用于存储一个或多个程序;
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1至5中任一项所述的数据装载方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至5中任一项所述的数据装载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810171053.8A CN108388487B (zh) | 2018-03-01 | 2018-03-01 | 一种数据装载方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810171053.8A CN108388487B (zh) | 2018-03-01 | 2018-03-01 | 一种数据装载方法、装置、设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108388487A CN108388487A (zh) | 2018-08-10 |
CN108388487B true CN108388487B (zh) | 2020-09-04 |
Family
ID=63069219
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810171053.8A Active CN108388487B (zh) | 2018-03-01 | 2018-03-01 | 一种数据装载方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108388487B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110990377B (zh) * | 2019-11-21 | 2023-08-22 | 上海达梦数据库有限公司 | 一种数据装载方法、装置、服务器及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974563A (en) * | 1995-10-16 | 1999-10-26 | Network Specialists, Inc. | Real time backup system |
CN105138423A (zh) * | 2015-08-11 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种双机切换时业务大数据的恢复方法及系统 |
CN106790563A (zh) * | 2016-12-27 | 2017-05-31 | 浙江省公众信息产业有限公司 | 分布式存储系统和方法 |
CN107104822A (zh) * | 2017-03-29 | 2017-08-29 | 杭州云纪网络科技有限公司 | 服务器备灾处理方法、装置、存储介质及电子设备 |
CN107196799A (zh) * | 2017-05-26 | 2017-09-22 | 河南职业技术学院 | 一种数据处理平台冗余服务器备份及切换运行控制方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8214329B2 (en) * | 2008-08-26 | 2012-07-03 | Zeewise, Inc. | Remote data collection systems and methods |
CN102546135B (zh) * | 2010-12-31 | 2016-08-03 | 富泰华工业(深圳)有限公司 | 主备服务器切换系统及方法 |
CN106547486A (zh) * | 2016-10-20 | 2017-03-29 | 广东欧珀移动通信有限公司 | 一种数据迁移方法及装置 |
-
2018
- 2018-03-01 CN CN201810171053.8A patent/CN108388487B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5974563A (en) * | 1995-10-16 | 1999-10-26 | Network Specialists, Inc. | Real time backup system |
CN105138423A (zh) * | 2015-08-11 | 2015-12-09 | 北京思特奇信息技术股份有限公司 | 一种双机切换时业务大数据的恢复方法及系统 |
CN106790563A (zh) * | 2016-12-27 | 2017-05-31 | 浙江省公众信息产业有限公司 | 分布式存储系统和方法 |
CN107104822A (zh) * | 2017-03-29 | 2017-08-29 | 杭州云纪网络科技有限公司 | 服务器备灾处理方法、装置、存储介质及电子设备 |
CN107196799A (zh) * | 2017-05-26 | 2017-09-22 | 河南职业技术学院 | 一种数据处理平台冗余服务器备份及切换运行控制方法 |
Non-Patent Citations (1)
Title |
---|
sql commit用法;佚名;《https://wenwen.sogou.com/z/q745148338.htm》;20140925;第1-2页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108388487A (zh) | 2018-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103036717B (zh) | 分布式数据的一致性维护系统和方法 | |
CN109714409B (zh) | 一种消息的管理方法和系统 | |
CN107153660B (zh) | 分布式数据库系统的故障检测处理方法及其系统 | |
JPWO2007091330A1 (ja) | エレベータ制御プログラムの遠隔更新システム | |
CN111680015A (zh) | 文件资源处理方法、装置、设备和介质 | |
CN108388487B (zh) | 一种数据装载方法、装置、设备和存储介质 | |
CN113986501A (zh) | 实时数据库api无中断调用方法、系统、存储介质及服务器 | |
CN115509756A (zh) | 多集群计算任务提交方法及相关装置、设备 | |
CN104378427A (zh) | 一种保持集群关键数据一致性的方法 | |
WO2024002390A1 (zh) | Pcb设备消息应答方法、装置、计算机设备及存储介质 | |
CN111880947B (zh) | 一种数据传输方法及装置 | |
US11190301B2 (en) | Method and device for setting out-of-order value of network | |
JP5590222B2 (ja) | 情報処理装置、および障害対応プログラム | |
CN113992740B (zh) | 一种基于自主可控的中间件及数据传输方法 | |
CN111367740B (zh) | 一种bmc的调试系统、方法及计算机可读存储介质 | |
CN115065694A (zh) | 一种云存储数据中转上传系统、方法、设备及介质 | |
CN109525496B (zh) | 一种链路状态信息的更新方法及装置 | |
JP2004157753A (ja) | ファームウェアダウンロードシステム | |
CN112925612A (zh) | 一种基于Kubernetes的监控服务静态配置管理方法 | |
CN112214466B (zh) | 分布式集群系统及数据写入方法、电子设备、存储装置 | |
JP2014197346A (ja) | コントローラおよびプログラム | |
WO2024052981A1 (ja) | 処理装置、処理方法およびプログラム | |
CN101895980B (zh) | 任务同步的方法和设备 | |
CN113407384B (zh) | peer节点指令传输的方法、装置、代理服务器及存储介质 | |
CN102571889A (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 |