本发明主要应用于数据库备份技术领域,特别适用于mysql等类型数据库高可用备份,具体是一种实现分布式架构的数据库备份方法。
背景技术:
近年来,随着互联网和移动网络的不断发展,企业级数据库的规模和访问并发数已经急剧增长,传统备份技术已经难以适应现在的高可用需求,数据库备份技术正在朝着高可用、集中化、智能化等新方向发展。在大规模互联网应用数据库中,如何高效地在不影响正常业务运行的情况下,进行异步集中化的全量备份、增量备份及备份恢复,保障各异步节点之间的数据互通和备份数据完整无误是一个重要的课题。
技术实现要素:
为了解决现有技术中存在的上述技术问题,本发明提供了1一种实现分布式架构的数据库备份方法,包括以下步骤:
根据备份服务集群提供的信息在配置中心生成需要备份的任务;
根据定义的备份任务的要素,生成对应的任务进入相应的队列;
以轮询的方式分别轮询上述三个队列,获取相应的任务线程;
从本地缓存中取得可用的备份服务提供者的备份服务信息;
根据LOOP算法,选择可用的备份服务提供者的备份服务信息,添加监听,然后调用备份服务进行数据库备份;
备份服务接受到备份请求,向MySQL备机进行Key授权验证;
备份服务记录MySQL备机的SCN序列号;添加MySQL备机的事务监听;
备份服务拷贝MySQL备机中本地的ibdata、logfile、ibd、frm、MYD、MYI等重要的MySQL数据信息到备份服务的存储上;
还原SCN 序列号开始到现在为止的DML操作到备份服务的存储上;
完成一次MySQL 备份操作;
向备份服务集群中的其它服务发起异步请求,把上一次备份完成的数据再拷贝一次,完成一次多备。
进一步的,所述相应的队列包括备份恢复任务队列(Recovery Queue),用于备份恢复的任务队列;增量备份任务队列(Incr Backup Queue),用于增量备份的任务队列;全量备份任务队列(All Backup Queue),用于全量备份的任务队列。
相应地,本发明还提供了一种实现分布式架构的数据库备份的系统,包括配置中心、缓存组件、注册中心集群、备份服务集群和MySQL集群,配置中心(Config),用于备份任务的定义及配置;缓存组件包括本地缓存(Local Cache),本地缓存用于存储备份服务的服务信息;缓存组件包括任务线程(Refer Tasker),任务线程用来监听和接收注册中心节点变化的数据;配置中心包括调度任务池(Tasker Pool),调度任务池(Tasker Pool) 监听队列及调用备份服务;注册中心集群(Registry Group),用来注册备份服务地址及推送服务信息给服务调用者;备份服务集群(Job Group),数据备份的模块,用于包含与MySQL的授权认证,记录SCN,拷贝数据块,监听事务点,恢复数据等。
进一步的,所述队列包括备份恢复任务队列(Recovery Queue),用于备份恢复的任务队列;增量备份任务队列(Incr Backup Queue),用于增量备份的任务队列;全量备份任务队列(All Backup Queue),用于全量备份的任务队列。本发明有如下有益效果:
1)采用高可用技术,避免备份服务出现单节点挂起导致该节点的所有备份任务都挂起的问题;
2)采用了异步集中化的备份及备份恢复方式,保障各异步节点之间的数据互通和备份数据完整无误,规避了同步化存在的风险,且集中化的运行机制有效地控制了成本;
3)注册中心和备份服务实现了集群化,完善了多点备份机制,大幅提升了备份效率,较业界普通备份方式提升了约20%;
4)业界独创的备份流程,既控制了风险又达到了准确安全的目的。
附图说明
图1是本发明的流程控制图。
具体实施方式
下面结合附图对本发明作进一步说明。
如图1所示,本发明使用的系统整体架构包括:配置中心,用于备份任务定义及配置,支持分布式;本地缓存,用于存储备份服务的服务信息,来保证存储的可靠及速度的高效;各类任务队列,需执行的具体任务;调度任务池,位于配置中心和注册中心之间,监听队列及调用备份服务等功能;备份服务集群,用于数据备份的模块,包含了与MySQL的授权认证,记录SCN,拷贝数据块,监听事务点,恢复数据等功能;任务线程(Refer Tasker),用来监听和接收注册中心节点变化的数据;注册中心集群(Registry Group),用来注册备份服务地址及推送服务信息给服务调用者。
本发明的实现分布式架构的数据库备份方法,包括以下步骤:
根据备份服务集群提供的信息在配置中心生成需要备份的任务;
根据定义的备份任务的要素,生成对应的任务进入相应的队列,包括备份恢复任务队列(Recovery Queue),用于备份恢复的任务队列;增量备份任务队列(Incr Backup Queue),用于增量备份的任务队列;全量备份任务队列(All Backup Queue),用于全量备份的任务队列;
以轮询的方式分别轮询上述三个队列,获取相应的任务线程;
从本地缓存中取得可用的备份服务提供者的备份服务信息;
根据LOOP算法,选择可用的备份服务提供者的备份服务信息,添加监听,然后调用备份服务进行数据库备份;
备份服务接受到备份请求,向MySQL备机进行Key授权验证;
备份服务记录MySQL备机的SCN序列号;添加MySQL备机的事务监听;
备份服务拷贝MySQL备机中本地的ibdata、logfile、ibd、frm、MYD、MYI等重要的MySQL数据信息到备份服务的存储上;
还原SCN 序列号开始到现在为止的DML操作到备份服务的存储上;
完成一次MySQL 备份操作;
向备份服务集群中的其它服务发起异步请求,把上一次备份完成的数据再拷贝一次,完成一次多备;
备份完成。
以上所述及图中所示的仅是本发明的优选实施方式。应当指出,对于本领域的普通技术人员来说,在不脱离本发明的原理的前提下,还可以作出若干变型和改进,这些也应视为属于本发明的保护范围。