CN111984445A - 数据库控制文件多路复用方法、装置、介质和电子设备 - Google Patents

数据库控制文件多路复用方法、装置、介质和电子设备 Download PDF

Info

Publication number
CN111984445A
CN111984445A CN202010737314.5A CN202010737314A CN111984445A CN 111984445 A CN111984445 A CN 111984445A CN 202010737314 A CN202010737314 A CN 202010737314A CN 111984445 A CN111984445 A CN 111984445A
Authority
CN
China
Prior art keywords
control file
path
database
file
preset control
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
Application number
CN202010737314.5A
Other languages
English (en)
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.)
Beijing Kingbase Information Technologies Co Ltd
Original Assignee
Beijing Kingbase Information Technologies Co Ltd
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 Beijing Kingbase Information Technologies Co Ltd filed Critical Beijing Kingbase Information Technologies Co Ltd
Priority to CN202010737314.5A priority Critical patent/CN111984445A/zh
Publication of CN111984445A publication Critical patent/CN111984445A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/0796Safety measures, i.e. ensuring safe condition in the event of error, e.g. for controlling element
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems

Landscapes

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

Abstract

本公开涉及数据库技术领域,具体涉及一种数据库控制文件多路复用方法、数据库控制文件多路复用装置、以及实现所述数据库控制文件多路复用方法的计算机可读存储介质和电子设备,其中所述方法包括:创建多个不同路径下的预设控制文件;获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。本公开的实施方案可以在控制文件被破坏后,数据库依然能够启动且持续运行,在很大程度上减小出现停机状态的概率,提高数据库系统的高可用性。

Description

