一种容灾方法及系统与流程

文档序号:11286025阅读:235来源:国知局
一种容灾方法及系统与流程

本申请涉及存储技术领域,特别涉及一种容灾方法及系统。



背景技术:

随着信息时代的不断发展,物联网、云计算等技术开始在各行各业中发挥巨大作用。基于此,人类社会各生产领域每天都生成海量的数据,可以用于指导和分析各行各业的生产经营活动,标志着大数据时代的来临。

顾名思义,大数据时代是基于数据操作的信息技术时代,由此,数据存储的重要性可见一斑。然而,由于电子设备本身的局限性,数据的灾难性故障总是无法避免和预料的,例如电力中断、人为操作失误、硬件老化故障以及各种不可抗外力导致的设备故障等,这些灾难性故障很可能会破坏数据的完整性,进而甚至会导致系统停运、网络瘫痪、业务停滞等严重后果。因此,如何进行数据的存储以便在灾难性故障发生时依旧能保证数据的安全,实现存储容灾,成为了本领域至关重要的问题。

在现有技术中,如图1所示,数据一般以文件系统或者裸设备的方式存储在单台存储设备中,因此一旦当灾难性故障发生,数据就面临着丢失或者损坏且无法恢复的风险。此外,虽然现有技术中一般也会采用电源保护、防过热电路保护等一般性硬件防护措施,但是,由于故障种类繁多,并且很多情况下是无法预料和避免的,因此硬件防护的效果是十分有限的。



技术实现要素:

本申请的目的在于提供一种容灾方法及系统,以便在故障发生时,实现对存储数据完整性和一致性的有效保护。

为解决上述技术问题,本申请提供一种容灾方法,包括:

判断待执行的数据操作的类型;

若为写操作,则分别在第一磁盘组和第二磁盘组中写入相同的待写入数据;其中,所述第一磁盘组和所述第二磁盘组中分别设有第一存储设备和第二存储设备;

若为读操作,则判断所述第一存储设备是否故障;

若否,则从所述第一磁盘组读取数据;若是,则从所述第二磁盘组读取数据。

可选地,还包括:

采用oracleasm的normalredundancy方式创建所述第一磁盘组和所述第二磁盘组。

可选地,若判断所述第一存储设备故障时,还包括:

生成显示所述第一存储设备故障的信息以便用户对所述第一存储设备进行故障排除。

可选地,在所述生成显示所述第一存储设备故障的信息以便用户对所述第一存储设备进行故障排除之后,还包括:

判断所述第一存储设备的故障是否排除;

若是,则从所述第一磁盘组读取数据。

本申请还提供一种容灾系统,包括:

cpu:用于判断待执行的数据操作的类型;当判断结果为写操作时,则用于分别在第一磁盘组和第二磁盘组中写入相同的待写入数据;当判断结果为读操作时,则用于判断第一存储设备是否故障,若否,则用于从所述第一磁盘组读取数据;若是,则用于从所述第二磁盘组读取数据;

第一存储设备:用于存储所述cpu写入的数据;当所述第一存储设备没有故障时,用于提供所述cpu待读取的数据;

第二存储设备:用于存储所述cpu写入的数据,当所述第一存储设备故障时,用于提供所述cpu待读取的数据。

可选地,所述cpu还用于:

采用oracleasm的normalredundancy方式创建所述第一磁盘组和所述第二磁盘组。

可选地,所述cpu还用于:

在判断所述第一存储设备故障时,生成显示所述第一存储设备故障的信息以便用户对所述第一存储设备进行故障排除。

可选地,所述cpu还用于:

在生成显示所述第一存储设备故障的信息以便用户对所述第一存储设备进行故障排除之后,判断所述第一存储设备的故障是否排除;若是,则从所述第一磁盘组读取数据。

本申请所提供的容灾方法中,判断待执行的数据操作的类型;若为写操作,则分别在第一磁盘组和第二磁盘组中写入相同的待写入数据;其中,所述第一磁盘组和所述第二磁盘组中分别设有第一存储设备和第二存储设备;若为读操作,则判断所述第一存储设备是否故障;若否,则从所述第一磁盘组读取数据;若是,则从所述第二磁盘组读取数据。

