CN109871369B - 数据库切换方法、系统、介质和装置 - Google Patents
数据库切换方法、系统、介质和装置 Download PDFInfo
- Publication number
- CN109871369B CN109871369B CN201811582496.2A CN201811582496A CN109871369B CN 109871369 B CN109871369 B CN 109871369B CN 201811582496 A CN201811582496 A CN 201811582496A CN 109871369 B CN109871369 B CN 109871369B
- Authority
- CN
- China
- Prior art keywords
- library
- database
- standby
- switching
- main
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种数据库切换方法、系统、介质和装置,包括以下步骤:数据库状态检测,确认主库是否无法对外提供服务,且判断备库是否正常;数据库切换前准备,检测主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对主库进行关机;数据库切换,从共享磁盘组读取主库的控制文件并在所述备库进行恢复,在备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库。本发明的一种数据库切换方法、系统、介质和装置,用于基于程序自带的运行脚本实现主库是否发生故障的自动检测,并在检测到主库发生故障后实现数据库的自动切换;达到数据库快速切换的目的;并利用共享磁盘组中主库的归档日志进行恢复,实现了数据无损切换。
Description
技术领域
本发明涉及数据库切换领域,特别是涉及一种数据库切换方法、系统、介质和装置。
背景技术
在现有的互联网形态,要求数据可以7*24小时不间断的服务。长时间的停止业务或者数据丢失都会造成资损,这是互联网公司所不愿看到的。而现有技术中采用的切换方式要么需要人工进行切换,要么切换时间超长,要么切换后会有少部分数据丢失。
如Oracle数据库自带的switchover进行主从切换,主要缺点如下:数据自带的DG切换方案,利用数据命令进行手工切换。属于计划内的手工操作,无法处理紧急情况。切换时间较长,尤其是大数据库切换需要花费1个小时甚至更久。不能自动进行数据库状态检测,需要过多人工介入处理。
如Oracle数据库自带的failover进行强制切换,主要缺点如下:宕机后需要人工进行处理,造成部分数据丢失。
发明内容
鉴于以上所述现有技术的缺点,本发明的目的在于提供一种数据库切换方法、系统、介质和装置,用于解决现有技术中如何自动判断主库是否可用,如何实现自动切换,如何避免人工介入处理;如何避免切换数据库时间长;如何避免切换时造成的数据丢失的问题。
为实现上述目的及其他相关目的,本发明提供一种数据库切换方法,包括以下步骤:步骤S11,数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常;步骤S12,数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机;步骤S13,数据库切换,从共享磁盘组读取所述主库的控制文件和REDO(重做)日志文件并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库。
于本发明的一实施例中,所述步骤S11,数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常具体包括以下步骤;步骤S1101,运行确认所述主库是否无法对外提供服务,且判断备库是否正常的脚本;步骤S1102,判断是否正在执行其他切换程序;步骤S1103,当正在执行其他切换程序时,则退出步骤S11的执行;步骤S1104,当没有正在执行其他切换程序时,按照第一预设时间间隔与所述主库创建连接;步骤S1105,判断与所述主库创建连接是否成功;步骤S1106,当与所述主库创建连接不成功时,判断所述备库与所述主库的延迟是否超过第二预设时间间隔且未超过第三预设时间间隔;当所述备库与所述主库的延迟未超过第二预设时间间隔或超过第三预设时间间隔则跳转至步骤S1104;步骤S1107,当与所述主库创建连接成功时,判断所述主库心跳表是否能正常插入数据;当所述主库心跳表能够正常插入数据时则跳转至步骤S1104;步骤S1108,当所述主库心跳表不能正常插入数据,按照第四预设时间间隔共尝试第四预设次数对所述主库心跳表插入数据;当在第四预设时间间隔共尝试第四预设次数内所述主库心跳表能正常插入数据则跳转至步骤S1104;步骤S1109,当所述备库与所述主库的延迟超过第二预设时间间隔且未超过第三预设时间间隔时,检测网关是否可用;当所述网关不可用时跳转至步骤S1104;步骤S1110,当所述网关可用时判断所述主库的IP是否可用;步骤S1111,当所述主库的IP可用时,尝试修复所述主库;当修复所述主库时则跳转至步骤S1104;步骤S1112,当修复所述主库失败时或所述主库的IP不可用时,检测所述备库的状态是否可用;步骤S1113,当所述备库的状态可用时,检测所述备库是否有断档;当所述备库有断档时则跳转至步骤S1104;步骤S1114,当所述备库没有断档时进入数据库切换前准备。
于本发明的一实施例中,所述第一预设时间间隔为10秒,所述第二预设时间间隔为1分钟,所述第三预设时间间隔为1小时,所述第四预设时间间隔为10秒,所述第四预设次数为五次。
于本发明的一实施例中,步骤S12,数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机具体包括以下步骤;步骤S1201,检测所述主库的带外管理节点是否可用;步骤S1202,当所述带外管理节点不可用时,按照第五预设时间间隔尝试第五预设次数;步骤S1203,当所述带外管理节点可用时或在第五预设时间间隔尝试第五预设次数内所述带外管理节点可用时,使用所述带外管理节点关闭所述主库;步骤S1204,当所述带外管理节点不能关闭所述主库时,按照第六预设时间间隔尝试第六预设次数;步骤S1205,当按照第五预设时间间隔尝试第五预设次数后所述带外管理节点还是不可用时,或当按照第六预设时间间隔尝试第六预设次数内所述带外管理节点能关闭所述主库时,或当按照第六预设时间间隔尝试第六预设次数后述带外管理节点不能关闭所述主库时,检测所述主库是否被关机;步骤S1206,当所述主库未被关机时,则所述主库无法关闭不能完成所述主库与备库的切换;步骤S1207,当所述主库被关机时,则执行切换脚本。
于本发明的一实施例中,所述第五预设时间间隔为5秒,所述第五预设次数为4次;所述第六预设时间间隔为10秒,所述第六预设次数为9次。
于本发明的一实施例中,所述步骤S13,数据库切换,从共享磁盘组读取所述主库的控制文件与REDO日志并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库具体包括以下步骤;步骤S1301,检查所述备库切换为主库过程中必要的参数是否正常;步骤S1302,关闭所述备库正在进行的会话;步骤S1303,登录所述备库,创建所述备库的数据库连接;步骤S1304,处理共享磁盘组;步骤S1305,在备库检测共享磁盘组状态是否为mount状态;步骤S1306,当所述共享磁盘组为nomount状态时,启动所述共享磁盘组到mount状态;步骤S1307,当所述共享磁盘组为mount状态时,检测所述备库的控制文件状态;步骤S1308,启动所述共享磁盘组到mount状态失败时,按照第七预设时间间隔尝试第七预设次数;若成功启动所述共享磁盘组到mount状态则跳转至步骤S1307;步骤S1309,若启动所述共享磁盘组到mount状态失败则切换失败;步骤S1310,返回失败的原因;步骤S1311,当所述备库的控制文件状态可用时,检测所述备库的角色;步骤S1312,当所述备库的角色已经为主库时,则无需切换所述备库的角色;步骤S1313,当所述备库的角色还为备库时,备份所述备库的控制文件至所述共享磁盘组;步骤S1314,关闭所述备库的数据库;步骤S1315,启动所述备库到nomount状态;若不成功则跳转至步骤S1309;步骤S1316,从所述共享磁盘组读取所述主库的控制文件与REDO日志并在所述备库进行恢复;若不成功则跳转至步骤S1309;步骤S1317,启动所述备库到mount状态;若不成功则跳转至步骤S1309;步骤S1318,注册所述备库的所有数据文件和归档日志;若不成功则跳转至步骤S1309;步骤S1319,将所述备库正式切换为新主库;若不成功则跳转至步骤S1309;步骤S1320,启动所述新主库的数据库;若不成功则跳转至步骤S1309;步骤S1321,处理所述新主库的临时表空间和归档日志;若不成功则跳转至步骤S1309;步骤S1322,修改所述新主库的域名;若不成功则跳转至步骤S1309;步骤S1323,切换成功。
于本发明的一实施例中,所述第七预设时间间隔为10秒,所述第七预设次数为5次。
为实现上述目的,本发明还提供一种数据库切换系统,包括:检测模块、准备模块和切换模块;所述检测模块用于数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常;所述准备模块用于数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机;所述切换模块用于数据库切换,从共享磁盘组读取所述主库的控制文件和REDO日志文件并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库。
为实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一上述数据库切换方法。
为实现上述目的,本发明还提供一种数据库切换装置,包括:处理器和存储器;所述存储器用于存储计算机程序;所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使所述数据库切换装置执行任一上述的数据库切换方法。
如上所述,本发明的一种数据库切换方法、系统、介质和装置,具有以下有益效果:基于程序自带的运行脚本实现主库是否发生故障的自动检测,并在检测到主库发生故障后实现数据库的自动切换。本系统能够实时发现数据库状态,并建立了数据库宕机状态的判别机制,在此判别的基础上完成数据库切换。基于failover切换方案的基础上进行改进实现数据库的快速切换。经生产验证,切换时间可以控制在10分钟内。相比较于传统的从发现故障到进行手工处理快了不止三倍。实现了数据库高可用高实时的性能要求。在切换数据库时从共享磁盘组读取控制文件和REDO日志文件并在备库进行恢复,实现了在线日志的恢复,做到了无损切换。在切换过程中通过在所述备库注册所述主库的所有数据文件和归档日志,保证了数据库切换的零数据丢失。实现了保证数据强一致性的要求。
附图说明
图1显示为本发明的数据库切换方法于一实施例中的流程图;
图2显示为本发明的数据库切换方法的数据库状态检测于一实施例中的流程图;
图3显示为本发明的数据库切换方法的数据库切换前准备于一实施例中的流程图;
图4显示为本发明的数据库切换方法的数据库切换于一实施例中的流程图;
图5显示为本发明的数据库切换系统于一实施例中的结构示意图;
图6显示为本发明的数据库切换装置于一实施例中的结构示意图。
元件标号说明
51检测模块
52准备模块
53切换模块
61处理器
62存储器
具体实施方式
以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。需说明的是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。
需要说明的是,以下实施例中所提供的图示仅以示意方式说明本发明的基本构想,遂图式中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。
本发明的数据库切换方法、系统、介质和装置,基于程序自带的运行脚本实现主库是否发生故障的自动检测,并在检测到主库发生故障后实现数据库的自动切换。本系统能够实时发现数据库状态,并建立了数据库宕机状态的判别机制,在此判别的基础上完成数据库切换。基于failover切换方案的基础上进行改进实现数据库的快速切换。经生产验证,切换时间可以控制在10分钟内。相比较于传统的从发现故障到进行手工处理快了不止三倍。实现了数据库高可用高实时的性能要求。在切换数据库时从共享磁盘组读取控制文件和REDO日志文件并在备库进行恢复,实现了在线日志的恢复,做到了无损切换。在切换过程中通过在所述备库注册所述主库的所有数据文件和归档日志,保证了数据库切换的零数据丢失。实现了保证数据强一致性的要求。
数据库架构的好坏取决于其持续不间断提供服务的时间,但是随着业务的发着以及一些意外的情况,总会遇到各种宕机的情况。此时通过切换数据库来达到业务持续高可用的目的。以往的方案要么需要长时间的停机时间,要么会有数据损失。本装置采用了非传统的Oracle数据库架构,利用此架构可以实现数据无损切换。数据库状态检测步骤用于实时检测主机状态,数据库切换前准备和数据库切换步骤实现了自动化主库和备库切换。本发明的主库和备库的数据文件放到本地磁盘中。日志文件通过集群管理放到共享存储(ASM磁盘组)中。日志中放到共享存储可以保证主库发生故障时,备库依然可以访问主库的日志信息,这样就可以在进行数据库切换的过程中读取相应日志文件,保证数据无损恢复,进而实现了无损数据库切换。
如图1所示,于一实施例中,本发明的数据库切换方法,包括以下步骤:
步骤S11、数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常。
如图2所示,于本发明一实施例中,所述所述步骤S11,数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常具体包括以下步骤。步骤S1101,运行确认所述主库是否无法对外提供服务,且判断备库是否正常的脚本,需要确保主库真的无法对外提供服务,才能进行主库和备库的切换,以往的过程中,都是通过zabbix监控系统进行告警,然后人工登录机器进行查验,然后进行手工切换。这种方式耗时长,且反馈慢。一般到真正确定要切换已经半个小时过去了。这样数据库服务不可用的时间极大的拉长。因此进行数据库的状态自动化检测是实现快速切换的首要目标。步骤S1102,判断是否正在执行其他切换程序,检测是否有其他程序在进行切换,避免重复执行。步骤S1103,当正在执行其他切换程序时,则退出步骤S11的执行。步骤S1104,当没有正在执行其他切换程序时,按照第一预设时间间隔与所述主库创建连接。具体地,所述所述第一预设时间间隔为10秒。步骤S1105,判断与所述主库创建连接是否成功,检测主库是否可连接,为了确认主库状态,判断主库是否可提供服务。步骤S1106,当与所述主库创建连接不成功时,判断所述备库与所述主库的延迟是否超过第二预设时间间隔且未超过第三预设时间间隔。当所述备库与所述主库的延迟未超过第二预设时间间隔或超过第三预设时间间隔则跳转至步骤S1104。具体地,第二预设时间间隔为1分钟,所述第三预设时间间隔为1小时。具体地,当所述备库与所述主库的延迟为2分钟时,则进入步骤S1109。当所述所述备库与所述主库的延迟为30秒或2小时时则跳转至步骤S1104。例如,步骤S1107,步骤S1107,当与所述主库创建连接成功时,判断所述主库心跳表是否能正常插入数据;当所述主库心跳表能够正常插入数据时则跳转至步骤S1104。步骤S1108,当所述主库心跳表不能正常插入数据时即为不能正常使用,按照第四预设时间间隔共尝试第四预设次数对所述主库心跳表插入数据;当在第四预设时间间隔共尝试第四预设次数内所述主库心跳表能正常插入数据则跳转至步骤S1104。具体地,所述第四预设时间间隔为10秒,所述第四预设次数为五次。例如在第五次尝试的时候所述主库心跳表插入数据时则跳转至步骤S1104。步骤S1109,当所述备库与所述主库的延迟超过第二预设时间间隔且未超过第三预设时间间隔时,检测网关是否可用;当所述网关不可用时跳转至步骤S1104。检测网关是否可用,是为了确认主库与备库之间不会出现脑裂。步骤S1110,当所述网关可用时判断所述主库的IP是否可用。步骤S1111,当所述主库的IP可用时,尝试修复所述主库;当修复所述主库时则跳转至步骤S1104。步骤S1112,当修复所述主库失败时或所述主库的IP不可用时,检测所述备库的状态是否可用。步骤S1113,当所述备库的状态可用时,检测所述备库是否有断档;当所述备库有断档时则跳转至步骤S1104。有断档说明备库也存在一定问题,此时不能进行切换。步骤S1114,当所述备库没有断档时进入数据库切换前准备。
步骤S12、数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机。
如图3所示,于本发明一实施例中,所述步骤S12,数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机具体包括以下步骤。步骤S1201,检测所述主库的带外管理节点是否可用。所述带外管理节点为关闭所述主库的物理关机模块。步骤S1202,当所述带外管理节点不可用时,按照第五预设时间间隔尝试第五预设次数。具体地,所述第五预设时间间隔为5秒,所述第五预设次数为4次。具体地,当第四次检测所述带外管理节点可用后,跳转至步骤S1203。或当第二次检测所述带外管理节点可用后,跳转至步骤S1203。当第四次检测所述带外管理节点不可用后,跳转至步骤S1205。步骤S1203,当所述带外管理节点可用时或在第五预设时间间隔尝试第五预设次数内所述带外管理节点可用时,使用所述带外管理节点关闭所述主库。步骤S1204,当所述带外管理节点不能关闭所述主库时,按照第六预设时间间隔尝试第六预设次数。具体地,所述第六预设时间间隔为10秒,所述第六预设次数为9次。具体地,当第九次尝试使用所述带外管理节点关闭所述主库成功后,跳转至步骤S1205。或当第二次尝试使用所述带外管理节点关闭所述主库成功后,跳转至步骤S1205。当第九次尝试使用所述带外管理节点关闭所述主库失败后,跳转至步骤S1205。步骤S1205,当按照第五预设时间间隔尝试第五预设次数后所述带外管理节点还是不可用时,或当按照第六预设时间间隔尝试第六预设次数内所述带外管理节点能关闭所述主库时,或当按照第六预设时间间隔尝试第六预设次数后述带外管理节点不能关闭所述主库时,检测所述主库是否被关机。步骤S1206,当所述主库未被关机时,则所述主库无法关闭不能完成所述主库与备库的切换。步骤S1207,当所述主库被关机时,则执行切换脚本。
步骤S13,数据库切换,从共享磁盘组读取所述主库的控制文件和REDO日志文件并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库。
如图4所示,于本发明一实施例中,所述步骤S13,数据库切换,从共享磁盘组读取所述主库的控制文件与REDO日志并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库具体包括以下步骤。步骤S1301,检查所述备库切换为主库过程中必要的参数是否正常,以保证切换的正常进行。步骤S1302,关闭所述备库正在进行的会话。确保切换过程中无业务数据影响。步骤S1303,登录所述备库,创建所述备库的数据库连接。步骤S1304,处理共享磁盘组,所述共享磁盘组为通过管理软件对磁盘进行操作的磁盘组。共享存储管理除了ASM实例之外,最大的组成部分就是ASM磁盘组。一个ASM磁盘组由过多个ASM磁盘组成。一个磁盘组内可以存放多个数据文件,一个数据文件仅仅只能位于一个磁盘组内,不能跨磁盘组。多个数据库可以共享相同的或多个磁盘组。步骤S1305,在备库检测共享磁盘组状态是否为mount状态。Mount状态是用来维护数据库的,比如数据库出现了问题,数据文件被误删除,就无法打开,这时可在mount状态下将数据文件从数据库中去除。mount状态下控制文件是打开的。步骤S1306,当所述共享磁盘组为nomount状态时,启动所述共享磁盘组到mount状态。nomount状态下启动Oracle数据库时只要实例启动了(即所有内存缓冲区全部生成立并且所需的所有后台进程都启动了),而所有的文件包括控制文件都没有打开。这一状态一般是在创建数据库时使用。步骤S1307,当所述共享磁盘组为mount状态时,检测所述备库的控制文件状态。步骤S1308,启动所述共享磁盘组到mount状态失败时,按照第七预设时间间隔尝试第七预设次数;若成功启动所述共享磁盘组到mount状态则跳转至步骤S1307。具体地,所述第七预设时间间隔为10秒,所述第七预设次数为5次。例如,第五次启动所述共享磁盘组到mount状态失败,则跳转至步骤S1309。或者第五次启动所述共享磁盘组到mount状态成功,则跳转至步骤S1307。或者第四次启动所述共享磁盘组到mount状态成功,则跳转至步骤S1307。步骤S1309,若启动所述共享磁盘组到mount状态失败则切换失败。步骤S1310,返回失败的原因。具体地,所述失败原因包括对应错误的编号。步骤S1311,当所述备库的控制文件状态可用时,检测所述备库的角色。步骤S1312,当所述备库的角色已经为主库时,则无需切换所述备库的角色。步骤S1313,当所述备库的角色还为备库时,备份所述备库的控制文件至所述共享磁盘组。步骤S1314,关闭所述备库的数据库。步骤S1315,启动所述备库到nomount状态;若不成功则跳转至步骤S1309。步骤S1316,从所述共享磁盘组读取所述主库的控制文件与REDO日志并在所述备库进行恢复;若不成功则跳转至步骤S1309。步骤S1317,启动所述备库到mount状态;若不成功则跳转至步骤S1309。步骤S1318,注册所述备库的所有数据文件和归档日志;若不成功则跳转至步骤S1309。步骤S1319,将所述备库正式切换为新主库;若不成功则跳转至步骤S1309。步骤S1320,启动所述新主库的数据库;若不成功则跳转至步骤S1309。步骤S1321,处理所述新主库的临时表空间和归档日志;若不成功则跳转至步骤S1309。步骤S1322,修改所述新主库的域名(DNS);若不成功则跳转至步骤S1309。以确保应用连接到现有的主库。步骤S1323,切换成功。
如图5所示,于一实施例中,本发明的数据库切换系统,包括检测模块51、准备模块52、和切换模块53。
所述检测模块51用于数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常。
所述准备模块52用于数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机。
所述切换模块53用于数据库切换,从共享磁盘组读取所述主库的控制文件和REDO日志文件并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库。
于本发明一实施例中,所述具体步骤与方法中的步骤一一对应,在此不再赘述。
需要说明的是,应理解以上系统的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块通过处理元件调用软件的形式实现,部分模块通过硬件的形式实现。例如,x模块可以为单独设立的处理元件,也可以集成在上述装置的某一个芯片中实现,此外,也可以以程序代码的形式存储于上述装置的存储器中,由上述装置的某一个处理元件调用并执行以上x模块的功能。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。这里所述的处理元件可以是一种集成电路,具有信号的处理能力。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,简称ASIC),或,一个或多个微处理器(Digital Singnal Processor,简称DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,简称FPGA)等。再如,当以上某个模块通过处理元件调度程序代码的形式实现时,该处理元件可以是通用处理器,例如中央处理器(Central Processing Unit,简称CPU)或其它可以调用程序代码的处理器。再如,这些模块可以集成在一起,以片上系统(system-on-a-chip,简称SOC)的形式实现。
于本发明一实施例中,本发明还包括一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一所述数据库切换方法。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过计算机程序相关的硬件来完成。前述的计算机程序可以存储于一计算机可读存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
如图6所示,于一实施例中,本发明的数据库切换装置包括:处理器61和存储器62;所述存储器62用于存储计算机程序;所述处理器61与所述存储器62相连,用于执行所述存储器62存储的计算机程序,以使所述数据库切换装置执行任一所述的数据库切换方法。
具体地,所述存储器62包括:ROM、RAM、磁碟、U盘、存储卡或者光盘等各种可以存储程序代码的介质。
优选地,所述处理器61可以是通用处理器,包括中央处理器(Central ProcessingUnit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
综上所述,本发明数据库切换方法、系统、介质和装置,基于程序自带的运行脚本实现主库是否发生故障的自动检测,并在检测到主库发生故障后实现数据库的自动切换。本系统能够实时发现数据库状态,并建立了数据库宕机状态的判别机制,在此判别的基础上完成数据库切换。基于failover切换方案的基础上进行改进实现数据库的快速切换。经生产验证,切换时间可以控制在10分钟内。相比较于传统的从发现故障到进行手工处理快了不止三倍。实现了数据库高可用高实时的性能要求。在切换数据库时从共享磁盘组读取控制文件和REDO日志文件并在备库进行恢复,实现了在线日志的恢复,做到了无损切换。在切换过程中通过在所述备库注册所述主库的所有数据文件和归档日志,保证了数据库切换的零数据丢失。实现了保证数据强一致性的要求。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。
Claims (9)
1.一种数据库切换方法,其特征在于,包括以下步骤:
步骤S11,数据库状态检测,确认主库是否无法对外提供服务,且判断备库是否正常;
步骤S12,数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机;
步骤S13,数据库切换,从共享磁盘组读取所述主库的控制文件和REDO日志文件并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库;
所述步骤S11,数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常具体包括以下步骤;
步骤S1101,运行确认所述主库是否无法对外提供服务,且判断备库是否正常的脚本;
步骤S1102,判断是否正在执行其他切换程序;
步骤S1103,当正在执行其他切换程序时,则退出步骤S11的执行;
步骤S1104,当没有正在执行其他切换程序时,按照第一预设时间间隔与所述主库创建连接;
步骤S1105,判断与所述主库创建连接是否成功;
步骤S1106,当与所述主库创建连接不成功时,判断所述备库与所述主库的延迟是否超过第二预设时间间隔且未超过第三预设时间间隔;当所述备库与所述主库的延迟未超过第二预设时间间隔或超过第三预设时间间隔则跳转至步骤S1104;
步骤S1107,当与所述主库创建连接成功时,判断所述主库心跳表是否能正常插入数据;当所述主库心跳表能够正常插入数据时则跳转至步骤S1104;
步骤S1108,当所述主库心跳表不能正常插入数据,按照第四预设时间间隔共尝试第四预设次数对所述主库心跳表插入数据;当在第四预设时间间隔共尝试第四预设次数内所述主库心跳表能正常插入数据则跳转至步骤S1104;
步骤S1109,当所述备库与所述主库的延迟超过第二预设时间间隔且未超过第三预设时间间隔时,检测网关是否可用;当所述网关不可用时跳转至步骤S1104;
步骤S1110,当所述网关可用时判断所述主库的IP是否可用;
步骤S1111,当所述主库的IP可用时,尝试修复所述主库;当修复所述主库时则跳转至步骤S1104;
步骤S1112,当修复所述主库失败时或所述主库的IP不可用时,检测所述备库的状态是否可用;
步骤S1113,当所述备库的状态可用时,检测所述备库是否有断档;当所述备库有断档时则跳转至步骤S1104;
步骤S1114,当所述备库没有断档时进入数据库切换前准备。
2.根据权利要求1所述的数据库切换方法,其特征在于,所述第一预设时间间隔为10秒,所述第二预设时间间隔为1分钟,所述第三预设时间间隔为1小时,所述第四预设时间间隔为10秒,所述第四预设次数为五次。
3.根据权利要求1所述的数据库切换方法,其特征在于,步骤S12,数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机具体包括以下步骤;
步骤S1201,检测所述主库的带外管理节点是否可用;
步骤S1202,当所述带外管理节点不可用时,按照第五预设时间间隔尝试第五预设次数;
步骤S1203,当所述带外管理节点可用时或在第五预设时间间隔尝试第五预设次数内所述带外管理节点可用时,使用所述带外管理节点关闭所述主库;
步骤S1204,当所述带外管理节点不能关闭所述主库时,按照第六预设时间间隔尝试第六预设次数;
步骤S1205,当按照第五预设时间间隔尝试第五预设次数后所述带外管理节点还是不可用时,或当按照第六预设时间间隔尝试第六预设次数内所述带外管理节点能关闭所述主库时,或当按照第六预设时间间隔尝试第六预设次数后述带外管理节点不能关闭所述主库时,检测所述主库是否被关机;
步骤S1206,当所述主库未被关机时,则所述主库无法关闭不能完成所述主库与备库的切换;
步骤S1207,当所述主库被关机时,则执行切换脚本。
4.根据权利要求3所述的数据库切换方法,其特征在于,所述第五预设时间间隔为5秒,所述第五预设次数为4次;所述第六预设时间间隔为10秒,所述第六预设次数为9次。
5.根据权利要求1所述的数据库切换方法,其特征在于,所述步骤S13,数据库切换,从共享磁盘组读取所述主库的控制文件与REDO日志并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库具体包括以下步骤;
步骤S1301,检查所述备库切换为主库过程中必要的参数是否正常;
步骤S1302,关闭所述备库正在进行的会话;
步骤S1303,登录所述备库,创建所述备库的数据库连接;
步骤S1304,处理共享磁盘组;
步骤S1305,在备库检测共享磁盘组状态是否为mount状态;
步骤S1306,当所述共享磁盘组为nomount状态时,启动所述共享磁盘组到mount状态;
步骤S1307,当所述共享磁盘组为mount状态时,检测所述备库的控制文件状态;
步骤S1308,启动所述共享磁盘组到mount状态失败时,按照第七预设时间间隔尝试第七预设次数;若成功启动所述共享磁盘组到mount状态则跳转至步骤S1307;
步骤S1309,若启动所述共享磁盘组到mount状态失败则切换失败;
步骤S1310,返回失败的原因;
步骤S1311,当所述备库的控制文件状态可用时,检测所述备库的角色;
步骤S1312,当所述备库的角色已经为主库时,则无需切换所述备库的角色;
步骤S1313,当所述备库的角色还为备库时,备份所述备库的控制文件至所述共享磁盘组;
步骤S1314,关闭所述备库的数据库;
步骤S1315,启动所述备库到nomount状态;若不成功则跳转至步骤S1309;
步骤S1316,从所述共享磁盘组读取所述主库的控制文件与REDO日志并在所述备库进行恢复;若不成功则跳转至步骤S1309;
步骤S1317,启动所述备库到mount状态;若不成功则跳转至步骤S1309;
步骤S1318,注册所述备库的所有数据文件和归档日志;若不成功则跳转至步骤S1309;
步骤S1319,将所述备库正式切换为新主库;若不成功则跳转至步骤S1309;
步骤S1320,启动所述新主库的数据库;若不成功则跳转至步骤S1309;
步骤S1321,处理所述新主库的临时表空间和归档日志;若不成功则跳转至步骤S1309;
步骤S1322,修改所述新主库的域名;若不成功则跳转至步骤S1309;
步骤S1323,切换成功。
6.根据权利要求5所述的数据库切换方法,其特征在于,所述第七预设时间间隔为10秒,所述第七预设次数为5次。
7.一种数据库切换系统,其特征在于,包括:检测模块、准备模块和切换模块;
所述检测模块用于数据库状态检测,确认主库是否无法对外提供服务,且判断备库是否正常;
所述准备模块用于数据库切换前准备,检测所述主库的带外管理节点是否可用,当所述带外管理节点可用时通过所述带外管理节点对所述主库进行关机;
所述切换模块用于数据库切换,从共享磁盘组读取所述主库的控制文件和REDO日志文件并在所述备库进行恢复,在所述备库注册所述主库的所有数据文件和归档日志,将所述备库切换为新主库;
所述检测模块用于数据库状态检测,确认所述主库是否无法对外提供服务,且判断备库是否正常包括:
步骤S1101,运行确认所述主库是否无法对外提供服务,且判断备库是否正常的脚本;
步骤S1102,判断是否正在执行其他切换程序;
步骤S1103,当正在执行其他切换程序时,则退出步骤S11的执行;
步骤S1104,当没有正在执行其他切换程序时,按照第一预设时间间隔与所述主库创建连接;
步骤S1105,判断与所述主库创建连接是否成功;
步骤S1106,当与所述主库创建连接不成功时,判断所述备库与所述主库的延迟是否超过第二预设时间间隔且未超过第三预设时间间隔;当所述备库与所述主库的延迟未超过第二预设时间间隔或超过第三预设时间间隔则跳转至步骤S1104;
步骤S1107,当与所述主库创建连接成功时,判断所述主库心跳表是否能正常插入数据;当所述主库心跳表能够正常插入数据时则跳转至步骤S1104;
步骤S1108,当所述主库心跳表不能正常插入数据,按照第四预设时间间隔共尝试第四预设次数对所述主库心跳表插入数据;当在第四预设时间间隔共尝试第四预设次数内所述主库心跳表能正常插入数据则跳转至步骤S1104;
步骤S1109,当所述备库与所述主库的延迟超过第二预设时间间隔且未超过第三预设时间间隔时,检测网关是否可用;当所述网关不可用时跳转至步骤S1104;
步骤S1110,当所述网关可用时判断所述主库的IP是否可用;
步骤S1111,当所述主库的IP可用时,尝试修复所述主库;当修复所述主库时则跳转至步骤S1104;
步骤S1112,当修复所述主库失败时或所述主库的IP不可用时,检测所述备库的状态是否可用;
步骤S1113,当所述备库的状态可用时,检测所述备库是否有断档;当所述备库有断档时则跳转至步骤S1104;
步骤S1114,当所述备库没有断档时进入数据库切换前准备。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至6中任一项所述数据库切换方法。
9.一种数据库切换装置,其特征在于,包括:处理器和存储器;
所述存储器用于存储计算机程序;
所述处理器与所述存储器相连,用于执行所述存储器存储的计算机程序,以使所述数据库切换装置执行权利要求1至6中任一项所述的数据库切换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811582496.2A CN109871369B (zh) | 2018-12-24 | 2018-12-24 | 数据库切换方法、系统、介质和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811582496.2A CN109871369B (zh) | 2018-12-24 | 2018-12-24 | 数据库切换方法、系统、介质和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109871369A CN109871369A (zh) | 2019-06-11 |
CN109871369B true CN109871369B (zh) | 2021-03-23 |
Family
ID=66917262
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811582496.2A Active CN109871369B (zh) | 2018-12-24 | 2018-12-24 | 数据库切换方法、系统、介质和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109871369B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427423A (zh) * | 2019-06-28 | 2019-11-08 | 苏州浪潮智能科技有限公司 | 一种避免数据库会话中断的方法、设备及可读介质 |
CN110442650A (zh) * | 2019-08-09 | 2019-11-12 | 中国工商银行股份有限公司 | 数据库切换方法、装置、系统、电子设备及存储介质 |
CN111125060B (zh) * | 2019-12-17 | 2023-10-31 | 中国联合网络通信集团有限公司 | 一种数据库管理方法、系统、设备及存储介质 |
CN112463132B (zh) * | 2020-11-13 | 2023-06-06 | 四川新网银行股份有限公司 | 一种数据库切换工具及切换方法 |
CN112486718A (zh) * | 2020-11-30 | 2021-03-12 | 深圳市移卡科技有限公司 | 数据库故障自动切换方法、装置和计算机存储介质 |
CN113836231B (zh) * | 2021-09-23 | 2022-10-21 | 武汉达梦数据库股份有限公司 | 一种数据库主备环境下的日志解析服务切换的方法及设备 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467508A (zh) * | 2010-11-04 | 2012-05-23 | 中兴通讯股份有限公司 | 提供数据库服务的方法及数据库系统 |
CN102708150A (zh) * | 2012-04-12 | 2012-10-03 | 华为技术有限公司 | 异步复制数据的方法、装置和系统 |
CN105373899A (zh) * | 2015-12-03 | 2016-03-02 | 广州云新信息技术有限公司 | 一种服务器资产管理的方法及装置 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060117074A1 (en) * | 2004-11-30 | 2006-06-01 | Ezzat Ahmed K | Method and apparatus for database cluster recovery |
CN102810111B (zh) * | 2012-05-07 | 2016-05-11 | 互动在线(北京)科技有限公司 | 一种保持Oracle数据库服务高可用的实现方法和系统 |
CN103218030B (zh) * | 2013-04-26 | 2016-02-10 | 北京百度网讯科技有限公司 | 基于多节点微服务器的电源管理系统及微服务器 |
CN103226502B (zh) * | 2013-05-21 | 2015-08-19 | 中国工商银行股份有限公司 | 一种数据灾备控制系统及数据恢复方法 |
CN106933843B (zh) * | 2015-12-29 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 数据库心跳检测方法以及装置 |
CN107291821A (zh) * | 2017-05-24 | 2017-10-24 | 杭州沃趣科技股份有限公司 | 一种同城双活架构快速切换的方法 |
CN108710673B (zh) * | 2018-05-17 | 2021-07-09 | 招银云创信息技术有限公司 | 实现数据库高可用方法、系统、计算机设备和存储介质 |
-
2018
- 2018-12-24 CN CN201811582496.2A patent/CN109871369B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102467508A (zh) * | 2010-11-04 | 2012-05-23 | 中兴通讯股份有限公司 | 提供数据库服务的方法及数据库系统 |
CN102708150A (zh) * | 2012-04-12 | 2012-10-03 | 华为技术有限公司 | 异步复制数据的方法、装置和系统 |
CN105373899A (zh) * | 2015-12-03 | 2016-03-02 | 广州云新信息技术有限公司 | 一种服务器资产管理的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN109871369A (zh) | 2019-06-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109871369B (zh) | 数据库切换方法、系统、介质和装置 | |
CN106407356B (zh) | 一种数据备份方法及装置 | |
CN102891849B (zh) | 业务数据同步方法、恢复方法及装置和网络设备 | |
US8793456B2 (en) | Automated migration to a new target volume via merged bitmaps to maintain consistency | |
CN105069160A (zh) | 一种基于自主可控数据库的高可用性方法及构架 | |
CN112579363B (zh) | 一种MySQL数据保护系统及其备份和恢复方法 | |
WO2015154517A1 (zh) | 一种软件故障的定位方法、装置及设备 | |
CN101909087A (zh) | 一种基于快照的应用服务器远程引导方法 | |
CN108647118B (zh) | 基于存储集群的副本异常恢复方法、装置及计算机设备 | |
CN104516796A (zh) | 一种基于命令集的网元备份与恢复方法及装置 | |
US8799596B2 (en) | Switching visibility between virtual data storage entities | |
CN111046051A (zh) | 数据一致性实现方法、装置及存储介质 | |
WO2018076696A1 (zh) | 一种数据同步方法及带外管理设备 | |
CN105573867A (zh) | 一种MySQL高可用性的实现方法及系统 | |
US8656215B2 (en) | Disaster recovery production takeover | |
CN111367998A (zh) | 基于Galera的数据库集群恢复方法及终端设备 | |
US8375183B1 (en) | Method and apparatus for archiving de-duplicated data maintained by an intelligent backup appliance | |
CN105446830A (zh) | 一种基于ndmp磁盘到磁盘复制技术的数据备份方法 | |
CN111190770A (zh) | 一种用于数据存储及数据灾备的cow快照技术 | |
CN107544851B (zh) | 一种锁操作处理方法及装置 | |
CN103440179B (zh) | 存储设备配置信息的连续保存方法 | |
CN109614268A (zh) | 一种云备份数据的恢复方法、装置及系统 | |
CN112199329B (zh) | 基于堡垒机的双机运维数据归档清理方法与设备 | |
CN114756410A (zh) | 一种双机热备系统的数据恢复方法、装置及介质 | |
CN112540875A (zh) | 一种基于xtrabackup的mysql数据库备份、恢复校验可用性的方法 |
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 |