数据库控制文件多路复用方法、装置、介质和电子设备
技术领域
本公开实施例涉及数据库技术领域,尤其涉及一种数据库控制文件多路复用方法、数据库控制文件多路复用装置、以及实现所述数据库控制文件多路复用方法的计算机可读存储介质和电子设备。
背景技术
随着计算机技术的快速发展,数据库的应用也越来越广泛,控制文件(ControlFile)是数据库的物理文件之一,它记录了数据库的名字、数据文件的位置等信息。控制文件的重要性在于,一旦控制文件损坏,数据库将会宕机。
目前,控制文件的备份主要有以下一些方法:一是通过操作系统命令在数据库关闭时对控制文件进行复制;二是将控制文件备份到二进制文件中;三是将重建控制文件备份的脚本备份到后台trace文件中。一般情况下,数据库如ORACLE都会采用第二种方式进行备份,原因在于第一种方法一般用于全库一致性备份,即数据库在正常关闭状态下进行的备份,而第三种方法则会使控制文件丢失归档日志历史等许多信息。尽管将数据库的控制文件写入二进制文件中已经是属于比较优良的方法,但是在控制文件出现损坏时,通过备份文件来恢复数据库的话,都会出现数据库在一定时间内的停机。
总而言之,目前相关的控制文件备份技术在控制文件被破坏后,基本都无法避免会导致数据库会在一定时间内出现停机状态,或者出现备份的控制文件信息不完整等缺点,很难甚至无法保证系统的高可用性。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开提供了一种数据库控制文件多路复用方法、数据库控制文件多路复用装置、以及实现所述数据库控制文件多路复用方法的计算机可读存储介质和电子设备。
第一方面,本公开实施例提供一种数据库控制文件多路复用方法,包括:
创建多个不同路径下的预设控制文件;
获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;
确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。
在本公开的一些实施例中,所述数据库的配置文件中设置有多路复用参数,所述多路复用参数包含路径信息及文件信息;
所述创建多个不同路径下的预设控制文件,包括:
解析所述配置文件中的所述多路复用参数获取所述路径信息及文件信息;
基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件。
在本公开的一些实施例中,所述基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件,包括:
确定所述多路复用参数中的所述路径信息是否有效;
确定所述路径信息有效时,基于所述路径信息创建多个不同的路径,并对每个所述路径调用创建文件函数创建所述预设控制文件。
在本公开的一些实施例中,还包括:
创建多个不同的路径之后,确定每个所述路径是否存在;
所述将所述控制文件的内容写入每个所述路径下的所述预设控制文件,包括:
确定每个所述路径存在时,将所述控制文件的内容写入每个所述路径下的所述预设控制文件。
在本公开的一些实施例中,所述将所述控制文件的内容写入每个所述路径下的所述预设控制文件,包括:
基于控制文件更新函数将所述控制文件的内容依次写入每个所述路径下的所述预设控制文件。
在本公开的一些实施例中,还包括:
确定将所述控制文件的内容写入当前路径下的所述预设控制文件出错时,则跳过所述当前路径,将所述控制文件的内容写入下一路径下的所述预设控制文件。
在本公开的一些实施例中,所述读取任意一个所述路径下的所述预设控制文件以启动数据库服务,包括:
读取当前路径下的所述预设控制文件故障时,则跳过所述当前路径,读取下一路径下的所述预设控制文件;
基于所述下一路径下的所述预设控制文件启动数据库服务。
在本公开的一些实施例中,还包括:
确定所述控制文件更新时,将更新后的所述控制文件的内容写入每个所述路径下的所述预设控制文件。
在本公开的一些实施例中,所述多个不同的路径创建于不同磁盘上。
在本公开的一些实施例中,还包括:
将所述控制文件的内容写入任一个所述路径下的所述预设控制文件故障时,记录故障告警信息;
或者,读取任一个所述路径下的所述预设控制文件故障时,记录故障告警信息。
第二方面,本公开实施例提供一种数据库控制文件多路复用装置,包括:
创建模块,用以创建多个不同路径下的预设控制文件;
写入模块,用以获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;
读取模块,用以确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。
第三方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一实施例所述数据库控制文件多路复用方法的步骤。
第四方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行上述任一实施例所述数据库控制文件多路复用方法的步骤。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开的上述实施例中,首先创建多个不同路径下的预设控制文件;接着获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;最后确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。本实施例的方案将所述控制文件的内容写入多个路径下的所述预设控制文件来保护控制文件,以便在故障时可以从多个路径下提取任一正确的预设控制文件用于灾难恢复,这样在控制文件被破坏后,数据库依然能够启动且持续运行,在很大程度上减小出现停机状态的概率,提高数据库系统的高可用性。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例所述数据库控制文件多路复用方法流程图;
图2为本公开实施例所述数据库控制文件多路复用方法流程图;
图3为本公开实施例所述数据库控制文件多路复用方法流程图;
图4为本公开具体实施例数据库控制文件多路复用方法流程图;
图5为本公开具体实施例数据库控制文件多路复用方法流程图;
图6为本公开具体实施例数据库控制文件多路复用方法流程图;
图7为本公开示例实施例中数据库控制文件多路复用装置示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
图1为本公开示例性实施例示出的数据库控制文件多路复用方法流程图,该方法可以由数据库服务器执行,所述数据库控制文件多路复用方法可以包括下述步骤:
步骤S102:创建多个不同路径下的预设控制文件。
步骤S104:获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件。
步骤S106:确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。
本公开实施例的上述方法中,将所述控制文件的内容写入多个路径下的所述预设控制文件来保护控制文件,以便在故障时可以及时从多个路径下提取任一正确的预设控制文件用于灾难恢复,这样在控制文件被破坏后,数据库依然能够启动且持续运行,在很大程度上减小出现停机状态的概率,提高数据库系统的高可用性。
在本公开的一些实施例中,所述数据库的配置文件中可以设置有多路复用参数,所述多路复用参数可以包含但不限于路径信息及文件信息。示例性的,配置文件(如kingbase.conf)中可以设置多路复用参数,该多路复用参数可以是GUC参数如control_file_multiplexing_path。所述路径信息所表征的路径可以是绝对路径,所述文件信息可以包括文件名称等,当然本实施例中并不限于此。也即,GUC参数的值可以绝对路径和文件名组成。该多路复用参数如GUC参数中可以保存控制文件多路复用的路径及文件名称,每个路径长度可以限制在1024个字节以内。示例性的,路径信息可以由字符串构成,如c:\abc\efg\hmgk等。
相应的,结合图2中所示,步骤S102中,所述创建多个不同路径下的预设控制文件,具体可以包括下述步骤:
步骤S201:解析所述配置文件中的所述多路复用参数获取所述路径信息及文件信息。
示例性的,例如解析所述配置文件kingbase.conf中的GUC参数如control_file_multiplexing_path,得到控制文件多路复用的多个路径及文件名称。
步骤S202:基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件。
示例性的,得到控制文件多路复用的多个路径及文件名称后,即可创建相应的多个不同的路径,并可以基于所述文件信息如文件名称在每个所述路径下创建所述预设控制文件。具体的,例如创建空文件并进行写入初始化,使空文件成为控制文件的大小,后续可以将当前的正确的控制文件内容进行拷贝如通过函数memcpy拷贝,以将控制文件的内容写入每个路径下的预设控制文件。
本实施例中,在配置文件中加入多路复用参数后,数据库会从启动的一开始对每个多路复用控制文件即每个路径下的预设控制文件始终保持一致性,使得在故障时可以及时从多个路径下提取任一正确的多路复用控制文件用于灾难恢复,这样在控制文件被破坏后,数据库依然能够启动且持续运行,在很大程度上减小出现停机状态的概率,提高数据库系统的高可用性。本实施例中在配置文件中加入多路复用参数实现控制文件的多路复用,可降低对原有系统的侵入性以及降低实现方式的复杂度。
可选的,在本公开的一些实施例中,结合图3中所示,步骤S202中,所述基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件,具体可以包括下述步骤:
步骤S301:确定所述多路复用参数中的所述路径信息是否有效。
示例性的,GUC参数一般具有一定的格式要求,因此多路复用参数如GUC参数中的路径信息通常要符合一定的字符串要求。为了便于顺利创建每个路径下的预设控制文件,本实施例中可以对多路复用参数中的路径信息进行检测。具体的,可以解析GUC参数,将多路复用参数中保存的路径分割字符串后判断该路径是否有效,例如含有非法字符,或者为非法路径时则异常,即路径无效,有异常时可以报错返回错误信息,但不限于此。
步骤S302:确定所述路径信息有效时,基于所述路径信息创建多个不同的路径,并对每个所述路径调用创建文件函数创建所述预设控制文件。
示例性的,如上述判断无异常,则路径有效,即可对每个路径调用创建文件函数(如CreateMultiplexingControlFile)创建所述预设控制文件即多路复用控制文件。
可选的,为了进一步便于顺利创建每个路径下的预设控制文件,在本公开的一些实施例中,所述方法还可以包括步骤:创建多个不同的路径之后,确定每个所述路径是否存在。路径被创建后,可能因为一些原因导致路径实际不存在,导致控制文件的写入失败。为了避免这些问题,本实施例中可以在路径创建后检测路径是否真实的存在,若不存在则不断递归创建上级目录,若存在则打开上述创建的空文件并进行写入初始化。
相应的,所述将所述控制文件的内容写入每个所述路径下的所述预设控制文件,具体可以包括:确定每个所述路径存在时,将所述控制文件的内容写入每个所述路径下的所述预设控制文件。具体的,检测路径真实存在时,将所述控制文件的内容写入初始化后的每个所述路径下的所述预设控制文件即多路复用控制文件。
可选的,在本公开的一些实施例中,所述将所述控制文件的内容写入每个所述路径下的所述预设控制文件,具体可以包括:基于控制文件更新函数将所述控制文件的内容依次写入每个所述路径下的所述预设控制文件。所有有关控制文件及数据的操作均会调用控制文件更新函数,另外在时间复杂度方面来说,控制文件在每个数据库系统中都是固定长度,例如8k,更新操作几乎都是在瞬间完成的,所以为了实现加入的多路复用控制文件功能,本实施例中通过控制文件更新函数写入控制文件,也即多路复用控制文件的写入操作仅仅只需要加在原有控制文件更新函数中,这样可降低对原有系统的侵入性以及降低实现方式的复杂度。
可选的,为了提高数据库系统的容错率,在本公开的一些实施例中,还包括下述步骤:确定将所述控制文件的内容写入当前路径下的所述预设控制文件出错时,则跳过所述当前路径,将所述控制文件的内容写入下一路径下的所述预设控制文件。这样,可以在将控制文件写入任一路径下的预设控制文件而发生故障时,跳过此路径下的预设控制文件,对其他路径下的预设控制文件即多路复用控制文件进行写入,提高数据库系统的容错率。
可选的,为了提高数据库系统的容错率,在本公开的一些实施例中,所述读取任意一个所述路径下的所述预设控制文件以启动数据库服务,具体可以包括:读取当前路径下的所述预设控制文件故障时,则跳过所述当前路径,读取下一路径下的所述预设控制文件;基于所述下一路径下的所述预设控制文件启动数据库服务。这样,可以在读取任一路径下的预设控制文件而发生故障时,跳过此路径下的预设控制文件,对其他路径下的预设控制文件即多路复用控制文件进行读取,提高数据库系统的容错率。
示例性的,读取预设控制文件时,可以依次读取多个路径下的预设控制文件即多路复用控制文件,只要有一个路径下的多路复用控制文件可以被正常读到时,则整个数据库就会持续工作,直到最差情况所有多路复用控制文件因为各种故障都出现不可读的情况,数据库才会发生宕机。本实施例方案中包含多个不同路径下的多路复用控制文件,理论上多路复用控制文件数量越多越好,但为了兼顾数据库系统的性能,本实施例中不同路径下的多路复用控制文件的总数量可以配置最多不超过32个,例如配置4至8个多路复用控制文件。这样可以在更大程度上减小出现停机状态的概率,提高数据库系统的高可用性。
可选的,为了在故障时可以更及时地从多个路径下提取任一正确的预设控制文件用于灾难恢复,在本公开的一些实施例中,还可以包括下述步骤:确定所述控制文件更新时,将更新后的所述控制文件的内容写入每个所述路径下的所述预设控制文件。也即,当数据库的控制文件更新时,同步更新每个所述路径下的所述预设控制文件即多路复用控制文件。
可选的,在本公开的一些实施例中,所述多个不同的路径创建于不同磁盘上。也即,可以在不同磁盘上创建多个不同的路径,之后可以将当前的正确的控制文件内容进行拷贝如通过函数memcpy拷贝至每个路径下的预设控制文件并刷盘,以将控制文件的内容写入预设控制文件。本实施例中通过在不同磁盘上创建多个不同的路径,可以将多路复用控制文件配置到不同磁盘。示例性的,配置方式可以为control_file_multiplexing_path=‘path1;path2;...’,但不限于此。这样可以均衡硬件例如磁盘整体故障的风险,从而进一步减小出现停机状态的概率,提高数据库系统的高可用性。
可选的,在本公开的一些实施例中,还可以包括下述步骤:将所述控制文件的内容写入任一个所述路径下的所述预设控制文件故障时,记录故障告警信息;或者,读取任一个所述路径下的所述预设控制文件故障时,记录故障告警信息。本实施例中可以增加控制文件故障告警,在控制文件读取/写入故障时,系统会进行日志出错警告,打印出错详细信息,提示用户检测硬件或软件情况。
下面结合图4~6对本公开的一个具体实施例进行说明,本具体实施例中以金仓数据库KingBaseEs服务器的控制文件多路复用为例进行描述,以便于更好地理解本公开上述各实施例所示的技术方案。如图4~6所示多路复用控制文件的实现过程,具体可以包括如下步骤:
步骤S401:创建GUC参数,为GUC参数创建一个全局变量。
示例性的,全局变量可以保存GUC参数的值,GUC参数control_file_multiplexing_path的值可以包括绝对路径和文件名。通过设置该参数可以配置最多不超过32个多路复用控制文件,但不限于此。
步骤S402:解析GUC参数获取路径信息及文件信息。
示例性的,例如解析GUC参数得到多个绝对路径和相应的文件名。
步骤S403:确定路径信息是否有效。
具体的,解析GUC参数后可将其中保存的绝对路径分割字符串后判断路径是否有效,如有异常则执行步骤S405;如无异常则执行步骤S404。
步骤S404:创建多个不同路径及每个路径下的多路复用控制文件。
示例性的,对每个路径可以调用创建文件函数(CreateMultiplexingControlFile)创建多路复用控制文件。
步骤S405:返回false,并写入guc_check_errmsg。
步骤S406:确定创建的路径是否存在。
具体的,可以利用asses判断基于多路复用参数创建的各路径是否存在,如确定存在则执行步骤S407,如不存在则执行步骤S408。
步骤S407:将控制文件写入每个路径下的多路复用控制文件。例如可以打开创建的空文件并进行写入初始化。
步骤S408:不断递归创建上级目录。
在配置文件中加入多路复用参数后,数据库从启动的一开始可对每个多路复用控制文件始终保持一致性。
图5所示为将控制文件写入每个路径下的多路复用控制文件操作的具体示例流程。参考图5中所示,写入的过程可以包括下述步骤:
步骤S501:新增指针变量errflag,指向多路复用控制文件数组下标,并初始化为false。
具体的,上述创建的不同路径下的多个多路复用控制文件可以由多路复用控制文件数组表示。本步骤中指针变量errflag可以指向多路复用控制文件数组下标。
步骤S502:写入多路复用控制文件。即将控制文件内容写入当前的多路复用控制文件。
步骤S503:确定写入是否出错。具体的,如出错则执行步骤S505,如未出错,即写入成功,则执行步骤S504。
步骤S504:I/O缓存输出至文件,将errflag的值设为true,errflag累加,即errflag++。
示例性的,可以调用系统类函数fsync进行对I/O缓存输出至文件。
步骤S505:记录多路复用控制文件错误信息。如记录当前写入出错的多路复用控制文件错误信息。
步骤S506:确定是否还有下一个多路复用控制文件。如是则跳转至步骤S502执行,以将控制文件内容写入该下一个多路复用控制文件。如否则执行步骤S507。
步骤S507:确定是否所有多路复用控制文件出错。如是则执行步骤S509,即数据库宕机;如否则执行步骤S508。
步骤S508:输出记录的多路复用控制文件错误详细信息。
本实施例中初始化一个指针变量errflag为false,然后可循环对每个多路复用文件进行控制文件内容的写入操作,写入成功后可以IO缓存输出至文件,并将errflag的值设为true,errflag累加,即errflag++。如果在写入期间发生任何错误,则可以利用变量errflag指针指向多路复用控制文件数组下标,即指向某下标对应的多路复用控制文件出错,然后继续对下一个多路复用控制文件进行写入操作,由此保证在循环结束之前有某一个或多个多路复用控制文件出错时,程序可以对下一个多路复用控制文件进行写入操作,并可由errflag记录整个操作流程中出错的多路复用控制文件的详细信息。
数据库最开始启动运行时,必须读到有用的控制文件的信息,若某控制文件发生损坏时,此时就会尝试读取多路复用控制文件来启动数据库服务,继续结合参考图6中所示,不同路径下的多路复用控制文件写入之后,数据库启动过程可以包括以下步骤:
步骤S600:数据库服务启动。具体的,在启动时读取数据库的控制文件,当故障等原因无法读取控制文件或控制文件损坏时,可以执行步骤S601。
步骤S601:读取多路复用控制文件。例如读取上述多个不同路径中任一路径下的多路复用控制文件。
步骤S602:确定读取是否出错。如是则执行步骤S603;如否则执行步骤S604。
步骤S603:判断是否还有下一个多路复用控制文件。如是则跳转至执行步骤S601,以读取下一个多路复用控制文件。如否则执行步骤S605。
步骤S604:数据库服务启动成功。如可以呈现数据库服务启动成功的提示信息。
步骤S605:判断是否所有多路复用控制文件故障。如是则执行步骤S606,如否则执行步骤S600,数据库服务启动。
步骤S606:数据库服务启动失败。如可以呈现数据库服务启动失败的提示信息。
本实施例中,在数据库例如突然发生故障时,由于前期部署多盘不同路径存储多路复用控制文件,由于顺序写入和即时刷盘的特性,多路复用控制文件在写入后通常不会集体故障,因此数据库系统启动时,如控制文件损坏可以获取任一多路复用控制文件来启动服务。这样可以在更大程度上减小出现停机状态的概率,提高数据库系统的高可用性。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
基于同一构思,如图7中所示,本公开实施例还提供一种数据库控制文件多路复用装置,该数据库控制文件多路复用装置700可以包括创建模块701、写入模块702和读取模块703;其中:
所述创建模块701,用以创建多个不同路径下的预设控制文件;
所述写入模块702,用以获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;
所述读取模块703,用以确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。
本公开实施例的上述装置中,将所述控制文件的内容写入多个路径下的所述预设控制文件来保护控制文件,以便在故障时可以及时从多个路径下提取任一正确的预设控制文件用于灾难恢复,这样在控制文件被破坏后,数据库依然能够启动且持续运行,在很大程度上减小出现停机状态的概率,提高数据库系统的高可用性。
在本公开的一些实施例中,所述数据库的配置文件中可以设置有多路复用参数,所述多路复用参数可以包含但不限于路径信息及文件信息。相应的,所述创建模块701被配置为:解析所述配置文件中的所述多路复用参数获取所述路径信息及文件信息;基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件。
在本公开的一些实施例中,所述创建模块701进一步被配置为:确定所述多路复用参数中的所述路径信息是否有效;确定所述路径信息有效时,基于所述路径信息创建多个不同的路径,并对每个所述路径调用创建文件函数创建所述预设控制文件。
在本公开的一些实施例中,还可以包括路径确认模块,被配置为:创建多个不同的路径之后,确定每个所述路径是否存在。所述写入模块被配置为:确定每个所述路径存在时,将所述控制文件的内容写入每个所述路径下的所述预设控制文件。
在本公开的一些实施例中,所述写入模块702进一步被配置为:基于控制文件更新函数将所述控制文件的内容依次写入每个所述路径下的所述预设控制文件。
在本公开的一些实施例中,所述写入模块702进一步被配置为:确定将所述控制文件的内容写入当前路径下的所述预设控制文件出错时,则跳过所述当前路径,将所述控制文件的内容写入下一路径下的所述预设控制文件。
在本公开的一些实施例中,所述读取模块703被配置为:读取当前路径下的所述预设控制文件故障时,则跳过所述当前路径,读取下一路径下的所述预设控制文件;基于所述下一路径下的所述预设控制文件启动数据库服务。
在本公开的一些实施例中,还可以包括更新模块,被配置为:确定所述控制文件更新时,将更新后的所述控制文件的内容写入每个所述路径下的所述预设控制文件。
在本公开的一些实施例中,所述多个不同的路径创建于不同磁盘上。
在本公开的一些实施例中,所述装置还可以包括故障告警模块,被配置为:将所述控制文件的内容写入任一个所述路径下的所述预设控制文件故障时,记录故障告警信息;或者,读取任一个所述路径下的所述预设控制文件故障时,记录故障告警信息。
关于上述实施例中的装置,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项实施例所述数据库控制文件多路复用方法的步骤。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种电子设备,包括处理器以及存储器,存储器用于存储所述处理器的可执行指令。其中,所述处理器配置为经由执行所述可执行指令来执行上述任一项实施例中所述数据库控制文件多路复用方法的步骤。
下面来描述根据本发明的这种实施方式的电子设备。该电子设备可以是数据库服务器,但也仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
电子设备可以通用计算设备的形式表现。电子设备的组件可以包括但不限于:至少一个处理单元、至少一个存储单元、连接不同系统组件(包括存储单元和处理单元)的总线、显示单元等。
其中,所述存储单元存储有程序代码,所述程序代码可以被所述处理单元执行,使得所述处理单元执行本说明书上述数据库控制文件多路复用方法部分中描述的根据本发明各种示例性实施方式的步骤。例如,所述处理单元可以执行如图1中所示方法的步骤。
所述存储单元可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以进一步包括只读存储单元(ROM)。
所述存储单元还可以包括具有一组(至少一个)程序模块的程序/实用工具,这样的程序模块包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备也可以与一个或多个外部设备(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备交互的设备通信,和/或与使得该电子设备能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口进行。并且,电子设备还可以通过网络适配器与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器可以通过总线与电子设备的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施方式的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、或者网络设备等)执行根据本公开实施方式的上述数据库控制文件多路复用方法。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (13)