相比于现有技术,本申请所提供的容灾方法利用了分属于不同磁盘组的存储设备,实现了数据的镜像存储,因而当第一存储设备出现故障时,系统仍然可以通过第二存储设备读取数据,保证数据不会丢失或者损坏,从而保证了数据在故障发生时的完整性和一致性,实现存储容灾。因此,本申请所提供的容灾方法可以在存储故障发生时,有效保障数据的完整性和一致性;本申请所提供的容灾系统也同样具有上述有益效果。

附图说明

为了更清楚地说明现有技术和本申请实施例中的技术方案,下面将对现有技术和本申请实施例描述中需要使用的附图作简要的介绍。当然,下面有关本申请实施例的附图描述的仅仅是本申请中的一部分实施例,对于本领域普通技术人员来说,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图,所获得的其他附图也属于本申请的保护范围。

图1为现有技术中数据存储方式的示意图;

图2为本申请所提供的容灾方法中第一存储设备无故障时数据存储方式的示意图;

图3为本申请所提供的容灾方法中第一存储设备故障时数据存储方式的示意图;

图4为本申请所提供的容灾方法的流程图;

图5为本申请所提供的另一种容灾方法的流程图;

图6为本申请所提供的容灾系统的结构框图。

具体实施方式

本申请的核心在于提供一种容灾方法,在存储设备发生灾难性故障时,可以保证所存储的数据的完整性和一致性,实现存储容灾;本申请的另一核心是提供一种能实现上述容灾方法的容灾系统。

为了对本申请实施例中的技术方案进行更加清楚、完整地描述,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行介绍。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

请参考图2和图3,图2和图3为本申请所提供的容灾方法中数据存储方式的示意图,包括cpu201、第一存储设备202和第二存储设备203,其中图2为第一存储设备没有故障时的数据存储方式示意图,图3为第一存储设备故障时的数据存储方式示意图。

如图2和图3所示,本申请所提供的容灾方法中采用了两个存储设备,即第一存储设备202和第二存储设备203,它们分别归属于两个不同的磁盘组,具体地,第一存储设备202归属于第一磁盘组,第二存储设备203归属于第二磁盘组。

这里的第一存储设备202和第二存储设备203只是为了便于说明和解释,而对数据库的读取操作的默认存储设备和备用存储设备进行区分而已,即本申请实施例将默认存储设备称为第一存储设备202,而将备用存储设备称为第二存储设备203。两者可以采用相同的存储设备,也可以采用不同的存储设备,并且,具体哪一个存储设备为第一存储设备202、哪一个存储设备为第二存储设备203,并不受到本申请实施例的限制。

数据库服务器的cpu201可以向两个存储设备同时写入同样的数据,也可以从两个存储设备中的任何一个读取数据。如图2所示,当第一存储设备202没有发生故障时,cpu201执行写操作时向两个存储设备同时写入同样的数据;cpu201执行读操作时,第一存储设备202作为默认存储设备,为cpu201提供待读取的数据。如图3所示,当第一存储设备202发生故障时,cpu201在进行读操作时可以自动更改数据操作的操作对象,即不再使用第一存储设备202,而是从第二存储设备203中读取数据。

请参考图4,图4为本申请所提供的容灾方法的流程图,具体包括以下步骤:

步骤401:判断待执行的数据操作的类型;若为写操作,进入步骤402,若为读操作,进入步骤403。

在数据库的使用过程中,对于数据的写入和读取是两个基本的操作类型,分别对应这个数据的存储和调用。数据库系统可以判断程序中待执行的数据操作的类型,并依据程序中的其他相关指令,对指定的数据执行相关的操作内容;若为写操作,则可以进入步骤402执行相关的写操作;若为读操作,则可以进入步骤403执行相关的读操作。

步骤402:分别在第一磁盘组和第二磁盘组中写入相同的待写入数据。

通过步骤401判断数据库系统待执行的操作为写操作时,即开始数据的写入存储过程。本申请提供的容灾方法中,采用了两个分别属于不同磁盘组的存储设备进行镜像存储,即分别在第一磁盘组和第二磁盘组中写入相同的待写入数据;其中,第一磁盘组中设有第一存储设备,第二磁盘组中设有第二存储设备。由此可见,在其中一个磁盘组中的存储设备发生灾难性故障发生时,可以利用另一个磁盘组中的存储设备进行数据的存储或调用,从而有效地实现数据安全保障。

如前所述,这里的第一磁盘组中的第一存储设备和第二磁盘组中的第二存储设备只是为了便于描述和说明而进行的区分,即本申请实施例所述的第一磁盘组中的第一存储设备是指在进行读操作时的默认存储设备,第二磁盘组中的第二存储设备是指在进行读操作时的备用存储设备;两者并无本质上的区别,因此,可以采用相同的存储设备,也可以采用不同的存储设备,只要均能实现有效存储即可,本申请实施例对此并不作限定。

