CN113360579A - 数据库高可用处理方法、装置、电子设备及存储介质 - Google Patents

数据库高可用处理方法、装置、电子设备及存储介质 Download PDF

Info

Publication number
CN113360579A
CN113360579A CN202110738506.2A CN202110738506A CN113360579A CN 113360579 A CN113360579 A CN 113360579A CN 202110738506 A CN202110738506 A CN 202110738506A CN 113360579 A CN113360579 A CN 113360579A
Authority
CN
China
Prior art keywords
database
original
slave
new
master
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
CN202110738506.2A
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.)
Ping An Puhui Enterprise Management Co Ltd
Original Assignee
Ping An Puhui Enterprise Management 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 Ping An Puhui Enterprise Management Co Ltd filed Critical Ping An Puhui Enterprise Management Co Ltd
Priority to CN202110738506.2A priority Critical patent/CN113360579A/zh
Publication of CN113360579A publication Critical patent/CN113360579A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • 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/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore

Landscapes

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

Abstract

本发明涉及数据处理领域,提供一种数据库高可用处理方法,包括利用postgres进程监控组件监控待检测数据库;对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;若待检测数据库的状态判定为原从数据库状态,提升原从数据库为新的主数据库,且将新的主数据库状态变更为可读写;根据原从数据库寻找原从数据库对应的原主数据库,并通过postgres进程监控组件判定原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。本发明实现了通过主从数据库变化实现了数据库故障的自动转移,达到了维持数据库高可用状态的技术效果。

Description