1.一种数据库控制文件多路复用方法,其特征在于,包括:
创建多个不同路径下的预设控制文件;
获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;
确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。
2.根据权利要求1所述的数据库控制文件多路复用方法,其特征在于,所述数据库的配置文件中设置有多路复用参数,所述多路复用参数包含路径信息及文件信息;
所述创建多个不同路径下的预设控制文件,包括:
解析所述配置文件中的所述多路复用参数获取所述路径信息及文件信息;
基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件。
3.根据权利要求2所述的数据库控制文件多路复用方法,其特征在于,所述基于所述路径信息创建多个不同的路径,基于所述文件信息在每个所述路径下创建所述预设控制文件,包括:
确定所述多路复用参数中的所述路径信息是否有效;
确定所述路径信息有效时,基于所述路径信息创建多个不同的路径,并对每个所述路径调用创建文件函数创建所述预设控制文件。
4.根据权利要求2或3所述的数据库控制文件多路复用方法,其特征在于,还包括:
创建多个不同的路径之后,确定每个所述路径是否存在;
所述将所述控制文件的内容写入每个所述路径下的所述预设控制文件,包括:
确定每个所述路径存在时,将所述控制文件的内容写入每个所述路径下的所述预设控制文件。
5.根据权利要求1所述的数据库控制文件多路复用方法,其特征在于,所述将所述控制文件的内容写入每个所述路径下的所述预设控制文件,包括:
基于控制文件更新函数将所述控制文件的内容依次写入每个所述路径下的所述预设控制文件。
6.根据权利要求5所述的数据库控制文件多路复用方法,其特征在于,还包括:
确定将所述控制文件的内容写入当前路径下的所述预设控制文件出错时,则跳过所述当前路径,将所述控制文件的内容写入下一路径下的所述预设控制文件。
7.根据权利要求1所述的数据库控制文件多路复用方法,其特征在于,所述读取任意一个所述路径下的所述预设控制文件以启动数据库服务,包括:
读取当前路径下的所述预设控制文件故障时,则跳过所述当前路径,读取下一路径下的所述预设控制文件;
基于所述下一路径下的所述预设控制文件启动数据库服务。
8.根据权利要求1所述的数据库控制文件多路复用方法,其特征在于,还包括:
确定所述控制文件更新时,将更新后的所述控制文件的内容写入每个所述路径下的所述预设控制文件。
9.根据权利要求1所述的数据库控制文件多路复用方法,其特征在于,所述多个不同的路径创建于不同磁盘上。
10.根据权利要求1所述的数据库控制文件多路复用方法,其特征在于,还包括:
将所述控制文件的内容写入任一个所述路径下的所述预设控制文件故障时,记录故障告警信息;
或者,读取任一个所述路径下的所述预设控制文件故障时,记录故障告警信息。
11.一种数据库控制文件多路复用装置,其特征在于,
创建模块,用以创建多个不同路径下的预设控制文件;
写入模块,用以获取数据库的控制文件,将所述控制文件的内容写入每个所述路径下的所述预设控制文件;
读取模块,用以确定所述数据库启动时所述控制文件故障时,读取任意一个所述路径下的所述预设控制文件以启动数据库服务。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1~10任一项所述数据库控制文件多路复用方法的步骤。
13.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1~10任一项所述数据库控制文件多路复用方法的步骤。
CN202010737314.5A 2020-07-28 2020-07-28 数据库控制文件多路复用方法、装置、介质和电子设备 Pending CN111984445A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010737314.5A CN111984445A (zh) 2020-07-28 2020-07-28 数据库控制文件多路复用方法、装置、介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010737314.5A CN111984445A (zh) 2020-07-28 2020-07-28 数据库控制文件多路复用方法、装置、介质和电子设备

