一种基于消息中间件的数据库异地备份与恢复方法及系统
技术领域
本发明涉及数据备份领域,具体属于数据库的异地备份与恢复技术领域。
背景技术
随着数据库技术的不断发展,数据库的规模越来越大,其功能也越来越强大。伴随着信息技术的发展,整个社会的运作和前进都极大地依赖计算机信息系统。各种例如生产计划、物料资料、销售信息、客户资料、核心代码等数据作为企业或个人的重要资产也都存储在计算机系统中。
数据库系统作为计算机信息系统的基础软件,其安全性问题十分重要。当计算机系统遭受到例如地震灾害或者式软硬件错误、人为操作性错误时,数据的丢失会为企业带来巨大损失,因此对于企业而言,数据的备份和恢复必须做到有备无患。数据的容灾备份技术作为保障数据安全的最后一道屏障,已引起各行各业的广泛关注。数据备份的传统架构是由备份主服务器、介质服务器和客户端构成,备份主服务承担了备份资源的配置和管理,介质服务器连接存储设备,负责实际的读写操作,将最终的数据写入存储设备中,客服端接受备份主服务器的管理。面对复杂业务类型,上述传统架构由于缺乏灵活耦合性,难以满足异地备份和海量备份的需求。
发明内容
针对上述问题,本发明提出了一种可以在复杂网络环境下,将数据库文件备份至异地环境,并根据需要将异地备份文件恢复到指定数据库实例上的数据库备份和恢复方法和系统。
为达到上述目的,本发明提供了一种基于消息中间件的数据库异地备份与恢复方法及系统,技术方案具体如下:
由WebServer向消息中间件下发管理任务,并统计各种任务状态,及时反馈给管理员备份系统的处理情况;由消息中间件完成备份系统的解耦工作,接收WebServer下发的具体任务;由Agent监听消息中间件的变化,根据当前的任务状态及时从消息中间件获取待处理的任务消息,并将任务执行结果直接返回给WebServer。
进一步地,所述由Agent监听消息中间件变化,根据当前的任务状态及时从消息中间件获取待处理的任务消息,并将任务执行结果直接返回给WebServer具体包括:
S1、Supervisor进程管理,用于监听、启动、停止一个或多个进程,当一个进程意外杀死时Supervisor监听到进程异常后会自动重新拉起,从而实现进程的自动恢复;
S2、构建监听异步任务队列,能够及时发现WebServer平台下发的任务,将耗时的复杂操作通过消息的方式传递给目标机器,并放置在后台执行;
S3、执行异步任务,当Agent接收到异步任务后,可以进行两种操作,一种是为设置备份或恢复任务,另一种是对备份历史文件进行操作;
S4、异步任务操作完成后,将执行结果返回给WebServer平台。
进一步地,所述由消息中间件完成备份系统的解耦工作,接收WebServer下发的具体任务具体包括:该消息中间件基于Redis生产者消费者模式实现,使用BLPOP命令获取队列数据;如果队列中没有数据则阻塞等待-监听模式。
在消息中间件中,定义了任务入队方式,也定义了任务的超时时间,是否为异步任务,任务参数,为整个备份和恢复操作提高消息传递的基础。
为了进一步提高数据备份和恢复的灵活性,用户可以自定义设置备份模式,包括支持全量备份和增量备份;同时也支持同时备份或恢复多个文件服务器上的指定目标文件或目录。其中,增量备份是指在一次全量备份或者上一次增量备份后,以后每次备份只需要备份与前一次相比增加或者修改的文件。采用增量备份能够避免重复的数据被备份,并且减少备份数据,能够缩短备份所需时间。
本发明的另一方面,提供了一种基于消息中间件的数据库异地备份与恢复系统,包括WebServer、消息中间件和Agent。WebServer负责向消息中间件下发管理任务,并统计各种任务状态,及时反馈给管理员备份系统的处理情况;消息中间件负责完成备份系统的解耦工作,接收WebServer下发的具体任务;Agent负责监听消息中间件的变化,根据当前的任务状态及时从消息中间件获取待处理的任务消息,并将任务执行结果直接返回给WebServer。
附图说明
图1是根据本发明实施例所述的数据备份和恢复系统架构图。
有益效果
利用WebServer、消息中间件和Agent之间的交互方式,提高了数据备份和恢复的实时性,能够将数据库系统崩溃时恢复消耗的代价最小化,大大缩短故障恢复时间。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,根据本发明实施例所述的一种基于消息中间件的数据库异地备份与恢复系统,包括WebServer、消息中间件和Agent。WebServer负责向消息中间件下发任务,消息中间件接收异步任务,生成任务队列,Agent实时监听消息中间件的变化,并从消息中间件读取任务数据,向WebServer反馈任务执行结果;用户则通过WebServer实现对数据备份和恢复管理。
由WebServer向消息中间件下发管理任务,并统计各种任务状态,及时反馈给管理员备份系统的处理情况;由消息中间件完成备份系统的解耦工作,接收WebServer下发的具体任务;由Agent监听消息中间件的变化,根据当前的任务状态及时从消息中间件获取待处理的任务消息,并将任务执行结果直接返回给WebServer。
在Agent端,执行如下四个步骤:
1、Supervisor进程管理。用于监听、启动、停止一个或多个进程。可实现当一个进程意外杀死,supervisor监听到进程异常后,会自动重新拉起,从而实现进程的自动恢复功能。
2、监听异步任务队列。监听任务队列目的是为了能及时发现WebServer平台下发的任务,同时也是为了备份/恢复系统解耦,将耗时的复杂操作,通过消息的方式传递给目标机器,并放置在后台执行。具体代码如下:
3、执行异步任务。当Agent收到异步任务后,分为两种情况,一种是为设置备份/恢复任务;另一种是对备份历史文件进行操作。具体代码如下:
4、上报异步结果。异步任务在操作完成后,需要将会执行结果反馈给WebServer平台,具体代码如下:
在消息中间件端,基于Redis实现了生产者消费模式的消息中间件,主要使用blpop获取队列数据,如果队列中没有数据则阻塞等待-监听模式。从一了任务入队方式、超时时间(ttl),是否为异步任务(is_async),任务参数(args)等。为整个备份/恢复提高了消息传递的基础。
在WebServer端,主要包括API设计:备份策略设置API、上传备份记录API、数据库恢复API、备份结果API。
备份策略设置API,定义备份策略的具体情况,如:操作类型,备份模式,实例编号,数据库类型等。
上传备份记录API,定义了备份文件的具体内容,如备份文件大小,备份开始时间,备份结束文件,备份所在远程路径等。
数据库恢复API,定义了恢复文件对象,目标可用区,目标实例规格,目标实例容量等。
备份结果API,定义了备份记录的数据库类型,备份开始/结束时间,备份文件大小等。
本发明的另一实施例,提供了一种基于消息中间件的数据库异地备份与恢复系统,包括WebServer、消息中间件和Agent。WebServer负责向消息中间件下发管理任务,并统计各种任务状态,及时反馈给管理员备份系统的处理情况;消息中间件负责完成备份系统的解耦工作,接收WebServer下发的具体任务;Agent负责监听消息中间件的变化,根据当前的任务状态及时从消息中间件获取待处理的任务消息,并将任务执行结果直接返回给WebServer。
进一步地,该系统允许用户自定义备份策略和数据恢复策略,用户能够通过配置界面对数据库实例进行自定义备份策略设置,包括数据保留周期、备份间隔、备份的具体对象、备份方式、是否对日志进行备份、备份目录在内。对于每一次备份任务,都以可视化的方式进行备份开始时间、备份结束时间、备份文件大小、本分方式在内的信息展示。用户可以根据已有的备份任务,将备份文件恢复到指定的可用区或物理机,同时也支持VPC、子网和实例规格的修改操作。
为了能够进一步提高数据的安全性,WebServer端还包括用户的权限管理功能,对于不同类型的用户分配不同的操作权限,用户类型包括普通用户和管理员用户;普通用户能够进行自定义备份策略设置和备份任务的浏览查看;管理员用户能够根据已有的备份任务进行数据恢复操作。这样不仅保证了对数据备份的及时性,也避免了普通用户对数据恢复的错误操作。
进一步地,为了保证用户能够在WebServer端对数据备份和恢复的个性化可视化操作,在WebServer端需要设计多个API,包括:备份策略设置API、上传备份记录API、数据库恢复API、备份结果API。
综上所述,借助于本发明的上述技术方案,能够有效实现数据从本地灾备至异地,并根据具体需要将数据进行恢复。
最后应说明的是:显然,上述实施例仅仅是为清楚地说明本申请所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本申请型的保护范围之中。