数据库高可用处理方法、装置、电子设备及存储介质
技术领域
本发明涉及数据处理领域,涉及一种数据库高可用处理方法、装置、电子设备及计算机可读存储介质。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库。现有技术中,通过建立主从数据库,应对数据的容灾、负载均衡以及数据集中和分发需求。对于主从数据库而言,流复制是一种有效的高可用架构。通过流复制,备库不断的从主数据库同步相应的数据,并在从数据库apply每个WAL record,这里的流复制每次传输单位是WAL日志的record。pg的流复制也是按照同步模式的不同,分为同步流复制和异步流复制。异步流复制通过主从数据库同步实现db服务的高可用性。即一台主数据库提供读写,然后把数据同步到另一台从数据库,然后从数据库不断apply从主数据库接收到的数据,从数据库不提供写服务,只提供读服务。既能在主数据库坏掉时确保数据的一致,又可以实现当网络或者备库有问题时,防止主数据库事务hang住。具有的弊端如下:
1)当主数据库出现故障,无法提供服务时,应用也将会受到影响,无法正常提供服务,这就导致无法实现故障自动转移、自动切换,无法保证7x24的高可用。
因此,亟需一种实现故障自动切换的、可保证数据库维持高可用状态的postgresql异步流复制方法。
发明内容
本发明提供一种数据库高可用处理方法、装置、电子设备及计算机可读存储介质,通过主从数据库变化实现了数据库故障的自动转移,达到了维持数据库高可用状态的技术效果。
为实现上述目的,本发明提供的一种数据库高可用处理方法,方法包括:
利用postgres进程监控组件监控待检测数据库,确定待检测数据库是否存在postgres进程;
对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;
若所述待检测数据库状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;
根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
进一步,优选的,所述根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的从数据库的步骤,包括:
通过所述新的主数据库ping所述原从数据库对应的原主数据库,以判定所述新的主数据库与所述原主数据库的网络联通状态;
若所述新的主数据库与所述原主数据库的网络联通,则所述新的主数据库通过scp命令将所述新的主数据库的主从切换标志传送至所述原主数据库;
通过所述postgres进程监控组件监控所述原主数据库,判定所述原主数据库的postgres进程以及所述主从切换标志是否存在;
若所述原主数据库的postgres进程以及所述主从切换标志存在,则将所述新的主数据库的数据信息复制至所述原主数据库中;
通过启动命令启动原主数据库,完成原主数据库转变为新的主数据库的新的从数据库。
进一步,优选的,若所述新的主数据库与所述原主数据库的网络联通异常;
通过所述新的主数据库获取当前时间以及与对应的原主数据库失联的日志文件,提取所述日志文件中的异常信息,并将所述异常信息发送至指定终端。
进一步,优选的,所述原主数据库失联的日志文件为can't find standby日志文件;通过数据库故障检测巡检脚本进行所述原主数据库失联的日志文件中的异常信息的提取。
进一步,优选的,所述根据待检测数据库的聚类cluster状态判定待检测数据库的状态的步骤,包括:
通过聚类cluster状态监控命令检查待检测数据库的聚类cluster状态、VIP挂载状况以及主从进程;其中,所述聚类cluster状态监控命令为pg_controldata命令;所述主从进程包括主数据库发送至从数据库的walsender进程以及从数据库发送至主数据库的walreceiver进程;
若待检测数据库的聚类cluster状态为in production状态,且存在主数据库发送至从数据库的walsender进程,则判定待检测数据库为挂载VIP的主数据库。
进一步,优选的,还包括对新的主数据库以及新的从数据库的身份进行监控,所述对新的主数据库以及新的从数据库的身份进行监控的步骤,包括:
利用监控器获取所述新的主数据库或新的从数据库的身份以及所述新的主数据库或新的从数据库的工作日志中存储的身份;
判断所述新的主数据库或新的从数据库的身份与所述新的主数据库或新的从数据库的工作日志中存储的身份是否一致;
若一致,则输出所述新的主数据库或新的从数据库的身份;
若不一致,则将所述新的主数据库或新的从数据库的身份变更为所述新的主数据库或新的从数据库的工作日志中存储的身份,并输出变更后的所述新的主数据库或新的从数据库的身份。
进一步,优选的,对所述原主数据库进行VIP摘除的步骤,包括:
利用postgres进程监控组件监控原主数据库的postgres进程,并判定原主数据库的postgres进程是否存在;
若原主数据库的postgres进程不存在,则将当前时间以及摘掉所述原主数据库挂载的VIP的指令输入日志文件中;
通过停止keepalived服务命令使所述原主数据库的keepalived服务停止,进而完成待检测数据库挂载的VIP摘除。
为了解决上述问题,本发明还提供一种数据库高可用处理装置,所述装置包括:
postgres进程获取单元,用于利用postgres进程监控组件监控待检测数据库,确定存在postgres进程的待检测数据库;
数据库状态判定单元,用于对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;
主从数据库转换单元,用于若待检测数据库的状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,对所述原主数据库进行VIP摘除,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;
根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
为了解决上述问题,本发明还提供一种电子设备,所述电子设备包括:
存储器,存储至少一个指令;及
处理器,执行所述存储器中存储的指令以实现上述所述的数据库高可用处理方法中的步骤。
为了解决上述问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有至少一个指令,所述至少一个指令被电子设备中的处理器执行以实现上述所述的数据库高可用处理方法。
首先,本发明利用postgres进程监控组件监控待检测数据库,确定存在postgres进程待检测数据库;对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;若待检测数据库的状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写。通过keepalived插件+数据库故障检测脚本的方式,判断出主数据库故障,并控制vip的漂移,来实现数据库的故障转移、自动切换,从而保证业务的连续性,达到极大缩短应用故障恢复的时间的技术效果。其次,根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。通过自动尝试建立新的主从关系,将异常的原主数据库重新加入到新的主从同步关系中,即可将原主数据库重新加入到新的异步流复制高可用架构中,作为新的备库。达到了在主从发生切换后,依然可以保证高可用架构的可用性的技术效果。
附图说明
图1为本发明一实施例提供的数据库高可用处理方法的流程示意图;
图2为本发明一实施例提供的数据库高可用处理装置的模块示意图;
图3为本发明一实施例提供的实现数据库高可用处理方法的电子设备的内部结构示意图;
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了解决现有技术中,异步流复制过程中无法保持数据库高可用状态的问题;本发明提供一种数据库高可用处理方法,保证业务的连续性的同时,极大缩短应用故障恢复的时间;在主数据库和从数据库发生切换后,依然可以保证高可用架构的可用性。参照图1所示,为本发明一实施例提供的数据库高可用处理方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。
在本实施例中,数据库高可用处理方法包括S1~S5:
S1、利用postgres进程监控组件监控待检测数据库,确定存在postgres进程的待检测数据库。
其中,postgres进程监控组件在具体的实施过程中为,利用postgres进程监控组件监控待检测数据库的postgres进程,查看其postgres进程是否为0;需要说明的是,postgres进程为0,则说明待检测数据库的postgres进程服务已停止;若postgres进程不为0,则说明待检测数据库的postgres进程仍然在进行。
需要说明的是,数据库中具有Postgres进程、进行VACUUM FULLCONCURRENTLY的进程;通过Postgres进程向循环队列中写入数据,而VACUUM FULLCONCURRENTLY的进程用于读取数据。
若当postgres进程为0,则说明待检测数据库的postgres进程服务已停止的场景下,postgres进程监控组件提取监控到的日志文件中的异常报错信息,并经所提取的报错信息发送至指定终端。具体地说,postgres进程监控组件中的数据库故障检测巡检脚本监控到日志文件中的异常报错信息。
S2、对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP。
其中,需要说明的是,所述聚类cluster状态监控命令为pg_controldata命令;数据库的聚类cluster状态包括in production状态以及archive recovery状态待检测数据库的主从进程包括,walsender进程和walreceiver进程;walsender进程为主数据库发送至从数据库的进程;而walreceiver进程为从数据库接收主数据库的进程。
所述根据待检测数据库的聚类cluster状态判定待检测数据库的状态的步骤,包括:通过聚类cluster状态监控命令检查待检测数据库的聚类cluster状态、VIP挂载状况以及主从进程;其中,所述聚类cluster状态监控命令为pg_controldata命令;所述主从进程包括主数据库发送至从数据库的walsender进程以及从数据库发送至主数据库的walreceiver进程;
若待检测数据库的聚类cluster状态为in production状态,且存在主数据库发送至从数据库的walsender进程,则判定待检测数据库为挂载VIP的主数据库。其中,所述walsender进程为主数据库发送wal log给从数据库。
若判定待检测数据库为挂载VIP的主数据库,则所述主数据库与其对应的从数据库存在同步异常。
其中,所述主数据库与其对应的从数据库存在同步异常,即所述主数据库与其对应的从数据库存在失联状态,可能是所述主数据库与其对应的从数据库之间的网络异常,也可能是从数据库存在异常。
具体的,判断主从数据库是否存在同步异常的方法为:主数据库持续向网关发送ICMP请求,以确定自身是否在线。当主数据库在第一预设周期内未接收到网关的响应时,确定本数据库故障。当本数据库故障时,不再向从数据库发送消息;并且卸载VIP地址。
对于存在的主从数据库之间的失联需要进行进一步的排除;当所述故障为预期的事务内部故障,通过将事务回滚,撤销对数据库的修改。当所述故障为非预期的事务内部故障,通过强制回滚事务,在保证该事务对其他事务没有影响的条件下,利用日志文件撤销其对数据库的修改。当所述故障为系统故障,通过待计算机重新启动之后,对于未完成的事务可能写入数据库的内容,回滚所有未完成的事务写的结果;对于已完成的事务可能部分或全部留在缓冲区的结果,需要重做所有已提交的事务(即撤销所有未提交的事务,重做所有已提交的事务)。当所述故障为,介质故障的软件容错,通过使用数据库备份及事务日志文件,通过恢复技术,恢复数据库到备份结束时的状态。当所述故障为介质故障的硬件容错,通过采用双物理存储设备,使两个硬盘存储内容相同,当其中一个硬盘出现故障时,及时使用另一个备份硬盘。当所述故障为计算机病毒故障,通过使用防火墙软件防止病毒侵入,对于已感染病毒的数据库文件,使用杀毒软件进行查杀,如果杀毒软件杀毒失败,此时只能用数据库备份文件,以软件容错的方式恢复数据库文件。
在具体的实施过程中,云数据库正常运行的状态下,主数据库将VIP绑定,从数据库不绑定,业务负载通过VIP访问主数据库,从数据库与主数据库保持数据同步。
当主从数据库切换时,监控器监控到主数据库宕机时,会切换主从数据库互换身份,然后操作宕机节点解绑VIP,进而操作正常节点绑定VIP。
S3、若待检测数据库的状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,对所述原主数据库进行VIP摘除,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写。
其中,将提升当前原从数据库为新的主数据库,且将所述新的主数据库状态变更为可读写;通过pg_ctl promote-D$PGDATA命令实现。也就是说,在实际的实施过程中,主从数据库是可以进行切换的,监测到当前主数据库宕机时,切换两个主数据库和从数据库的的主从身份,从而两个数据库的身份发生变化;其中,数据库中部署有监控器,所述监控器用于监测到数据库的身份发生变化,并将原主数据库与VIP解绑,以及切换新主数据库与VIP绑定。
当postgres进程为0,则说明待检测数据库的postgres进程服务已停止的场景下,则需要摘掉待检测数据库挂载的VIP。对所述原主数据库进行VIP摘除的步骤,包括:
S31、利用postgres进程监控组件监控原主数据库的postgres进程,并判定原主数据库的postgres进程是否存在;
S32、若原主数据库的postgres进程不存在,则将当前时间以及摘掉所述原主数据库挂载的VIP的指令输入日志文件中;
S33、通过停止keepalived服务命令使所述原主数据库的keepalived服务停止,进而完成待检测数据库挂载的VIP摘除。
总之,若postgres进程监控组件监测到前数据库的postgres进程服务已停止;则将当前时间以及摘掉待检测数据库挂载的VIP的指令输入至日志文件中;其中,摘掉待检测数据库挂载的VIP的指令为“postgresql stop so vip stop”;命令停止待检测数据库的keepalived服务,进而完成待检测数据库挂载的VIP摘除;其中,停止待检测数据库的keepalived服务的命令为“systemctl stop keepalived”。
综上,上述步骤S1~S3通过keepalived插件+数据库故障检测脚本的方式,判断出主数据库故障,并控制vip的漂移,来实现数据库的故障转移、自动切换,从而保证业务的连续性,极大缩短应用故障恢复的时间;同时将故障节点通过邮件告警+电话告警的方式,通知相关方及时关注和处理。
S4、根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
具体地说,还需要对新的主数据库增加主从切换标志。具体地说,将新的主数据库的$PGDATA目录下,创建一个switch_`date`.txt的标志文件(创建空文件即可)。
S41、所述新的主数据库ping所述原从数据库对应的原主数据库,以判定所述新的主数据库与所述原主数据库的网络联通状态;
S42、若所述新的主数据库与所述原主数据库的网络联通,则所述新的主数据库通过scp命令将所述新的主数据库的主从切换标志传送至所述原主数据库;
进一步的,若所述新的主数据库与所述原主数据库的网络联通异常;若所述新主数据库与所述原主数据库的网络不联通,则判定原主数据库的postgres进程不存活;则需要先进行寻找主数据库的postgres进程不存活的故障原因,并进行故障排除。当故障解决后,再进行后续的操作。
通过所述新的主数据库获取当前时间以及与对应的原主数据库失联的日志文件,提取所述日志文件中的异常信息,并将所述异常信息发送至指定终端。
所述原主数据库失联的日志文件为can't find standby日志文件;通过数据库故障检测巡检脚本进行所述原主数据库失联的日志文件中的异常信息的提取。并将所述异常信息发送至相关方的方式可以是邮件也可以是电话告警,根据实际的应用场景进行设定。
S43、通过所述postgres进程监控组件监控所述原主数据库,判定所述原主数据库的postgres进程以及所述主从切换标志是否存在;
S44、若所述原主数据库的postgres进程以及所述主从切换标志存在,则将所述新的主数据库的数据信息复制至所述原主数据库中;
S45、通过启动命令启动原主数据库,完成原主数据库转变为新的主数据库的新的从数据库。
在具体的实施过程中,在从数据库提升为新主数据库后,同时会在$PGDATA目录下,创建一个switch_date.txt的标志文件(创建空文件即可),标志该机器发生过自动切换。在新主数据库,通过ping旧主数据库,判断两台机器之间的网络是否通。若两个数据库之间的网络不通,则无法自动完成新主从的恢复,会通过邮件/电话告警的方式通知相关方。若两个数据库之间的网络通,则新主数据库将通过scp命令,将切换标志文件switch_`date`.txt传送到旧主数据库的$PGDATA目录下。判断旧主数据库的postgres进程是否存在,且切换标志文件switch_date.txt是否在$PGDATA目录下。若原主数据库库的postgres进程不存在,并且切换标志文件switch_date.txt是在$PGDATA目录下,则将会在原主数据库的$PGDATA下创建standby.signal文件(创建空文件即可)。在原主数据库的$PGDATA下的postgresql.auto.conf文件中,添加新主数据库的信息。原主数据库通过pg_ctl start-D$PGDATA命令启动,启动后,角色变为新主从同步关系中的新从数据库。通过pg_controldata命令,检查新从数据库的状态,并将检查结果通过邮件告警的方式通知相关方。
进一步的,在实施过程中,还包括对新的主数据库以及新的从数据库的身份进行监控的步骤S5。
S51、利用监控器获取所述新的主数据库或新的从数据库的身份以及所述新的主数据库或新的从数据库的工作日志中存储的身份;
S52、判断所述新的主数据库或新的从数据库的身份与所述新的主数据库或新的从数据库的工作日志中存储的身份是否一致;
若一致,则输出所述新的主数据库或新的从数据库的身份;
若不一致,则将所述新的主数据库或新的从数据库的身份变更为所述新的主数据库或新的从数据库的工作日志中存储的身份,并输出变更后的所述新的主数据库或新的从数据库的身份。
总之,在步骤S1~S3完成主数据库故障转移、自动切换后,自动尝试建立新的主从关系,将异常的原主数据库重新加入到新的主从同步关系中;若在自动尝试建立新主从关系失败后,则需要人工介入处理主数据库的故障,故障处理完成后,可将原主数据库重新加入到新的异步流复制高可用架构中,作为新的备库。从而保证了在主从发生切换后,依然可以保证高可用架构的可用性;同时,整个新的主从关系恢复的过程中,也会通过邮件告警+电话告警的方式,通知相关方及时关注和处理。
综上,本发明的一种数据库高可用处理方法,首先,优化、完善了Postgre Sql异步流复制,通过主数据库、从数据库异常的判断逻辑,使从数据库能够更加智能地判断出主数据库故障,自动完成主从切换,实现故障自动转移,减少应用宕机的时间。其次,通过监测脚本,及时将主数据库、从数据库异常的情况,通过邮件告警、电话告警的方式,通知相关方及时作出响应。最后,通过增加主从切换、故障自动转移后,自动恢复、自动重建新的主从数据库关系的操作,保证了数据库的高可用架构的可用性。
如图2所示,本发明提供一种数据库高可用处理装置200,本发明可以安装于电子设备中。根据实现的功能,该数据库高可用处理装置200可以包括postgres进程获取单元201、数据库状态判定单元202和主从数据库转换单元203。本发明所述模块也可以称之为单元,是指一种能够被电子设备处理器所执行,并且能够完成固定功能的一系列计算机程序段,其存储在电子设备的存储器中。
在本实施例中,关于各模块/单元的功能如下:
postgres进程获取单元201,用于利用postgres进程监控组件监控待检测数据库,确定存在postgres进程的待检测数据库;
数据库状态判定单元202,用于对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;
主从数据库转换单元203,用于若待检测数据库的状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,对所述原主数据库进行VIP摘除,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
本发明的数据库高可用处理装置200通过keepalived插件+数据库故障检测脚本的方式,判断出主数据库故障,并控制vip的漂移,来实现数据库的故障转移、自动切换,从而保证业务的连续性,极大缩短应用故障恢复的时间;同时将故障节点通过邮件告警+电话告警的方式,通知相关方及时关注和处理。在完成主数据库故障转移、自动切换后,自动尝试建立新的主从关系,将异常的原主数据库重新加入到新的主从同步关系中;若在自动尝试建立新主从关系失败后,则需要人工介入处理主数据库的故障,故障处理完成后,可将原主数据库重新加入到新的异步流复制高可用架构中,作为新的备库。从而保证了在主从发生切换后,依然可以保证高可用架构的可用性;同时,整个新的主从数据库关系恢复的过程中,也会通过邮件告警+电话告警的方式,通知相关方及时关注和处理。
如图3所示,本发明提供一种数据库高可用处理方法的电子设备3。
该电子设备3可以包括处理器30、存储器31和总线,还可以包括存储在存储器31中并可在所述处理器30上运行的计算机程序,如数据库高可用处理程序32。
其中,所述存储器31至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、移动硬盘、多媒体卡、卡型存储器(例如:SD或DX存储器等)、磁性存储器、磁盘、光盘等。所述存储器31在一些实施例中可以是电子设备3的内部存储单元,例如该电子设备3的移动硬盘。所述存储器31在另一些实施例中也可以是电子设备3的外部存储设备,例如电子设备3上配备的插接式移动硬盘、智能存储卡(Smart Media Card,SMC)、安全数字(SecureDigital,SD)卡、闪存卡(Flash Card)等。进一步地,所述存储器31还可以既包括电子设备3的内部存储单元也包括外部存储设备。所述存储器31不仅可以用于存储安装于电子设备3的应用软件及各类数据,例如数据库高可用处理程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。
所述处理器30在一些实施例中可以由集成电路组成,例如可以由单个封装的集成电路所组成,也可以是由多个相同功能或不同功能封装的集成电路所组成,包括一个或者多个中央处理器(Central Processing unit,CPU)、微处理器、数字处理芯片、图形处理器及各种控制芯片的组合等。所述处理器30是所述电子设备的控制核心(Control Unit),利用各种接口和线路连接整个电子设备的各个部件,通过运行或执行存储在所述存储器31内的程序或者模块(例如数据库高可用处理程序等),以及调用存储在所述存储器41内的数据,以执行电子设备3的各种功能和处理数据。
所述总线可以是外设部件互连标准(peripheral component interconnect,简称PCI)总线或扩展工业标准结构(extended industry standard architecture,简称EISA)总线等。该总线可以分为地址总线、数据总线、控制总线等。所述总线被设置为实现所述存储器31以及至少一个处理器30等之间的连接通信。
图3仅示出了具有部件的电子设备,本领域技术人员可以理解的是,图3示出的结构并不构成对所述电子设备3的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。
例如,尽管未示出,所述电子设备3还可以包括给各个部件供电的电源(比如电池),优选地,电源可以通过电源管理装置与所述至少一个处理器30逻辑相连,从而通过电源管理装置实现充电管理、放电管理、以及功耗管理等功能。电源还可以包括一个或一个以上的直流或交流电源、再充电装置、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。所述电子设备3还可以包括多种传感器、蓝牙模块、Wi-Fi模块等,在此不再赘述。
进一步地,所述电子设备3还可以包括网络接口,可选地,所述网络接口可以包括有线接口和/或无线接口(如WI-FI接口、蓝牙接口等),通常用于在该电子设备3与其他电子设备之间建立通信连接。
可选地,该电子设备3还可以包括用户接口,用户接口可以是显示器(Display)、输入单元(比如键盘(Keyboard)),可选地,用户接口还可以是标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是LED显示器、液晶显示器、触控式液晶显示器以及OLED(Organic Light-Emitting Diode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在电子设备3中处理的信息以及用于显示可视化的用户界面。
应该了解,所述实施例仅为说明之用,在专利申请范围上并不受此结构的限制。
所述电子设备3中的所述存储器31存储的数据库高可用处理程序32是多个指令的组合,在所述处理器30中运行时,可以实现:利用postgres进程监控组件监控待检测数据库,确定存在postgres进程的待检测数据库;对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;若待检测数据库的状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,对所述原主数据库进行VIP摘除,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
具体地,所述处理器30对上述指令的具体实现方法可参考图1对应实施例中相关步骤的描述,在此不赘述。需要强调的是,为进一步保证上述数据库高可用处理程序的私密和安全性,上述数据库高可用处理数据存储于本服务器集群所处区块链的节点中。
进一步地,所述电子设备3集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)。
本发明实施例还提供一种计算机可读存储介质,所述存储介质可以是非易失性的,也可以是易失性的,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时实现:利用postgres进程监控组件监控待检测数据库,确定存在postgres进程的待检测数据库;对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;若待检测数据库的状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,对所述原主数据库进行VIP摘除,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
具体地,所述计算机程序被处理器执行时具体实现方法可参考实施例数据库高可用处理方法中相关步骤的描述,在此不赘述。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能模块的形式实现。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。
因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附关联图标记视为限制所涉及的权利要求。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。
此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第二等词语用来表示名称,而并不表示任何特定的顺序。
最后应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换,而不脱离本发明技术方案的精神和范围。

