CN106383861A - 一种用于数据库的数据同步方法及装置 - Google Patents
一种用于数据库的数据同步方法及装置 Download PDFInfo
- Publication number
- CN106383861A CN106383861A CN201610799839.5A CN201610799839A CN106383861A CN 106383861 A CN106383861 A CN 106383861A CN 201610799839 A CN201610799839 A CN 201610799839A CN 106383861 A CN106383861 A CN 106383861A
- Authority
- CN
- China
- Prior art keywords
- data
- mdl
- read
- initial
- storehouse
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明的实施方式提供了一种用于数据库的数据同步方法及装置。该方法包括:在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;控制所述只读数据库与所述新的主数据库进行数据同步。本发明实施方式的用于数据库的数据同步方法,在保证数据安全性,提高故障恢复速度的同时,保证各个数据库之间数据的一致性。此外,本发明的实施方式提供了一种用于数据库的数据同步装置。
Description
技术领域
本发明的实施方式涉及数据同步技术领域,更具体地,本发明的实施方式涉及一种用于数据库的数据同步方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
MySQL是一个关系型数据库管理***(Relational Database ManagementSystem,RDBMS)。MySQL是目前最流行的关系型数据库***,在WEB应用方面MySQL是最好的RDBMS应用软件之一。
随着云计算在中国的普及,大多数云服务都是以开源数据库MySQL搭建的,而且用户在云服务器上搭建数据库大多数也是采用MySQL数据库。为了提高数据的稳定性,MySQL数据库中大多会对主数据库设置从数据库,其中,主数据库用于对用户提供服务,从数据库是主数据库的备份,通过复制功能,与主数据库的数据保持同步,从数据库用以在主数据库宕机以后,立即对用户提供服务,以实现服务的高可用。
现有MySQL数据库中基于二进制日志文件在主数据库和从数据库之间的复制,实现主数据库和从数据库之间的数据同步,具体来说,以一主一从的情况为例,如图1所示,主数据库102数据更改时,将更改记录在二进制日志Binary_log中,从数据库104与主数据库102进行数据同步时,请求获取Binary_log,主数据库102将Binary_log返回给从数据库104,从数据库104接收到主数据库102返回的Binary_log后,将Binary_log中的日志记录数据存储为重做日志Relay_log,并从Relay_log中解析出在主数据库102上执行的更改操作,并执行这些更改操作,也就是说,在主数据库102和从数据库104上执行同样的数据库操作,从而实现主数据库102与从数据库104的数据一致性。但是在基于全局事务标识(GlobalTransaction Identifier,GTID)模式的架构下,从数据库在与主数据进行同步时,必须开启log_slave_updates参数,开启log_slave_updates参数之后,从数据库对于重做日志的回放,也需要记录“更改”,并写入从数据库的二进制日志中。
在关系型数据库服务(Relational Database Service,RDS)***中,“一主多从”的架构,如图2所示,包括:主数据库master201、备份数据库slave202、只读数据库readreplica203和只读数据库readreplica204,在该架构下,只读数据库(包括只读数据库readreplica203和只读数据库readreplica204)与备份数据库202都基于二进制日志文件的复制与主数据库201的数据保持同步,但是,它们之间的作用有以下区别:(1)只读数据库需要对外提供只读服务,备份数据库不需要对外提供服务;(2)只读数据库用以减轻主数据库的工作负担,备份数据库用以在主数据库宕机以后,立即对外提供服务,从而实现数据库的高可用。
在“一主多从”架构下,数据完全一致的故障恢复一直是业界的难题,业界广泛使用高可用集群(Master High Availability,MHA)的“一主多从”架构,而MHA使用重做日志relay log保证数据的一致性,在主数据库发生故障时,从多个从数据库(包括只读数据库和备份数据库)中选择数据复制进度最快的从数据库作为新的主数据库,然后用新的主数据库的relay log去补充其他从数据库的数据,从而保证“一主多从”架构下数据的一致性,但是此种方式有以下两个缺点:
(1)MHA使用安全外壳协议(Secure Shell,SSH)在各个从数据库上传输数据,为了实现脚本自动通过SSH访问其他主机,需要在主机中保存密钥或密码,破坏了数据的安全性。
(2)MHA通过选择数据复制进度最快的从数据库作为新的主数据库,首先需要获取各个从数据库已经复制的主数据库的数据,以判断哪个从数据库中的数据复制进度最快,而在“一主多从”架构下,寻找数据复制进度最快的从数据库势必需要进行多次网络交互,而网络存在较大的不确定性和时间延迟,势必会延长故障恢复的时间。
因此,目前亟需一种用于数据库的数据同步方法,以在保证数据安全性,提高故障恢复速度的同时,保证各个数据库之间数据的一致性。
发明内容
出于现有MHA“一主多从”架构下,使用重做日志保证数据一致性的方法,在主数据库故障时,从多个从数据库(包括只读数据库和备份数据库)中选择数据复制进度最快的从数据库作为新的主数据库时,MHA使用SSH在各个从数据库上传输数据,为了实现脚本自动通过SSH访问其他主机,需要在主机中保存密钥或密码,破坏了数据的安全性,而且在寻找数据复制进度最快的从数据库时需要进行多次网络交互,容易受到网络不确定性和时间延迟的影响,导致延长故障恢复时间。
为此,非常需要一种改进的用于数据库的数据同步方法,以在保证数据安全性,提高故障恢复速度的同时,保证各个数据库之间数据的一致性。
在本上下文中,本发明的实施方式期望提供一种用于数据库的数据同步方法及装置。
在本发明实施方式的第一方面中,提供了一种用于数据库的数据同步方法,包括:
在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;
控制所述只读数据库与所述新的主数据库进行数据同步。
在本发明实施方式的第二方面中,提供了一种用于数据库的数据同步装置,包括:
主数据库设置模块,用于在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;
数据同步模块,用于控制所述只读数据库与所述新的主数据库进行数据同步。
在本发明实施方式的第三方面中,提供了一种用于数据库的数据同步装置,例如,可以包括存储器和处理器,其中,处理器可以用于读取存储器中的程序,执行下列过程:
在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;
控制所述只读数据库与所述新的主数据库进行数据同步。
在本发明实施方式的第四方面中,提供了一种程序产品,其包括程序代码,当所述程序产品运行时,所述程序代码用于执行以下过程:
在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;
控制所述只读数据库与所述新的主数据库进行数据同步。
根据本发明实施方式的用于数据库的数据同步方法及装置,通过在初始主数据库发生故障时,将与初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,避免了在多个从数据库中寻找数据复制进度最快的从数据库,无需在主机中保存密钥和密码,也无需通过多次网络交互寻找数据复制进度最快的从数据库,从而提高了数据安全性以及故障恢复速度,而且在将备用数据库设置为新的主数据库后,控制只读数据库与新的主数据库进行数据同步,保证了各个数据库之间数据的一致性。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1示意性地示出了现有技术中主数据库与从数据库数据同步的原理示意图;
图2示意性地示出了现有技术中“一主多从”架构的结构示意图;
图3示意性地示出了根据本发明实施方式的应用场景示意图;
图4示意性地示出了根据本发明一实施例的一种用于数据库的数据同步方法的流程示意图;
图5示意性地示出了根据本发明另一实施例的一种用于数据库的数据同步装置的结构示意图;
图6示意性地示出了根据本发明又一实施例的用于数据库的数据同步装置的结构示意图;
图7示意性地示出了根据本发明再一实施例的用于数据库的数据同步方法的程序产品示意图。
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种用于数据库的数据同步方法及装置。
在本文中,需要理解的是,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,现有技术中,MHA“一主多从”架构下,使用重做日志保证数据一致性的方法,在主数据库故障时,从多个从数据库(包括只读数据库和备份数据库)中选择数据复制进度最快的从数据库作为新的主数据库时,MHA使用SSH在各个从数据库上传输数据,为了实现脚本自动通过SSH访问其他主机,需要在主机中保存密钥或密码,破坏了数据的安全性,而且在寻找数据复制进度最快的从数据库时需要进行多次网络交互,容易受到网络不确定性和时间延迟的影响,导致延长故障恢复时间。现有技术中缺乏一种改进的用于数据库的数据同步方法,以在保证数据安全性,提高故障恢复速度的同时,保证各个数据库之间数据的一致性。
为此,本发明提供了一种用于数据库的数据同步方法及装置,用于数据库的数据同步方法可以包括:在初始主数据库发生故障时,将与初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,多个从数据库中包括:一个备份数据库和至少一个只读数据库;控制只读数据库与新的主数据库进行数据同步。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
首先参考图3,如图3所示,为本发明实施例提供的用于数据库的数据同步方法的应用场景示意图,包括:初始主数据库302、备份数据库304、只读数据库306以及只读数据库308,其中,初始主数据库302对外提供服务,备份数据库304是初始主数据库302的备份,通过复制功能与初始主数据库302保持数据同步,但备份数据库304不对外提供服务,只读数据库306和只读数据库308,对外提供只读服务,而且通过复制功能与初始主数据库302保持数据同步。
在初始主数据库302发生故障时,将备份数据库304设置为新的主数据库,并控制只读数据库306和只读数据库308与新的主数据库进行数据同步,具体来说,若只读数据库306对初始主数据库302的数据复制进度慢于新的主数据库(备份数据库304)对初始主数据库302的数据复制进度时,则控制只读数据库306从新的主数据库中复制数据,直至只读数据库306对初始主数据库302的数据复制进度与新的主数据库对初始主数据库302的数据复制进度相同;若只读数据库308对初始主数据库302的数据复制进度快于新的主数据库(备份数据库304)对初始主数据库302的数据复制进度时,控制只读数据库进行数据回滚操作,直至只读数据库308对初始主数据库302的数据复制进度与新的主数据库对初始主数据库302的数据复制进度相同。
其中,在具体应用时,只读数据库不局限于两个,可以有多个,本应用场景中以两个只读数据库为例进行说明,但本领域技术人员应当理解的是,若有多个只读数据库与初始主数据库相连接,则根据每个只读数据库对初始主数据库的数据复制进度与新的主数据库对初始主数据库的数据复制进度的关系,确定只读数据库从新的主数据库复制数据或者进行数据回滚操作。
示例性方法
下面结合图3的应用场景,参考图4来描述根据本发明示例性实施方式的用于数据库的数据同步方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图4为本发明提供的一种用于数据库的数据同步方法的实施例的流程示意图,主要包括在初始主数据库发生故障时将备用数据库设置为新的主数据库,以及控制只读数据库与新的主数据库进行数据同步的流程,执行主体可以为应用场景总览中安装在备用数据库304或者只读数据库中监测软件或装置等,如图4所示,本发明实施例提供的一种用于数据库的数据同步方法,包括如下步骤:
步骤401,在初始主数据库发生故障时,将与初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,多个从数据库中包括:一个备份数据库和至少一个只读数据库。
本步骤中,在初始主数据库发生故障时,无论备用数据库对初始主数据库的数据复制进度较快,还是只读数据库对初始主数据库的数据复制进度较快,均将备用数据库设置为新的主数据库,并在将备用数据库设置为新的主数据库之后,由新的主数据库对外提供服务,减少了确定新的主数据库的时间,提高了故障恢复速度。
步骤402,控制只读数据库与新的主数据库进行数据同步。
本步骤中,为了保证只读数据库与新的主数据库之间的数据一致性,在将备用数据库设置为新的主数据库之后,控制只读数据库与新的主数据库进行数据同步,具体来说,以新的主数据库中的数据为基准,控制只读数据库与新的主数据库进行数据同步,以使只读数据库中的数据与新的主数据库中的数据保持一致。
优选地,控制只读数据库与新的主数据库进行数据同步,包括:在确定只读数据库对初始主数据库的数据复制进度慢于新的主数据库对初始主数据库的数据复制进度时,控制只读数据库从新的主数据库中复制数据;以及在确定只读数据库对初始主数据库的数据复制进度快于新的主数据库对初始主数据库的数据复制进度时,控制只读数据库进行数据回滚操作。
需要说明的是,备份数据库以及只读数据库在通过复制与初始主数据库进行数据同步时,均是基于复制二进制日志实现的,因此,在确定新的主数据库(备份数据库)对初始主数据库的复制进度与只读数据库对初始主数据库的复制进度的关系时,可以根据新的主数据库以及只读数据库中数据在初始主数据库的二进制日志中对应的位置进行确定。当然,在本发明其它实施例中,也可以基于新的主数据库与只读数据库中的数据进行确定,此处并不用于具体限定。
作为较为具体的实施例,假设新的主数据库的数据复制进度在初始主数据库的二进制日志中对应的位置为8月20日某时刻,若只读数据库1的数据复制进度在初始主数据库的二进制日志中对应的位置为8月21日某时刻,则可以确定只读数据库1对初始主数据库的复制进度快于新的主数据库对初始主数据库的复制进度,为了保证只读数据库1与新的主数据库之间的数据一致性,需要将只读数据库1中的数据回滚到8月20日某时刻;若另一只读数据库,例如:只读数据库2的数据复制进度在初始主数据库的二进制日志中对应的位置为8月19日某时刻,则可以确定只读数据库2对初始主数据库的复制进度慢于新的主数据库对初始主数据库的复制进度,为了保证只读数据库2与新的主数据库之间的数据一致性,只读数据库2需要从新的主数据库中复制数据,以将数据更新到8月20日某时刻。
优选地,控制备份数据库在复制初始主数据库的数据时,记录数据更改操作的二进制日志,控制只读数据库在复制初始主数据库或新的主数据库的数据时,不记录数据更改操作的二进制日志。
具体地,控制备份数据库在复制初始主数据库的数据时,记录数据更改操作的二进制日志,则在初始主数据库发生故障,将备用数据库设置为新的主数据库之后,若只读数据库对初始主数据库的复制进度慢于新的主数据库对初始主数据库的复制进度,只读数据库需要从新的主数据库复制数据时,由于新的主数据库在复制初始主数据库的数据库,记录有数据更改操作的二进制日志,因此,只读数据库可以从新的主数据库中复制二进制日志进行数据复制,减小了数据复制量,提高数据同步速度。
而控制只读数据库在复制初始主数据库或新的主数据库的数据时,不记录数据更改操作的二进制日志,能够降低对只读数据库磁盘的要求,避免磁盘成为性能瓶颈。具体来说,只读数据库在复制初始主数据库或新的主数据库的数据时,若记录数据更改操作的二进制日志,则只读数据库一方面需要从初始主数据库或者新的主数据库复制数据,记录到自身的relay log中,在回放relay log的同时还需要将更改操作记录在二进制日志中,另一方面,只读数据库还需要对外提供服务,响应用户的需求。如果主数据库(初始主数据库或者新的主数据库)和只读数据库的负载都较大,则只读数据库在复制数据记录更改操作的二进制日志的同时,对外提供服务,只读数据库的磁盘读写速度就会成为性能瓶颈,若只读数据库与主数据库(初始主数据库或者新的主数据库)数据同步不及时,可能导致只读数据库提供的数据不准确。本实施例中控制只读数据库在复制初始主数据库或新的主数据库的数据时,不记录数据更改操作的二进制日志,能够有效降低对只读数据库磁盘的要求,避免磁盘成为性能瓶颈,提高资源利用率。
需要说明的是,在MySQL 5.7版本中基于全局事务标识(Global TransactionIdentifier,GTID)的模式下,不强制要求备用数据库和只读数据库在复制初始主数据库的数据时,记录数据更改操作的二进制日志,本发明实施例利用该特性,控制备份数据库在复制初始主数据库的数据时,记录数据更改操作的二进制日志,控制只读数据库在复制初始主数据库或新的主数据库的数据时,不记录数据更改操作的二进制日志。
优选地,在初始主数据库故障恢复时,将初始主数据库设置为新的主数据库的备份数据库。
具体地,由于在初始主数据库发生故障时,已将备份数据库设置为新的主数据库,因此,在初始主数据库故障恢复时,将初始主数据库设置为新的主数据库的备份数据库,以提高数据稳定性。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图5描述本发明示例性实施方式的用于数据库的数据同步装置。
图5为本发明实施例提供的一种用于数据库的数据同步装置的结构示意图之一,如图5所示,可以包括如下模块:
主数据库设置模块501,用于在初始主数据库发生故障时,将与初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,多个从数据库中包括:一个备份数据库和至少一个只读数据库;
数据同步模块502,用于控制只读数据库与新的主数据库进行数据同步。
优选地,数据同步模块502,包括:
数据复制单元5021,用于在确定只读数据库对初始主数据库的数据复制进度慢于新的主数据库对初始主数据库的数据复制进度时,控制只读数据库从新的主数据库中复制数据;以及
数据回滚单元5022,用于在确定只读数据库对初始主数据库的数据复制进度快于新的主数据库对初始主数据库的数据复制进度时,控制只读数据库进行数据回滚操作。
在本实施例的一些实施方式中,可选的,该用于数据库的数据同步装置还包括:
第一配置模块503,用于控制备份数据库在复制初始主数据库的数据时,记录数据更改操作的二进制日志;
第二配置模块504,用于控制只读数据库在复制初始主数据库或新的主数据库的数据时,不记录数据更改操作的二进制日志。
优选地,数据复制单元5021控制只读数据库从新的主数据库中复制数据,具体用于:控制只读数据库从新的主数据库中复制二进制日志进行数据复制。
在本实施例的一些实施方式中,可选的,该用于数据库的数据同步装置还包括:
从数据库设置模块505,用于在所述初始主数据库故障恢复时,将所述初始主数据库设置为所述新的主数据库的备份数据库。
示例性设备
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于数据库的数据同步装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
在一些可能的实施方式中,根据本发明的用于数据库的数据同步装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于数据库的数据同步方法中的步骤。例如,所述处理单元可以执行如图4中所示的步骤401,在初始主数据库发生故障时,将与初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,多个从数据库中包括:一个备份数据库和至少一个只读数据库,步骤402,控制只读数据库与新的主数据库进行数据同步。
下面参照图6来描述根据本发明的这种实施方式的用于数据库的数据同步装置60。图6显示的用于数据库的数据同步装置60仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图6所示,用于数据库的数据同步装置60以通用计算设备的形式表现。用于数据库的数据同步装置60的组件可以包括但不限于:上述至少一个处理单元601、上述至少一个存储单元602、连接不同***组件(包括处理单元601和存储单元602)的总线603。
总线603表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、***总线、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元602可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)6021和/或高速缓存存储器6022,还可以进一步包括只读存储器(ROM)6023。
存储单元602还可以包括具有一组(至少一个)程序模块6024的程序/实用工具6025,这样的程序模块6024包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于数据库的数据同步装置60也可以与一个或多个外部设备604(例如键盘、指向设备等)通信,还可与一个或者多个使得用户能与用于数据库的数据同步装置60交互的设备通信,和/或与使得该用于数据库的数据同步装置60能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口605进行。并且,用于数据库的数据同步装置60还可以通过网络适配器606与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图6所示,网络适配器606通过总线603与用于数据库的数据同步装置60的其它模块通信。应当理解,尽管图中未示出,可以结合用于数据库的数据同步装置60使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
示例性程序产品
在一些可能的实施方式中,本发明提供的用于数据库的数据同步方法的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在计算机设备上运行时,所述程序代码用于使所述计算机设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于数据库的数据同步方法中的步骤,例如,所述计算机设备可以执行如图4中所示的步骤401,在初始主数据库发生故障时,将与初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,多个从数据库中包括:一个备份数据库和至少一个只读数据库,步骤402,控制只读数据库与新的主数据库进行数据同步。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图7所示,描述了根据本发明的实施方式的用于数据库进行数据同步的程序产品70,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于数据库的数据同步装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (10)
1.一种用于数据库的数据同步方法,包括:
在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库;其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;
控制所述只读数据库与所述新的主数据库进行数据同步。
2.根据权利要求1所述的方法,其中,所述控制所述只读数据库与所述新的主数据库进行数据同步,包括:
在确定所述只读数据库对所述初始主数据库的数据复制进度慢于所述新的主数据库对所述初始主数据库的数据复制进度时,控制所述只读数据库从所述新的主数据库中复制数据;以及
在确定所述只读数据库对所述初始主数据库的数据复制进度快于所述新的主数据库对所述初始主数据库的数据复制进度时,控制所述只读数据库进行数据回滚操作。
3.根据权利要求2所述的方法,进一步包括:
控制所述备份数据库在复制所述初始主数据库的数据时,记录数据更改操作的二进制日志;
控制所述只读数据库在复制所述初始主数据库或所述新的主数据库的数据时,不记录数据更改操作的二进制日志。
4.根据权利要求3所述的方法,其中,所述控制所述只读数据库从所述新的主数据库中复制数据,包括:
控制所述只读数据库从所述新的主数据库中复制二进制日志进行数据复制。
5.根据权利要求1-4中任一项所述的方法,进一步包括:
在所述初始主数据库故障恢复时,将所述初始主数据库设置为所述新的主数据库的备份数据库。
6.一种用于数据库的数据同步装置,包括:
主数据库设置模块,用于在初始主数据库发生故障时,将与所述初始主数据库连接的多个从数据库中的备份数据库设置为新的主数据库,其中,所述多个从数据库中包括:一个备份数据库和至少一个只读数据库;
数据同步模块,用于控制所述只读数据库与所述新的主数据库进行数据同步。
7.根据权利要求6所述的装置,其中,所述数据同步模块,包括:
数据复制单元,用于在确定所述只读数据库对所述初始主数据库的数据复制进度慢于所述新的主数据库对所述初始主数据库的数据复制进度时,控制所述只读数据库从所述新的主数据库中复制数据;以及
数据回滚单元,用于在确定所述只读数据库对所述初始主数据库的数据复制进度快于所述新的主数据库对所述初始主数据库的数据复制进度时,控制所述只读数据库进行数据回滚操作。
8.根据权利要求7所述的装置,进一步包括:
第一配置模块,用于控制所述备份数据库在复制所述初始主数据库的数据时,记录数据更改操作的二进制日志;
第二配置模块,用于控制所述只读数据库在复制所述初始主数据库或所述新的主数据库的数据时,不记录数据更改操作的二进制日志。
9.根据权利要求8所述的装置,其中,所述数据复制单元控制所述只读数据库从所述新的主数据库中复制数据,具体用于:
控制所述只读数据库从所述新的主数据库中复制二进制日志进行数据复制。
10.根据权利要求6-9中任一项所述的装置,进一步包括:
从数据库设置模块,用于在所述初始主数据库故障恢复时,将所述初始主数据库设置为所述新的主数据库的备份数据库。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610799839.5A CN106383861A (zh) | 2016-08-31 | 2016-08-31 | 一种用于数据库的数据同步方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610799839.5A CN106383861A (zh) | 2016-08-31 | 2016-08-31 | 一种用于数据库的数据同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN106383861A true CN106383861A (zh) | 2017-02-08 |
Family
ID=57938869
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610799839.5A Pending CN106383861A (zh) | 2016-08-31 | 2016-08-31 | 一种用于数据库的数据同步方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106383861A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203596A (zh) * | 2017-05-05 | 2017-09-26 | 温州法派服饰有限公司 | 一种智能成衣数据转换维护*** |
CN108932338A (zh) * | 2018-07-11 | 2018-12-04 | 北京百度网讯科技有限公司 | 数据更新方法、装置、设备和介质 |
CN109144790A (zh) * | 2018-09-30 | 2019-01-04 | 广州鼎甲计算机科技有限公司 | MySQL数据库的合成备份方法和装置 |
CN114816247A (zh) * | 2022-04-13 | 2022-07-29 | 阿里云计算有限公司 | 一种逻辑数据获取方法及装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523032B1 (en) * | 2000-05-12 | 2003-02-18 | Oracle Corporation | Servicing database requests using read-only database servers coupled to a master database server |
CN101714169A (zh) * | 2009-12-01 | 2010-05-26 | 广州从兴电子开发有限公司 | 一种在多节点上传递数据方法及*** |
CN102761528A (zh) * | 2011-04-28 | 2012-10-31 | 中兴通讯股份有限公司 | 数据管理***及方法 |
CN103019875A (zh) * | 2012-12-19 | 2013-04-03 | 北京世纪家天下科技发展有限公司 | 一种实现数据库双主改造的方法及装置 |
CN104866556A (zh) * | 2015-05-15 | 2015-08-26 | 北京奇虎科技有限公司 | 数据库的故障处理方法、装置和数据库*** |
CN105760456A (zh) * | 2016-02-04 | 2016-07-13 | 网易(杭州)网络有限公司 | 一种保持数据一致性的方法和装置 |
-
2016
- 2016-08-31 CN CN201610799839.5A patent/CN106383861A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6523032B1 (en) * | 2000-05-12 | 2003-02-18 | Oracle Corporation | Servicing database requests using read-only database servers coupled to a master database server |
CN101714169A (zh) * | 2009-12-01 | 2010-05-26 | 广州从兴电子开发有限公司 | 一种在多节点上传递数据方法及*** |
CN102761528A (zh) * | 2011-04-28 | 2012-10-31 | 中兴通讯股份有限公司 | 数据管理***及方法 |
CN103019875A (zh) * | 2012-12-19 | 2013-04-03 | 北京世纪家天下科技发展有限公司 | 一种实现数据库双主改造的方法及装置 |
CN104866556A (zh) * | 2015-05-15 | 2015-08-26 | 北京奇虎科技有限公司 | 数据库的故障处理方法、装置和数据库*** |
CN105760456A (zh) * | 2016-02-04 | 2016-07-13 | 网易(杭州)网络有限公司 | 一种保持数据一致性的方法和装置 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107203596A (zh) * | 2017-05-05 | 2017-09-26 | 温州法派服饰有限公司 | 一种智能成衣数据转换维护*** |
CN108932338A (zh) * | 2018-07-11 | 2018-12-04 | 北京百度网讯科技有限公司 | 数据更新方法、装置、设备和介质 |
CN108932338B (zh) * | 2018-07-11 | 2021-08-10 | 北京百度网讯科技有限公司 | 数据更新方法、装置、设备和介质 |
CN109144790A (zh) * | 2018-09-30 | 2019-01-04 | 广州鼎甲计算机科技有限公司 | MySQL数据库的合成备份方法和装置 |
CN114816247A (zh) * | 2022-04-13 | 2022-07-29 | 阿里云计算有限公司 | 一种逻辑数据获取方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11093139B1 (en) | Durably storing data within a virtual storage system | |
US20210019093A1 (en) | Efficient transfers between tiers of a virtual storage system | |
US20220083245A1 (en) | Declarative provisioning of storage | |
US11126364B2 (en) | Virtual storage system architecture | |
US10169167B2 (en) | Reduced recovery time in disaster recovery/replication setup with multitier backend storage | |
CN110334075B (zh) | 基于消息中间件的数据迁移方法及相关设备 | |
US8626936B2 (en) | Protocol independent server replacement and replication in a storage area network | |
CN111090699A (zh) | 业务数据的同步方法和装置、存储介质、电子装置 | |
US8799602B2 (en) | Automated migration to a new target volume via merged bitmaps to maintain consistency | |
CN106383861A (zh) | 一种用于数据库的数据同步方法及装置 | |
CN104246767A (zh) | 用于云同步***的遥测*** | |
CN103870338A (zh) | 一种基于cpu核管理的分布式并行计算平台及方法 | |
US20190317872A1 (en) | Database cluster architecture based on dual port solid state disk | |
CN102479160B (zh) | 用于使用滑动写入窗口机制写入数据的方法和*** | |
CN110210845B (zh) | 用于区块链数据迁移的方法、装置、介质和计算设备 | |
CN109445837A (zh) | 一种应用程序的发布方法及设备 | |
CN111984465A (zh) | 数据库远程备份方法、装置、介质和电子设备 | |
CN106686099A (zh) | 一种基于infiniband网络实现Oracle RAC数据库跨机房双活的方法 | |
KR20130140508A (ko) | 로그 정보 수집 장치 | |
CN112347192A (zh) | 数据同步方法、装置、平台以及可读介质 | |
CN110121694A (zh) | 一种日志管理方法、服务器和数据库*** | |
CN107422980B (zh) | 物联网数据文件存储***及其数据文件存储方法 | |
CN104517067A (zh) | 访问数据的方法、装置及*** | |
CN106570151A (zh) | 一种海量文件的数据收集处理方法及*** | |
CN113254424A (zh) | 数据服务迁移方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170208 |
|
RJ01 | Rejection of invention patent application after publication |