Publications (1)

Publication Number Publication Date
CN111984445A true CN111984445A (zh) 2020-11-24

Family

ID=73444759

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010737314.5A Pending CN111984445A (zh) 2020-07-28 2020-07-28 数据库控制文件多路复用方法、装置、介质和电子设备

Country Status (1)

Country Link
CN (1) CN111984445A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590387A (zh) * 2021-08-02 2021-11-02 瀚高基础软件股份有限公司 一种数据库的控制文件的恢复方法及存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170315877A1 (en) * 2016-04-28 2017-11-02 Netapp, Inc. Techniques to perform system management processing for database systems
CN109460219A (zh) * 2018-09-28 2019-03-12 西南电子技术研究所(中国电子科技集团公司第十研究所) 快速序列化接口控制文件的方法
CN110968565A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种数据库的创建方法及系统

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170315877A1 (en) * 2016-04-28 2017-11-02 Netapp, Inc. Techniques to perform system management processing for database systems
CN109460219A (zh) * 2018-09-28 2019-03-12 西南电子技术研究所(中国电子科技集团公司第十研究所) 快速序列化接口控制文件的方法
CN110968565A (zh) * 2018-09-30 2020-04-07 北京国双科技有限公司 一种数据库的创建方法及系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
LK_DB: "Oracle添加控制文件", pages 1 - 3, Retrieved from the Internet <URL:https://blog.csdn.net/lk_db/article/details/78528583> *
孙维连等: "《DEBUG与软件维修技术》", 31 January 2005, 哈尔滨:哈尔滨工程大学出版社, pages: 1 - 13 *
崔样样: "Oracle添加冗余控制文件for RAC On Linux", pages 1 - 3, Retrieved from the Internet <URL:https://blog.51cto.com/sk993219/1899765> *
张冲ANDY: "控制⽂件的多路复⽤技术", pages 1 - 3, Retrieved from the Internet <URL:https://www.cnblogs.com/andy6/p/5965603.html> *
朱WEI: "oracle数据库恢复系列之控制文件恢复", pages 1 - 13, Retrieved from the Internet <URL:https://blog.51cto.com/wyzwl/1978252> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113590387A (zh) * 2021-08-02 2021-11-02 瀚高基础软件股份有限公司 一种数据库的控制文件的恢复方法及存储介质