Claims (10)

1.一种数据库高可用处理方法,其特征在于,方法包括:
利用postgres进程监控组件监控待检测数据库,确定待检测数据库是否存在postgres进程;
对于存在postgres进程的待检测数据库,根据所述待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;
若所述待测数据库的状态判定为未挂载VIP的原从数据库状态;提升所述原从数据库为新的主数据库,对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;
根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库原主数据库变更为新的主数据库的新的从数据库。
2.如权利要求1所述的数据库高可用处理方法,其特征在于,所述根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的从数据库的步骤,包括:
通过所述新的主数据库ping所述原从数据库对应的原主数据库,以判定所述新的主数据库与所述原主数据库的网络联通状态;
若所述新的主数据库与所述原主数据库的网络联通,则所述新的主数据库通过scp命令将所述新的主数据库的主从切换标志传送至所述原主数据库;
通过所述postgres进程监控组件监控所述原主数据库,判定所述原主数据库的postgres进程以及所述主从切换标志是否存在;
若所述原主数据库的postgres进程以及所述主从切换标志存在,则将所述新的主数据库的数据信息复制至所述原主数据库中;
通过启动命令启动原主数据库,完成原主数据库转变为新的主数据库的新的从数据库。
3.如权利要求2所述的数据库高可用处理方法,其特征在于,若所述新的主数据库与所述原主数据库的网络联通异常;
通过所述新的主数据库获取当前时间以及与对应的原主数据库失联的日志文件,提取所述日志文件中的异常信息,并将所述异常信息发送至指定终端。
4.如权利要求3所述的数据库高可用处理方法,其特征在于,
所述原主数据库失联的日志文件为can't find standby日志文件;通过数据库故障检测巡检脚本进行所述原主数据库失联的日志文件中的异常信息的提取。
5.如权利要求1所述的数据库高可用处理方法,其特征在于,
所述根据待检测数据库的聚类cluster状态判定待检测数据库的状态的步骤,包括:
通过聚类cluster状态监控命令检查待检测数据库的聚类cluster状态、VIP挂载状况以及主从进程;其中,所述聚类cluster状态监控命令为pg_controldata命令;所述主从进程包括主数据库发送至从数据库的walsender进程以及从数据库发送至主数据库的walreceiver进程;
若所述待检测数据库的聚类cluster状态为in production状态,且存在主数据库发送至从数据库的walsender进程,则判定所述待检测数据库为挂载VIP的主数据库。
6.如权利要求1所述的数据库高可用处理方法,其特征在于,还包括对新的主数据库以及新的从数据库的身份进行监控,所述对新的主数据库以及新的从数据库的身份进行监控的步骤,包括:
利用监控器获取所述新的主数据库或新的从数据库的身份以及所述新的主数据库或新的从数据库的工作日志中存储的身份;
判断所述新的主数据库或新的从数据库的身份与所述新的主数据库或新的从数据库的工作日志中存储的身份是否一致;
若一致,则输出所述新的主数据库或新的从数据库的身份;
若不一致,则将所述新的主数据库或新的从数据库的身份变更为所述新的主数据库或新的从数据库的工作日志中存储的身份,并输出变更后的所述新的主数据库或新的从数据库的身份。
7.如权利要求1所述的数据库高可用处理方法,其特征在于,对所述原主数据库进行VIP摘除的步骤,包括:
利用postgres进程监控组件监控原主数据库的postgres进程,并判定原主数据库的postgres进程是否存在;
若原主数据库的postgres进程不存在,则将当前时间以及摘掉所述原主数据库挂载的VIP的指令输入日志文件中;
通过停止keepalived服务命令使所述原主数据库的keepalived服务停止,进而完成待检测数据库挂载的VIP摘除。
8.一种数据库高可用处理装置,其特征在于,所述装置包括:
postgres进程获取单元,用于利用postgres进程监控组件监控待检测数据库,确定待检测数据库是否存在postgres进程;
数据库状态判定单元,用于对于存在postgres进程的待检测数据库,根据待检测数据库的聚类cluster状态判定待检测数据库的状态;其中,所述待检测数据库的状态包括原从数据库状态或者原主数据库状态以及是否挂载VIP;
主从数据库转换单元,用于若所述待检测数据库状态判定为未挂载VIP的原从数据库状态,提升所述原从数据库为新的主数据库,对所述原主数据库进行VIP摘除,并对新的主数据库进行VIP挂载,且将所述新的主数据库状态变更为可读写;
根据所述原从数据库寻找所述原从数据库对应的原主数据库,并通过postgres进程监控组件判定所述原主数据库是否存活,并将存活的原主数据库变更为新的主数据库的新的从数据库。
9.一种电子设备,其特征在于,所述电子设备包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行如权利要求1至7中任一所述的数据库高可用处理方法中的步骤。
10.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一所述的数据库高可用处理方法。
CN202110738506.2A 2021-06-30 2021-06-30 数据库高可用处理方法、装置、电子设备及存储介质 Pending CN113360579A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110738506.2A CN113360579A (zh) 2021-06-30 2021-06-30 数据库高可用处理方法、装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110738506.2A CN113360579A (zh) 2021-06-30 2021-06-30 数据库高可用处理方法、装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN113360579A true CN113360579A (zh) 2021-09-07

