主备数据库的同步方法及装置制造方法及图纸

技术编号:13394791 阅读:54 留言:0更新日期:2016-07-23 12:50
一种主备数据库同步装置,包括同步事务获取单元,用于通过对主数据库中的数据库事务进行读取,获得需要同步的数据库事务信息,将其添加到数据库事务写队列中,并将数据库事务主键数量作为主键处理进度值;以及同步事务执行单元,用于采用并行写入方式将所述数据库事务写队列中的所述数据库事务写入到备数据库中,并删除位于所述数据库事务写队列顶端的所述数据库事务。以及一个主备数据库同步方法。本发明专利技术的同步装置和方法能够将MariaDB的集群性能大大提升,有效扩展了MariaDB的试用范围,能够支持更高的数据库访问量;此外,多线程并行写入的方式减少了同步的执行时间,大大提升了MariaDB的执行效率。

【技术实现步骤摘要】

本专利技术涉及数据处理领域,更具体地涉及一种主备数据库的同步方法及装置。
技术介绍
MySQL是互联网行业广泛使用的开源数据库软件,不过由于甲骨文存在将MySQL闭源的风险,许多基于MySQL的应用都面临需要使用替代性的开源数据库软件,而MariaDB是对MySQL兼容性最好的替代方案。但针对大型网站,使用MariaDB数据库存在一台MariaDB数据库无法支持庞大访问量的问题。对此有效的解决方案是建立MariaDB数据库集群,其中备数据库是主数据库的完整镜像,写请求首先在主数据库上执行,而读请求会分布到所有数据库上,主数据库在接收写数据完成后通过同步工具将写请求按照单线程顺序执行的方式同步到备数据库上,从而提供更加强大的数据库读写服务。目前官方提供的主备同步的版本中,主备同步采用的是单线程同步,当主数据库负载较高时,会导致同步延时增大,备数据库不能及时读取最新数据,降低了数据库集群的可用性。
技术实现思路
有鉴于此,本专利技术的主要目的在于提供一种主备数据库同步方法及装置,以便解决现有主备数据库在备数据库较多的情况下,同步效率低下的问题。为了实现上述目的,作为本专利技术的一个方面,本专利技术提供了一种主备数据库同步装置,包括:同步事务获取单元,用于通过对主数据库中的数据库事务进行读取,获得需要同步的数据库事务信息,将其添加到数据库事务写队列中,并将数据库事务主键数量作为主键处理进度值;以及同步事务执行单元,用于采用并行写入方式将所述数据库事务写队列中的所述数据库事务写入到备数据库中,并删除位于所述数据库事务写队列顶端的所述数据库事务。其中,所述同步事务执行单元包括同步事务处理组件、同步事务写入组件和同步事务完成组件,其中所述同步事务处理组件轮训各个待处理的数据库事务主键处理进度值,当主键事务处理进度值为0时进入所述同步事务执行组件;所述同步事务执行组件将主键处理进度值为0的数据库事务派发到写线程执行,采用并行写入方式将写队列的事务写入备数据库中;所述同步事务完成组件在写入备数据库的数据库事务完成后,删除已经完成的数据库事务,删除位于主键写队列顶端的该数据库事务,主键写队列的第二条数据库事务自动成为主键写队列的待处理事务,并通知所述数据库事务主键处理进度值减一。作为本专利技术的另一个方面,本专利技术还提供了一种主备数据库同步方法,包括以下步骤:通过对主数据库中的数据库事务进行读取,获得需要同步的数据库事务信息,取得数据库事务的主键,记录同步数据库事务的主键,并将数据库事务主键数量作为主键处理进度值;按照数据库事务主键信息,将获取到的数据库事务按照主数据库中的顺序增加到数据库事务主键对应主键写队列中;其中,对于没有写队列的主键需要创建新的主键写队列,并将该事务置为写队列顶端,通知该主键处理进度值减一;轮训各个待处理的数据库事务主键处理进度值,当主键事务处理进度值为0时进入同步事务执行组件;将主键处理进度值为0的数据库事务派发写线程执行,采用并行写入方式将写队列的事务写入备数据库中;写入备数据库的数据库事务完成后,删除已经完成的数据库事务,删除位于主键写队列顶端的该数据库事务,主键写队列的第二条数据库事务自动成为主键写队列的待处理事务;通知该数据库事务主键处理进度值减一。基于上述技术方案可知,本专利技术的同步装置和方法相对于现有技术,能够将MariaDB的集群性能大大提升,有效扩展了MariaDB的试用范围,能够支持更高的数据库访问量;此外,以事务作为同步的最小单位,事务本身具有原子性,同时多线程并行写入的方式减少了同步的执行时间,大大提升了MariaDB的执行效率。附图说明图1是本专利技术的基于MariaDB主备数据库的同步方法的流程框图。具体实施方式为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术作进一步的详细说明。MariaDB是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者MichaelWidenius创办的公司所开发的免费开源的数据库服务器。数据库事务(DatabaseTransaction),是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。为了解决现有主备数据库同步效率低下的问题,本专利技术公开了一种基于MariaDB数据库的主备数据库同步装置,其由两个部分组成,分别是同步事务获取单元和同步事务执行单元。同步事务执行单元又由三个组件组成,分别是同步事务处理组件、同步事务写入组件、同步事务完成组件。由于同步工作是持续进行的,因此在实际过程中,同步事务获取单元不断将新的需要同步的事务交给同步事务执行单元进行处理。同时,同步事务执行单元也会由于同步事务的不断增加而在重复按照同步事务处理组件、同步事务写入组件、同步事务完成组件进行事务处理。下面具体对本专利技术的主备数据库同步装置的各个组成部分进行详细说明和阐述。同步事务获取单元通过对主数据库中的数据库事务进行读取,获得需要同步的数据库事务信息。针对获取到的数据库事务,需要取得数据库事务的主键,记录同步数据库事务的主键,并将数据库事务主键数量作为主键处理进度值。获取到的数据库事务,按照数据库事务主键信息,按照主数据库中的顺序增加到数据库事务主键对应主键写队列中,主键写队列按照先进先出的顺序方式执行。对于没有写队列的主键需要创建新的主键写队列,并将该事务置为写队列顶端,通知该主键处理进度值减一。同步事务执行单元同步事务执行单元由三个组件组成,分别是同步事务处理组件、同步事务写入组件和同步事务完成组件。同步事务处理组件轮训各个待处理的数据库事务主键处理进度值,当主键事务处理进度值为0时进入同步事务执行组件。其中,在主键写队列里面存在若干个待处理的数据库事务主键等待执行,且这些事务主键是有序的,只有该事务主键之前的事务主键执行完成后才能轮到新的事务主键执行,当轮到该事务主键处理的时候,该事务主键处理进度值为0,执行完成后会去轮询所有事务主键,将该事务主键的处理进度值设为-1,同时寻找事务主键进度值为0的待处理的事务本文档来自技高网...