第一磁盘组和第二磁盘组是在具体进行数据写入之前就创建的。具体的,由于oracle这一关系型数据库可以选择oracleasm(automaticstoragemanagement,自动存储管理)进行数据的存储与调用,因此可以通过oracleasm的normalredundancy方式创建第一磁盘组与第二磁盘组,并分别对其进行设置,即将第一存储设备归入第一磁盘组中,将第二存储设备归入第二磁盘组中。如前所述,本申请实施例并不限制每一个磁盘组中的存储设备的具体类型、结构、型号等,两个磁盘组中的存储设备可以相同也可以不同,当两个存储设备不同时,具体哪个存储设备放入第一或者第二磁盘组也并不受限制,可根据具体情况进行选择和配置。

步骤403:判断第一存储设备是否故障,若否,进入步骤404,若是,进入步骤405。

当通过步骤401判断数据库系统当前待执行的数据操作为读操作时,则开始进入数据的读取过程。由于本申请所提供的容灾方法在进行数据的存储时是进行了镜像存储,即同时将同样的待写入数据写入了分属不同磁盘组的两个存储设备,而在进行数据读取操作时,仅需要一份数据来源即可,因此,本申请所提供的容灾方法在进行数据的读取操作时,设置有读取操作的默认存储设备,即第一磁盘组中的第一存储设备,以便利用其进行数据的读取操作,实现数据调用。由于存储故障现象时有发生,在进行存储时,可以对第一磁盘组中的第一存储设备进行检测判断,判断其是否发生故障不可用,若其没有故障,则进入步骤404;若其发生故障而不可用,则进入步骤405。

步骤404:从第一磁盘组读取数据。

经过步骤403判断第一磁盘组中的第一存储设备没有发生故障,即其为可用状态后,则从第一磁盘组读取数据,对第一存储设备所存储的数据进行调用。

步骤405:从第二磁盘组读取数据。

经过步骤403判断第一磁盘组中的第一存储设备发生故障,即其为不可用状态后,则更改读操作的操作对象,即改从第二磁盘组读取数据,对第二存储设备所存储的数据进行调用。

由于在进行数据存储时,第一存储设备和第二存储设备所存储的数据是相同的,因此,当第一存储设备发生故障时,将读操作的操作对象由默认的第一存储设备更改为第二存储设备后,并不会影响数据的一致性,并同时保证了数据的完整性。

由此可见,本申请所提供的容灾方法在进行数据存储时,分别向两个存储设备进行数据的写入;而在进行数据读取操作时,可以从其中的一个存储设备,即读操作的默认存储设备,也就是本申请中的第一存储设备来获取数据。即使当该存储设备发生灾难性故障时,利用本申请的镜像存储,也可以通过另外一个存储设备,即读操作的备用存储设备,也就是本申请所述的第二存储设备进行数据的获取,从而保证了数据的完整性和一致性,实现了存储容灾,避免了单台存储在存储设备故障时引发的一系列严重后果。

请参考图5,图5为本申请所提供的另一种容灾方法的流程图,具体包括以下步骤:

步骤501:判断待执行的数据操作的类型;若为写操作,进入步骤502,若为读操作,进入步骤503。

步骤502:分别在第一磁盘组和第二磁盘组中写入相同的待写入数据。

步骤503:判断第一存储设备是否故障,若否,进入步骤504,若是,进入步骤505。

步骤504:从第一磁盘组读取数据。

由于本申请实施例中的步骤501~步骤504可以具体参考上述步骤401~步骤404中的内容,因此这里就不再赘述。

步骤505:从第二磁盘组读取数据;生成显示所述第一存储设备故障的信息;并进入步骤506。

经过步骤503判断第一磁盘组中的第一存储设备发生故障,即其为不可用状态后,则更改读操作的操作对象,即改从第二磁盘组读取数据,对第二存储设备所存储的数据进行调用。

同时,为了尽快地对第一存储设备的故障进行排除,可以生成显示所述第一存储设备故障的信息,用以提示用户对第一存储设备进行故障排除。具体地,提示用户第一存储设备故障的信息可以采用多种方式,例如指示灯闪烁、提示音报警等,本申请实施例对此并不做限定。