Family

ID=77537450

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110738506.2A Pending CN113360579A (zh) 2021-06-30 2021-06-30 数据库高可用处理方法、装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN113360579A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113849351A (zh) * 2021-09-30 2021-12-28 紫光云技术有限公司 一种MySQL高可用性的实现方法
CN114116912A (zh) * 2022-01-25 2022-03-01 北京浩瀚深度信息技术股份有限公司 一种基于Keepalived实现数据库高可用的方法
CN114237989A (zh) * 2022-02-25 2022-03-25 北京奥星贝斯科技有限公司 数据库服务部署、容灾方法及装置
CN114676118A (zh) * 2022-05-30 2022-06-28 深圳市科力锐科技有限公司 数据库切换方法、装置、设备及存储介质
CN114840495A (zh) * 2022-05-27 2022-08-02 北京人大金仓信息技术股份有限公司 一种数据库集群防脑裂的方法、存储介质与设备
CN115001950A (zh) * 2022-05-27 2022-09-02 北京人大金仓信息技术股份有限公司 一种数据库集群的故障处理方法、存储介质与设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108259239A (zh) * 2018-01-11 2018-07-06 郑州云海信息技术有限公司 一种数据库高可用性保障方法和系统
CN111314098A (zh) * 2018-12-11 2020-06-19 杭州海康威视系统技术有限公司 一种ha系统中实现vip地址漂移的方法和装置
CN112860485A (zh) * 2021-02-03 2021-05-28 北京北信源信息安全技术有限公司 基于keepalived的双机热备系统的控制方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108259239A (zh) * 2018-01-11 2018-07-06 郑州云海信息技术有限公司 一种数据库高可用性保障方法和系统
CN111314098A (zh) * 2018-12-11 2020-06-19 杭州海康威视系统技术有限公司 一种ha系统中实现vip地址漂移的方法和装置
CN112860485A (zh) * 2021-02-03 2021-05-28 北京北信源信息安全技术有限公司 基于keepalived的双机热备系统的控制方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
STONEKING: "PostgreSQL HOT-Standby 的主备切换", pages 1 - 6, Retrieved from the Internet <URL:https://blog.51cto.com/stoneking/782132> *
断臂人: "PGSQL主从+keepalived高可用配置", pages 1 - 8, Retrieved from the Internet <URL:https://blog.51cto.com/xiaoxiaozhou/2157262> *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113849351A (zh) * 2021-09-30 2021-12-28 紫光云技术有限公司 一种MySQL高可用性的实现方法
CN114116912A (zh) * 2022-01-25 2022-03-01 北京浩瀚深度信息技术股份有限公司 一种基于Keepalived实现数据库高可用的方法
CN114237989A (zh) * 2022-02-25 2022-03-25 北京奥星贝斯科技有限公司 数据库服务部署、容灾方法及装置
CN114237989B (zh) * 2022-02-25 2022-04-26 北京奥星贝斯科技有限公司 数据库服务部署、容灾方法及装置
CN114840495A (zh) * 2022-05-27 2022-08-02 北京人大金仓信息技术股份有限公司 一种数据库集群防脑裂的方法、存储介质与设备
CN115001950A (zh) * 2022-05-27 2022-09-02 北京人大金仓信息技术股份有限公司 一种数据库集群的故障处理方法、存储介质与设备
CN114840495B (zh) * 2022-05-27 2024-08-20 北京人大金仓信息技术股份有限公司 一种数据库集群防脑裂的方法、存储介质与设备
CN114676118A (zh) * 2022-05-30 2022-06-28 深圳市科力锐科技有限公司 数据库切换方法、装置、设备及存储介质