【技术保护点】
一种主备数据库同步装置,包括:同步事务获取单元,用于通过对主数据库中的数据库事务进行读取,获得需要同步的数据库事务信息,将其添加到数据库事务写队列中,并将数据库事务主键数量作为主键处理进度值;以及同步事务执行单元,用于采用并行写入方式将所述数据库事务写队列中的所述数据库事务写入到备数据库中,并删除位于所述数据库事务写队列顶端的所述数据库事务。

【技术特征摘要】
1.一种主备数据库同步装置,包括:
同步事务获取单元,用于通过对主数据库中的数据库事务进行读取,
获得需要同步的数据库事务信息,将其添加到数据库事务写队列中,并将
数据库事务主键数量作为主键处理进度值;以及
同步事务执行单元,用于采用并行写入方式将所述数据库事务写队列
中的所述数据库事务写入到备数据库中,并删除位于所述数据库事务写队
列顶端的所述数据库事务。
2.根据权利要求1所述的主备数据库同步装置,其中所述同步事务
获取单元在获得需要同步的数据库事务信息时需要取得所述数据库事务
的主键,并记录同步数据库事务的主键。
3.根据权利要求1所述的主备数据库同步装置,其中所述同步事务
获取单元将需要同步的数据库事务信息添加到所述数据库事务写队列中
时,是按照所述数据库事务的主键信息在所述主数据库中的顺序进行写入。
4.根据权利要求1所述的主备数据库同步装置,其中所述同步事务
获取单元将需要同步的数据库事务信息添加到所述数据库事务写队列中
时,采用先进先出模式写入。
5.根据权利要求1所述的主备数据库同步装置,其中所述同步事务
执行单元包括同步事务处理组件、同步事务写入组件和同步事务完成组件,
其中:
所述同步事务处理组件轮训各个待处理的数据库事务主键处理进度
值,当主键事务处理进度值为0时进入所述同步事务执行组件;
所述同步事务执行组件将主键处理进度值为0的数据库事务派发到写
线程执行,采用并行写入方式将写队列的事务写入备数据库中;以及
所述同步事务完成组件在写入备数据库的数据库事务完成后,删除已
经完成的数据库事务,删除位于主键写...

【专利技术属性】
技术研发人员:郭理靖田琪沈陈乐
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1