一种数据库数据文件的冗余方法与装置
技术领域
本发明涉及数据库安全技术领域,特别是一种数据库数据文件的冗余方法和装置。
背景技术
目前,大型关系型数据库没有基于数据文件的冗余机制,其通过数据文件路径加名称标识该数据文件的唯一性,因此数据库中的每个数据文件都是唯一存在的,不存在另一个和该数据文件内容完全一样、互为镜像的数据文件,即数据库没有对数据文件冗余的功能。
当数据库中的某个数据文件丢失或是损坏时,由于无法读取该数据文件中的内容,数据库将无法正常使用,进而影响业务系统的正常运行。而通过物理备份的形式对数据文件进行恢复,所需时间较长,且如果丢失数据文件较多或全部丢失,在恢复过程中可能会丢失部分数据。尤其对于银行、通信、保险等行业中的生产数据库环境,即便是很小一部分数据的丢失也会给企业声誉和利益带来无法弥补的损失。因此,企业尽可能的对数据进行保护,例如两地三中心的冗余方案、存储层的冗余方案以及数据库集群方案等,最大可能的将对业务和数据的影响降到最低。
但即使如此,当数据文件损坏或者丢失时,对数据中心的切换或对数据库恢复必定会中断业务系统的正常运行,甚至还会有数据丢失的情况。而且当存储服务器由于性能、容量无法扩容等原因需要更换新的存储服务器时,需要将原存储服务器上的数据全部迁移到新的存储服务器,在这个过程中需要先停止数据库,然后将数据文件全部拷贝到新存储或者使用备份恢复到新的存储,将数据库启动到MOUNT后在数据库中修改数据文件路径,最后打开数据库。当数据量巨大时,更换工作需要花费相当长的时间,且容易出现操作失误。
发明内容
本发明的目的是提供一种数据库数据文件的冗余方法和装置,提升数据库的数据安全,在不影响数据运行或存在极小影响的情况下实现数据存储的在线更换。
为达到上述技术目的,本发明提供了一种数据库数据文件的冗余方法,包括以下步骤:
对数据库中的主数据文件进行添加镜像数据文件;
将主数据文件中的数据同步到镜像数据文件中;
设置主数据文件和镜像数据文件的并发控制机制。
优选地,所述添加镜像数据文件的具体过程为:
创建表空间时指定主数据文件的镜像数据文件;
向表空间增加主数据文件时指定其镜像数据文件;
对已有的主数据文件增加镜像数据文件。
优选地,所述主数据文件和镜像数据文件的并发控制机制为:当读取数据时,数据库自动将I/O请求分割并分别发送至主数据文件和镜像数据文件中进行读取操作;当写入数据时,数据库对主数据文件和镜像数据文件同时写入,只要两者任何一个数据文件写入成功即可返回确认写入的消息。
优选地,所述方法还包括以下步骤:设置数据文件镜像的视图和参数。
优选地,所述视图包括镜像操作视图、主数据文件视图和镜像数据文件视图,所述参数为镜像同步速度参数。
优选地,所述方法还包括以下步骤:镜像数据文件的删除操作。
优选地,在镜像的删除操作过程中,每次只能删除主数据文件和镜像数据文件中的任何一个。
本发明还提供了一种数据库数据文件的冗余装置,包括:
镜像模块,用于对数据库中的主数据文件进行添加镜像数据文件;
数据同步模块,用于将主数据文件中的数据同步到镜像数据文件中;
并发控制模块,用于设置主数据文件和镜像数据文件的读写并发操作控制机制。
优选地,所述装置还包括:
删除操作模块,用于对镜像数据文件的删除操作;
参数设置模块,用于设置数据文件镜像的视图和参数,控制镜像数据文件数据同步速度以及监控数据文件的镜像状态。
优选地,所述镜像模块包括:
表空间创建模块,用于创建表空间时指定主数据文件的镜像数据文件;
主数据文件添加模块,用于向表空间增加主数据文件时指定其镜像数据文件;
数据文件镜像模块,用于对已有的主数据文件增加镜像数据文件。
发明内容中提供的效果仅仅是实施例的效果,而不是发明所有的全部效果,上述技术方案中的一个技术方案具有如下优点或有益效果:
本发明在数据文件层面对数据库进行冗余,每份数据都会保存两份,分别存放在主数据文件和镜像数据文件中,当镜像中的一个数据文件出现问题时,另一个正常的数据文件可以继续提供数据读写服务,提高了数据的安全性。
当主数据文件和镜像数据文件分别放置在不同的存储服务器时,镜像中的两个数据文件可提供并行读写操作,可以有效的降低读写数据的等待时间,提高了数据库性能;并且当一台存储服务器出现故障时,不影响数据库的正常使用,避免了所在存储服务器发生故障时带来的数据丢失问题,提高了数据库的可用性。
当需要更换存储服务器时,通过在新存储服务器上为每个数据文件增加镜像数据文件,同步操作自动由数据库完成,同步完成后将原数据文件删除即可完成存储更换操作,更换过程中数据正常运行,不影响业务系统正常使用。
附图说明
图1为本发明实施例中所提供的一种数据库数据文件的冗余方法数据流程框图;
图2为本发明实施例的一种应用示意图;
图3为本发明实施例中所提供的一种数据库数据文件的冗余装置结构框图。
具体实施方式
为了能清楚说明本方案的技术特点,下面通过具体实施方式,并结合其附图,对本发明进行详细阐述。为了简化本发明的公开,下文中对特定例子的部件和设置进行描述。此外,本发明可以在不同例子中重复参考数字和/或字母。这种重复是为了简化和清楚的目的,其本身不指示所讨论各种实施例和/或设置之间的关系。应当注意,在附图中所图示的部件不一定按比例绘制。本发明省略了对公知组件和处理技术及工艺的描述以避免不必要地限制本发明。
下面结合附图对本发明实施例所提供的一种数据库数据文件的冗余方法进行详细说明。
如图1所示,本发明实施例所提供的一种数据库数据文件的冗余方法,它包括以下步骤:
对数据库中的主数据文件进行添加镜像数据文件;
将主数据文件中的数据同步到镜像数据文件中;
设置主数据文件和镜像数据文件的并发控制机制。
上述方法中,所述添加镜像数据文件的具体过程为:
创建表空间时指定主数据文件的镜像数据文件;
向表空间增加主数据文件时指定其镜像数据文件;
对已有的主数据文件增加镜像数据文件。
上述方法中,所述主数据文件和镜像数据文件的并发控制机制为:当读取数据时,数据库自动将I/O请求分割并分别发送至主数据文件和镜像数据文件中进行读取操作;当写入数据时,数据库对主数据文件和镜像数据文件同时写入,只要两者任何一个数据文件写入成功即可返回确认写入的消息。
上述方法中,所述的冗余方法还包括以下步骤:设置数据文件镜像的视图和参数,所述视图包括镜像操作视图、主数据文件视图和镜像数据文件视图,所述参数为镜像同步速度参数。
上述方法中,所述的冗余方法还包括以下步骤:镜像数据文件的删除操作,在镜像的删除操作过程中,每次只能删除主数据文件和镜像数据文件中的任何一个。
在数据文件层面对数据库进行冗余,每份数据都会保存两份,分别存放在主数据文件和镜像数据文件中,当镜像中的一个数据文件出现问题时,另一个正常的数据文件可以继续提供数据读写服务,提高了数据的安全性。图2为本发明实施例的一种应用情况,图2中数据库指代KDB数据库,存储1为放置主数据文件的存储区,存储2为放置镜像数据文件的存储区。如图2所示,以KDB数据库(一种大型关系型数据库)为例并结合图1来详细说明数据库数据文件的冗余方法的实施过程。首先为数据库中的数据文件增加镜像功能,因此设计部分SQL语法来添加镜像数据文件。添加镜像数据文件的方法有以下几种:
①创建表空间时指定数据文件镜像:
create tablespace tbs_name datafile'/kdbdata/tbsname1.dtf'mirrdatafile'/kdbdata/tbsnamemirr1.dtf'size 8G;
tbs_name为表空间名称,datafile表示增加数据文件,/kdbdata/tbsname1.dtf为指定的数据文件路径和名称,mirrdatafile表示为前面的数据文件指定一个镜像数据文件。
②向表空间增加数据文件时指定镜像数据文件:
alter tablespace tbs_name add datafile'/kdbdata/tbsname1.dtf'mirrdatafile'/kdbdata/tbsnamemirr1.dtf'size 8G;
上述两种方法都为新增数据文件的镜像添加方法,由于主数据文件和镜像数据文件都是新增加的,数据库对它们同时进行空间分配和格式化操作,两个数据文件格式及内容完全一致,即/kdbdata/tbsname1.dtf中的数据会自动向/kdbdata/tbsnamemirr1.dtf同步。
③对已有数据文件增加镜像数据文件:
alter datafile'/kdbdata/tbsname1.dtf'add mirrdatafile'/kdbdata/tbsnamemirr1.dtf';
该方法为已有数据文件增加镜像数据文件,数据库会将已有数据文件也即主数据文件中的内容完全复制到镜像数据文件中,在此拷贝同步过程中不影响数据库的正常使用。
以上镜像数据文件添加操作执行完毕后,数据库中的数据文件具有镜像功能。
数据库对于镜像功能的删除操作:
如果需要删除数据文件的镜像功能,使用正常的数据文件删除命令即可,不需要区分删除的是主数据文件还是镜像数据文件。如果删除的是镜像数据文件,主数据文件可以提供正常的读写功能;如果删除的是主数据文件,镜像数据文件可提供正常的读写功能。两种数据文件在数据库本身处理上不进行区分,删除时一次只能删除一个数据文件,主数据文件和镜像数据文件的删除顺序无要求。如果删除表空间,则该表空间中对应的主数据文件和镜像数据文件都将被自动删除。
为方便控制镜像数据文件数据同步速度和监控数据库中的数据文件镜像状态,新增数据库若干视图及参数。
v$mirror_operation视图,即镜像操作视图,用于查看主数据文件向镜像数据文件同步的速度,当视图中没有同步记录时,表示同步已经完成。
dba_data_files视图,即主数据文件视图,用于记录数据库中主数据文件的信息,file_name为主数据文件,TABLESPACE_NAME为对应的表空间名称。
dba_mirrdata_files视图,即镜像数据文件视图,用于记录数据库中镜像数据文件的信息,mirrfile_name镜像数据文件名称,file_name与之对应的主数据文件,TABLESPACE_NAME对应的表空间名称,STATUS镜像数据文件状态。
当镜像的主数据文件被删除后,其镜像数据文件信息会从dba_mirrdata_files移到dba_data_files中,镜像数据文件被删除后,其信息会从dba_mirrdata_files中删除。
数据库参数mirror_operation_limit,即镜像同步速度参数,用于指定主数据文件向镜像数据文件同步的速度,取值范围为1-10,默认值为1,取值越高,同步速度越快,也就消耗更多I/O和CPU资源。
通过设置主数据文件和镜像数据文件,当数据库对数据文件进行读写操作时,可以通过并发控制机制来提高数据读写效率。
当数据库对数据文件进行读取时,会将读取任务进行分拆,分别从主数据文件和镜像数据文件读取所需要的数据,例如需要读取1-100的数据,可以通过在主数据文件中读取1-50的数据,而在镜像数据文件中读取51-100的数据来完成,以并行读取的方式达到数据读取速度的最大化,提高数据库响应速度。
当数据库对数据文件进行写入时,会对主数据文件和镜像数据文件同时写入,只要两者任何一个数据文件写入成功即可返回确认写入的消息,同时,数据库会继续跟踪另一个数据文件的写入是否成功,如果写入成功则不作处理,如果写入不成功则重试3次,3次均失败则将该数据文件标记为失败。标记为失败的数据文件将不再进行读写操作,并在数据库视图和日志中记录,数据库管理员需要将该数据文件删除,删除后的数据文件将失去镜像功能,根据需要确定是否再次添加。
通过在数据文件层面对数据库进行冗余,每份数据都会保存两份,分别存放在主数据文件和镜像数据文件中,当镜像中的一个数据文件出现问题时,另一个正常的数据文件可以继续提供数据读写服务,提高了数据的安全性。当存储服务器发生故障或需要进行更换时,不影响数据库的正常使用,避免了所在存储服务器发生故障或更换存储服务器带来的数据丢失问题,提高了数据库的可用性。
如图3所示,本发明实施例还提供了一种数据库数据文件的冗余装置,包括:镜像模块、数据同步模块、并发控制模块、删除操作模块和参数设置模块,所述镜像模块模块包括表空间创建模块、主数据文件添加模块和数据文件镜像模块。
镜像模块,用于对数据库中的主数据文件进行添加镜像数据文件,通过对主数据文件添加镜像数据文件,完成镜像功能的添加。
数据同步模块,用于将主数据文件中的数据同步到镜像数据文件中,当同步操作完成后,两个数据文件的内容达到一致。
并发控制模块,用于设置主数据文件和镜像数据文件的读写并发操作控制机制,当读取数据时,数据库自动将I/O请求分割并分别发送至主数据文件和镜像数据文件中进行读取操作;当写入数据时,数据库对主数据文件和镜像数据文件同时写入,只要两者任何一个数据文件写入成功即可返回确认写入的消息。
删除操作模块,用于对镜像数据文件的删除操作,在镜像的删除操作过程中,每次只能删除主数据文件和镜像数据文件中的任何一个。
参数设置模块,用于设置数据文件镜像的视图和参数,控制镜像数据文件数据同步速度以及监控数据文件的镜像状态。
表空间创建模块,用于创建表空间时指定主数据文件的镜像数据文件;
主数据文件添加模块,用于向表空间增加主数据文件时指定其镜像数据文件;
数据文件镜像模块,用于对已有的主数据文件增加镜像数据文件。
本发明实施例的技术方案在数据文件层面对数据库进行冗余,每份数据都会保存两份,分别存放在主数据文件和镜像数据文件中,当镜像中的一个数据文件出现问题时,另一个正常的数据文件可以继续提供数据读写服务,提高了数据的安全性。
当主数据文件和镜像数据文件分别放置在不同的存储服务器时,镜像中的两个数据文件可提供并行读写操作,可以有效的降低读写数据的等待时间,提高了数据库性能;并且当一台存储服务器出现故障时,不影响数据库的正常使用,避免了所在存储服务器发生故障时带来的数据丢失问题,提高了数据库的可用性。
当需要更换存储服务器时,通过在新存储服务器上为每个数据文件增加镜像数据文件,同步操作自动由数据库完成,同步完成后将原数据文件删除即可完成存储更换操作,更换过程中数据正常运行,不影响业务系统正常使用。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。