具体实施方式
本发明实施例提供了一种数据容灾的方法、装置及系统,可在占用较少的硬件和传输资源的情况下,达到数据库容灾配置的目的。
参见图1,为本发明实施例提供的一个数据容灾系统实施例组成示意图;
如图所示,该数据容灾系统包括:
数据访问控制层400和数据访问驱动层500;所述数据访问控制层400介于数据访问驱动层与应用系统之间;
所述数据访问控制层400包括数据容灾装置4,该装置用于在数据访问控制层对多个数据库进行容灾配置,该配置包括主数据库和一个或者多个该主数据库的备用数据库,主数据库中需要备份的对象,对所述需要备份的对象在所述主数据库和所述备份数据库中的访问操作类型;
数据容灾装置4根据所述容灾配置对所述主数据库进行访问操作;访问所述主数据库失败时,切换访问该主数据库的备用数据库之一。
本发明实施例提供的数据容灾系统,通过在数据访问控制层对数据库进行容灾配置,并且确定对主数据库和备份数据库的访问操作类型,在对主数据库访问操作失败时,可以快速地切换到备份数据库,继续数据访问操作。
参见图2,为本发明中的又一数据容灾系统组成示意图,如图所示,该数据容灾系统包括:数据访问控制层400以及数据访问驱动层500、参与容灾配置的数据库1、数据库2、数据库3;
数据访问驱动层500中包括多种数据库语言;
所述数据访问控制层400包括数据容灾装置4,该装置用于在数据访问控制层500对多个数据库进行容灾配置。
该配置包括:将数据库1配置为主数据库,将数据库2和数据库3配置为主数据库1的备用数据库;配置主数据库1中需要备份的对象,以及对所述需要备份的对象在所述主数据库1和所述备份数据库2和备份数据库3中的访问操作类型。其中需要备份的对象可以是部分文件,或者数据表。
较佳的,该访问操作类型的配置具体为:在主数据库及其备份数据库中对所述需要备份的对象都可以进行写操作;在主数据库及其备份数据库中的至少一个数据库中对所述需要备份的对象可以进行读操作。在更具体的实施方式中,可以将不同具体类型的读操作分配给不同的数据库承担,以便于实现均衡负载。例如,具体参见图3,数据容灾装置4将不同的读操作分配给不同的数据库承担,获取文字信息的读操作在数据库1中读取数据,获取音频信息的读操作在数据库2中读取数据,获取视频信息的读操作在数据库3中读取数据,从而平衡各数据库之间的访问负载。需要说明的是,参与容灾配置的数据库1、数据库2、数据库3可以是不同类型的数据库。
数据容灾装置4根据所述容灾配置对所述主数据库1进行访问操作;访问所述主数据库1失败时,切换访问该主数据库1的备用数据库2和备用数据库3的其中之一。该访问操作既包括写操作,也包括读操作。
并且,数据容灾装置4在对所述主数据库或者备份数据库进行写操作失败时,还会对所述写操作失败的所述主数据库或者备份数据库进行监控;并且记录所述写操作失败的所述主数据库或者备份数据库的访问日志;所述写操作失败的所述主数据库或者备份数据库可以成功访问后,按照所述访问日志对所述主数据库或者备份数据库进行数据恢复。这样,参与容灾配置的各数据库之间才能保持数据的相同。而在读操作失败时,则可以不需要进行监控和日志的记录,而不影响各数据库的数据的同步。
本发明实施例提供的数据容灾系统,通过在数据访问控制层对数据库进行容灾配置,并且确定对主数据库和备份数据库的访问操作类型,在对数据库访问操作失败时,可以快速地切换到备份数据库,并根据记录的访问日志对数据库进行数据恢复。
参见图4,为本发明中的数据容灾方法实施例流程示意图:
在步骤100,在数据访问控制层对多个数据库进行容灾配置。该配置包括主数据库和一个或者多个该主数据库的备用数据库,主数据库中需要备份的对象,对所述需要备份的对象在所述主数据库和所述备份数据库中的访问操作类型;所述数据访问控制层介于数据访问驱动层与应用系统之间。
在步骤101,根据所述容灾配置对所述主数据库进行访问操作。该访问操作可能是写操作或者读操作。当对所述主数据库进行访问操作具体为进行写操作时,对所述备份数据库也进行写操作。这一步骤是为了满足参与容灾配置的数据库的数据同步性。
在步骤102,当步骤101中的访问所述主数据库失败时,切换访问该主数据库的备用数据库之一,直到访问成功。
本实施例的数据容灾方法,通过在数据访问控制层对数据库进行容灾配置,并且确定对主数据库和备份数据库的访问操作类型,在对数据库访问操作失败时,可以快速地切换到备份数据库。
参见图5,为本发明实施例提供的数据容灾方法另一个实施例流程示意图,本发明实施例中,数据访问驱动层中包含多种数据库语言,以实现在不同类型数据库中的数据读写,提高整个容灾系统的兼容性。
在步骤200,在数据访问控制层对多个数据库进行容灾配置,确定各个数据库之间的主备用关系,即确定一台数据库为主数据库,其余数据库为备用数据库,在主数据库出现故障不能正常工作时,由备用数据库接替主数据库工作。需要说明的是,该参与容灾配置的多个数据库可以是不同类型的数据库。所述容灾配置还包括配置主数据库中需要备份的对象,配置所述需要备份的对象在所述主数据库和所述备份数据库中的访问操作类型。该需要备份的对象例如数据表或者文件。
较佳的,该访问操作类型的配置可以具体为:在主数据库及其备份数据库中对所述需要备份的对象都可以进行写操作;在主数据库及其备份数据库中的至少一个数据库中对所述需要备份的对象可以进行读操作。
在步骤201,根据上述容灾配置对数据库进行访问操作;若访问操作类型是写操作,则执行步骤202;若访问操作类型是读操作,则执行步骤203
在步骤202,当判断该访问操作类型是写操作时,对所有参与容灾配置的数据库进行写操作。需要说明的是,数据访问驱动层中可以包含多种数据库语言,以实现在不同类型数据库中的数据读写。比如主数据库的语言是oracle,而备数据库的语言是一些免费的开源数据库如Mysql等等。
在步骤203,当判断该访问操作类型是读操作时,仅对前述容灾配置中可以进行读操作的数据库,进行读操作(即读取数据)。
在步骤204,判断该步骤202或者203的访问操作是否成功,若访问数据库成功,则完成正常的数据读写后结束访问;若该访问操作失败,则执行步骤205和步骤206。
在步骤205,若访问操作失败,停止对访问失败的数据库的访问操作,根据容灾配置,切换访问与访问失败的数据库具有容灾配置关系的其它数据库,并读取所需数据信息。例如,在步骤200进行容灾配置时,将数据库2、数据库3、配置为数据库1的备份数据库,则数据库1、数据库2、数据库3则称为具有容灾配置关系的数据库;若对主数据库1访问失败后,将访问切换到主数据库1的备份数据库2,若对备份数据库2访问失败后,将访问切换到与备份数据库3有容灾配置关系的备份数据库3;
在步骤206,当对所述主数据库1或者备份数据库2进行写操作失败时,发出访问失败通知;
在步骤207,对所述访问操作失败的所述主数据库1或者备份数据库2进行监控;
在步骤208,记录所述写操作失败的所述主数据库1或者备份数据库2的访问日志;
在步骤209,监测到所述写操作失败的所述主数据库1或者备份数据库2可以成功访问;
在步骤210,按照所述访问日志对所述主数据库1或者备份数据库2进行数据恢复;
在步骤211,停止对所述写操作失败的所述主数据库1或者备份数据库2进行监控,并对其恢复访问操作。
本实施例的数据容灾方法,在对数据库的访问过程中,数据访问驱动层中包含多种数据库语言,实现了在不同类型数据库中的数据读写,访问日志以所有参与容灾配置的数据库通用的语言表达,达到维护不同类型数据库的目的。同时,通过记录写操作的数据库的访问日志,减少数据库故障时需备份的数据量,恢复数据库时需要更新的数据量也比较小。本发明实施例允许对不同类型的数据库参与容灾配置、进行读写操作、数据维护,从而具有更好兼容性、可靠性。
参见图6,为本发明实施例提供的数据容灾方法又一个实施例流程示意图:
在步骤300,对数据库进行容灾配置,即配置包括主数据库和一个或者多个该主数据库的备用数据库,例如将数据库2和数据库3配置为数据库1的备份数据库,需要备份的对象为数据库1中的某些文件、数据表或者所有信息;当数据库1出现故障不能工作时,其工作由与之具有容灾配置关系的数据库2和数据库3代替。需要说明的是,所述参与容灾配置的多个数据库可以是不同类型的数据库。
在步骤301,在完成对主备份数据库的容灾配置后,对所述主数据库和所述备份数据库中的访问操作类型进行配置,较佳的,该访问操作类型的配置可以具体为:在主数据库及其备份数据库中对所述需要备份的对象都可以进行写操作;在主数据库及其备份数据库中的至少一个数据库中对所述需要备份的对象可以进行读操作。
采取这种容灾配置,将原本由主数据库承担的所有读取数据的访问操作,改为由参与容灾配置的主备数据库共同分担,以使各个数据有均衡的访问负载。需要说明的是,多个参与容灾配置的数据库中都具有完整的数据信息供读数据访问,还可以配置对于不同的数据类型,到不同的数据库中读取数据。例如图3所示:对于不同的数据类型的读操作分配给不同的数据库承担,获取文字信息的读操作在数据库1中读取数据,获取音频信息的读操作在数据库2中读取数据,获取视频信息的读操作在数据库3中读取数据,从而平衡各数据库之间的访问负载。
在步骤302,判断访问操作类型是写操作还是读操作。
在步骤303,当访问操作类型是写操作时,对所有参与容灾配置的数据库进行写操作。例如对数据库1、数据库2、数据库3进行写操作。
在步骤304,当访问操作类型是读操作时,根据步骤301中的容灾配置,确定应该在哪个数据库中读取数据后,在该数据库中进行读操作。例如访问操作类型为获取音频信息时,确定应该在数据库2中进行访问操作;
在步骤306,判断该步骤303或者304中的访问操作(读操作或者写操作)是否成功,若访问数据库成功,则完成正常的数据读写后结束访问;若访问操作失败,则执行步骤307和步骤308。
在步骤307,若访问数据库失败,停止对访问失败的数据库的访问操作,根据容灾配置关系,转为访问与访问失败的数据库具有容灾配置关系的其它数据库,并读取所需数据。例如访问数据库2失败后,可以转为访问与数据库2具有容灾配置关系的数据库1,因为数据库1中也写有相应的音频信息,因此数据库1与数据库2互为主备份数据库,可以接替数据库2提供音频信息;
在步骤308,在访问数据库失败后,发送访问失败通知。
在步骤309,收到所述访问失败通知后,对所述写操作失败的所述主数据库或者备份数据库进行监控;并发送访问记录通知。
在步骤310,收到访问记录通知后,查询访问失败的数据库的访问时间、访问内容等信息,并根据此信息记录访问失败的数据库的访问日志。需要说明的是,访问日志以所有参与容灾配置的数据库通用的语言表达。
在步骤311,根据数据库的访问情况更新容灾配置,将原来配置的在主数据库及其备份数据库中的至少一个数据库中对所述需要备份的对象可以进行读操作更新为在主数据库及其备份数据库中的其它数据库中进行读操作,以实现负载均衡。例如,如果原来配置需要备份的对象A、需要备份的对象B都可以在数据库2中进行读操作,但是根据当前的访问情况,数据库2的过多的被访问,而数据库3较少被访问,此时,可以将原配置修改为:需要备份的对象A可以在数据库2中进行读操作;需要备份的对象B可以在数据库3中进行读操作。
在步骤312,定时监测所述写操作失败的所述主数据库或者备份数据库;监测到可以成功访问所述写操作失败的所述主数据库或者备份数据库后,发出数据恢复通知。
在步骤313,收到所述数据恢复通知后,读取出现访问失败的数据库的访问日志;按照访问日志对出现访问失败的数据库进行数据恢复;该数据恢复完成后,向发出数据恢复完成通知。
在步骤314,在收到所述数据恢复完成通知后,停止对完成数据恢复后的数据库的监控,并分配数据访问操作类型从完成数据恢复的数据库读取数据。
本实施例提供的数据容灾方法,对多个数据库进行容灾配置后,使得用户读取数据的访问操作全部由主数据库承担的情况,转变为由参与容灾配置的数据库共同分担读取数据的访问操作,减轻了主数据库的访问负载,平衡各数据库之间的资源利用率,并且通过记录访问失败的数据库的访问日志,根据访问日志恢复数据库信息,减少数据库故障时需备份和恢复过程中的数据量。并且,在数据访问的过程中,可以根据访问的情况更新容灾配置,动态的平衡各数据库之间的资源利用率。
参见图7,为本发明中数据容灾装置一个实施例的组成示意图。
所述数据容灾装置包括:
容灾配置模块40,用于在数据访问控制层对多个数据库进行容灾配置,该配置包括主数据库和一个或者多个该主数据库的备用数据库,主数据库中需要备份的对象,对所述需要备份的对象在所述主数据库和所述备份数据库中的访问操作类型;所述数据访问控制层介于数据访问驱动层与应用系统之间;
数据操作模块41,用于根据所述容灾配置对所述主数据库进行访问操作;访问所述主数据库失败时,切换访问该主数据库的备用数据库之一。
较佳的,该需要备份的对象在所述主数据库和所述备份数据库中的访问操作类型的步骤具体为:在所述主数据库及其备份数据库中对所述需要备份的对象都可以进行写操作;在所述主数据库及其备份数据库中的至少一个数据库中对所述需要备份的对象可以进行读操作。
本发明实施例提供的数据容灾装置,通过在数据访问控制层对数据库进行容灾配置,并且确定对主数据库和备份数据库的访问操作类型,在对主数据库访问操作失败时,可以快速地切换到备份数据库,继续数据访问操作。
参见图8,为本发明中的数据容灾装置又一实施例组成示意图。
该装置除了包括图6所示的容灾配置模块40、数据恢复模块41之外,还包括:
访问监控模块42,用于在所述数据操作模块对所述主数据库或者备份数据库进行写操作失败时,接收数据操作模块41发送的访问失败通知,对所述写操作失败的所述主数据库或者备份数据库进行监控;
日志记录模块43,用于记录所述写操作失败的所述主数据库或者备份数据库的访问日志;
数据恢复模块44,用于在所述写操作失败的所述主数据库或者备份数据库可以成功访问后,按照所述访问日志对所述主数据库或者备份数据库进行数据恢复。
一个具体例子中,所述数据操作模块41可以包括:
数据操作单元410,用于根据所述容灾配置对所述主数据库进行访问操作具体为进行写操作时,对所述备份数据库也进行写操作;对所述主数据库或备份数据库的其中之一进行读操作;
信息收发单元411,用于在对所述主数据库或者备份数据库进行写操作失败时,向访问监控模块42发送访问失败通知;
操作切换单元412,用于在访问所述主数据库失败时,切换访问该主数据库的备用数据库之一。
一个具体例子中,该访问监控模块42可以包括:
信息收发单元420,用于在收到数据操作模块发送的访问失败通知时,向所述日志记录模块发出访问记录通知;
访问监控单元421,用于定时监测所述写操作失败的所述主数据库或者备份数据库,直至可以成功访问所述写操作失败的所述主数据库或者备份数据库;
监测到可以成功访问所述写操作失败的所述主数据库或者备份数据库后,所述信息收发单元420向数据恢复模块44发出数据恢复通知。
一个具体例子中,该日志记录模块43可以包括:
查询单元430,用于在收到访问监控模块42发送的访问记录通知后,查询访问失败的数据库的相关信息,包括:访问时间、访问操作类型及操作内容等。
记录单元431,用于根据查询单元430查询到的信息,以参与容灾配置的所有数据库通用的语言记录访问日志。
一个具体例子中,该数据恢复模块44可以包括:
信息收发单元440,用于与其它模块进行信息交互,包括:接收访问监控模块42发送的数据恢复通知;向访问监控模块42发送数据恢复完成通知。
日志查询单元441,用于在信息收发单元440收到访问监控模块42发送的数据恢复通知后,从日志记录模块43中读取待恢复的数据库的访问日志。
数据恢复单元442,用于根据日志查询单元411读取的访问日志,对待恢复的数据库进行数据恢复。数据恢复完成后数据恢复单元442通过信息收发单元440向访问监控模块42发送数据恢复完成通知。
本发明实施例提供的数据容灾装置,在对数据库的访问和恢复过程中,数据访问驱动层中包含多种数据库语言,实现了在不同类型数据库中的数据读写,访问日志以所有参与容灾配置的数据库通用的语言表达,达到维护不同类型数据库的目的。同时,通过记录访问失败的数据库的访问日志,减少数据库故障时需备份的数据量和恢复数据库时需要更新的数据量。本发明实施例允许对不同类型的数据库参与容灾配置、进行读写操作、数据维护,从而具有更好兼容性、可靠性、和可扩展性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一个计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所揭露的仅为本发明几种实施例而已,当然不能以此来限定本发明的权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。