Similar Documents

Publication Publication Date Title
CN113360579A (zh) 数据库高可用处理方法、装置、电子设备及存储介质
CN110807064B (zh) Rac分布式数据库集群系统中的数据恢复装置
CN107480014B (zh) 一种高可用设备切换方法及装置
US9734025B2 (en) Automatic client side seamless failover
CN104036043B (zh) 一种mysql高可用的方法及管理节点
CN112506702B (zh) 数据中心容灾方法、装置、设备及存储介质
CN100394394C (zh) 容错双工计算机系统及其控制方法
CN104268061A (zh) 一种适用于虚拟机的存储状态监控机制
CN114816820A (zh) chproxy集群故障修复方法、装置、设备及存储介质
CN115562911B (zh) 虚拟机数据备份方法及装置、系统、电子设备、存储介质
US20230004465A1 (en) Distributed database system and data disaster backup drilling method
WO2022088861A1 (zh) 数据库故障处理方法和装置
CN115118738B (zh) 基于rdma的灾备方法、装置、设备及介质
CN114328033A (zh) 保持高可用设备组业务配置一致性的方法及装置
CN105323271A (zh) 一种云计算系统以及云计算系统的处理方法和装置
CN110968456B (zh) 分布式存储系统中故障磁盘的处理方法及装置
CN114841710A (zh) 交易系统故障时的撤单方法、装置、设备及介质
CN114371962A (zh) 数据采集方法、装置、电子设备及存储介质
JP2011145861A (ja) 災害時自動切換えシステムとその処理方法
CN115033428A (zh) 分布式数据库的管理方法、系统及管理服务器
CN100437499C (zh) 计算机平台快取资料备援处理方法及系统
CN114785789B (zh) 数据库故障管理方法、装置、电子设备及存储介质
CN114244638B (zh) 组播网络通信方法、装置、设备及介质
CN117851520B (zh) 证券核心交易引擎的数据同步方法、系统、设备及介质
CN113656208B (zh) 分布式存储系统数据处理方法、装置、设备及存储介质

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