Similar Documents

Publication Publication Date Title
US6950836B2 (en) Method, system, and program for a transparent file restore
JP4363676B2 (ja) コンピュータシステム
US7975171B2 (en) Automated file recovery based on subsystem error detection results
US7685189B2 (en) Optimizing backup and recovery utilizing change tracking
US20170060701A1 (en) File-based cluster-to-cluster replication recovery
US6785838B2 (en) Method and apparatus for recovering from failure of a mirrored boot device
US7801867B2 (en) Optimizing backup and recovery utilizing change tracking
US7487385B2 (en) Apparatus and method for recovering destroyed data volumes
KR20150070134A (ko) 가상 데이터베이스를 생성하기 위한 소스 데이터베이스의 지정 시간 복사의 검색
US7133984B1 (en) Method and system for migrating data
US9804957B1 (en) Block tracking data validation backup model
CN113377569B (zh) 用于恢复数据的方法、设备和计算机程序产品
US20040034817A1 (en) Efficient mechanisms for detecting phantom write errors
US6363457B1 (en) Method and system for non-disruptive addition and deletion of logical devices
CN115098299A (zh) 一种虚拟机的备份方法、容灾方法、装置及设备
CN107765990A (zh) 一种系统磁盘管理方法和装置
JP2005050073A (ja) データ復旧方法およびデータ記録装置
US10664346B2 (en) Parity log with by-pass
CN111984445A (zh) 数据库控制文件多路复用方法、装置、介质和电子设备
US8595271B1 (en) Systems and methods for performing file system checks
CN115495286A (zh) 配置文件定时备份的测试方法、系统、设备和存储介质
US7734573B2 (en) Efficient recovery of replicated data items
KR20080060658A (ko) 멀티미디어 저장장치와 데이터 복구방법
US20170337213A1 (en) Metadata regeneration
JP2005149248A (ja) メタデータ修復方式,方法および記憶装置ならびにプログラム

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
CB02 Change of applicant information
CB02 Change of applicant information

Country or region after: China

Address after: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing

Applicant after: China Electronics Technology Group Jincang (Beijing) Technology Co.,Ltd.

Address before: 100102 201, 2 / F, 101, No. 5 building, No. 7 Rongda Road, Chaoyang District, Beijing

Applicant before: BEIJING KINGBASE INFORMATION TECHNOLOGIES Inc.

Country or region before: China