步骤506:判断第一存储设备的故障是否排除;若是,进入步骤507。

在步骤505中,由于系统发出了第一存储设备故障的提示信息,以便用户对其进行故障排除,因此,在将数据读操作的操作对象由第一存储设备更改为了第二存储设备进行数据读取之后,可对第一存储设备故障是否排除的状况进行判断,以便及时获取第一存储设备即默认存储设备的可用状态。若第一存储设备故障已经被排除,则可以进入步骤507。

步骤507:从第一磁盘组读取数据。

经过步骤506中的判断,若第一存储设备的故障已经排除,则还可以将数据读取操作的操作对象由第二存储设备更改为第一存储设备,从第一磁盘组中的第一存储设备读取数据。当然,此时也可以不再对数据读取操作的对象进行更换,可由用户根据情况选择而定。若没有进行更换,而是继续采用第二存储设备进行数据读取时,应该理解的是,此时若第二存储设备发生故障,则可以类比第一存储设备发生故障的处理步骤进行处理,即将读取操作的操作对象由当前的第二存储设备改为第一存储设备,并且还可以生成显示第二存储设备故障的提示信息,用以提示用户对第二存储设备的故障进行排除等。相似的过程,这里就不再赘述。

请参考图6,图6为本申请所提供的一种容灾系统的结构框图,包括cpu601、第一存储设备602、第二存储设备603。

cpu601是数据库服务器中对各种操作进行控制和管理的单元,对于数据库系统来说,各种数据库操作都是由cpu601通过处理和响应相应程序而得以实现的。在进行数据存储的过程中,cpu601用于根据程序中待执行的数据操作类型的判断结果,执行相应的数据存储或者读取的操作。

在本申请所提供的容灾系统中,当cpu601判断当前待执行的数据操作类型为写操作时,cpu601用于分别在第一磁盘组中的第一存储设备和第二磁盘组中的第二存储设备写入相同的待写入数据,实现数据的镜像存储。当cpu601判断当前待执行的数据操作类型为读操作时,cpu601会进一步判断默认的第一存储设备是否故障,若否,则cpu601从所述第一磁盘组中的第一存储设备读取数据;若是,则cpu601从所述第二磁盘组中的第二存储设备读取数据。

第一存储设备602归属于第一磁盘组,用于在cpu601执行写操作时存储cpu601写入的数据。作为读操作的默认对象,当第一存储设备602没有故障发生时,其还用于在cpu601执行读操作时为cpu601提供待读取的数据。

第二存储设备603归属于第二磁盘组,它和第一存储设备602一样都是cpu601在执行写操作时的操作对象,用于储存cpu601写入的数据。作为读操作的备用对象,当第一存储设备602发生故障时,第二存储设备603用于代替第一存储设备602,在cpu601执行读操作时为cpu601提供待读取的数据。

如前所述,这里的第一存储设备602和第二存储设备603只是为了便于说明和解释,而对数据库的读取操作的默认存储设备和备用存储设备进行区分而已,因此两者可以采用相同的存储设备,也可以采用不同的存储设备,并且,具体哪一个存储设备为第一存储设备602、哪一个存储设备为第二存储设备603并不受到本申请实施例的限制。

具体的,这里的第一磁盘组和第二磁盘组可以当oracle数据库采用oracleasm数据存储与调用方式时,以normalredundancy方式创建。

此外,当判断第一存储设备发生故障时,为了便于对第一存储设别602及时维护或者更换,cpu601还用于生成显示所述第一存储设备602故障的信息以便用户对所述第一存储设备602进行故障排除。更进一步地,为了及时获取第一存储设备602是否为可用状态,cpu601还可以判断所述第一存储设备602的故障是否排除;若已经排除,则可以将数据读取操作的操作对象由第二存储设备603更改为第一存储设备602,即从所述第一磁盘组读取数据。当然,也可以不进行读取操作对象的更换。应该理解的是,此时,当第二存储设备603故障时,cpu601可以进行类似的处理,即将读取操作的操作对象由第二存储设备603更改为第一存储设备602,详细内容这里就不再赘述。

可见,本申请所提供的容灾系统,通过在两个归属于不同磁盘组的存储设备进行数据的镜像存储,在其中一个存储设备发生故障时,可以利用另一个存储设备中的数据进行对数据的持续性操作,保证了数据的完整性和一致性,有效地实现了数据的存储容灾。

本申请中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的分组查询计算方法及系统进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1