CN105760456A - 一种保持数据一致性的方法和装置 - Google Patents

一种保持数据一致性的方法和装置 Download PDF

Info

Publication number
CN105760456A
CN105760456A CN201610080266.0A CN201610080266A CN105760456A CN 105760456 A CN105760456 A CN 105760456A CN 201610080266 A CN201610080266 A CN 201610080266A CN 105760456 A CN105760456 A CN 105760456A
Authority
CN
China
Prior art keywords
machine
file
data
main frame
relaylog
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.)
Granted
Application number
CN201610080266.0A
Other languages
English (en)
Other versions
CN105760456B (zh
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.)
Netease Hangzhou Network Co Ltd
Original Assignee
Netease Hangzhou Network 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 Netease Hangzhou Network Co Ltd filed Critical Netease Hangzhou Network Co Ltd
Priority to CN201610080266.0A priority Critical patent/CN105760456B/zh
Publication of CN105760456A publication Critical patent/CN105760456A/zh
Application granted granted Critical
Publication of CN105760456B publication Critical patent/CN105760456B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明的实施方式涉及计算机领域,提出一种保持数据一致性的方法和装置:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,在该方案中,无MySQL版本的限制,也没有磁盘的限制,同时也不需要在主机中保存密钥或密码,而且在主机宕机的情况下切换速度快,因此,解决了现有技术中存在的适用MySQL版本有局限、效率较低及安全性较差的缺陷。

Description

一种保持数据一致性的方法和装置
技术领域
本发明的实施方式涉及计算机技术领域,更具体地,本发明的实施方式涉及一种保持数据一致性的方法及装置。
背景技术
本部分旨在为权利要求书中陈述的本发明的实施方式提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。
MySQL是一种开放源代码的关系型数据库管理***,MySQL数据库***使用最常用的数据库管理语言-SQL(StructuredQueryLanguage,结构化查询语言)进行数据库管理。由于MySQL是开放源代码的,因此任何人都可以在GeneralPublicLicense的许可下下载并根据个性化的需要对其进行修改。MySQL因为其速度、可靠性和适应性方面的优势而备受关注。
在默认情况下,MySQL的复制是异步的,这意味着主机及其从机是独立的。异步复制可以提供最佳的性能,因为主机在将更新的数据写入它的二进制日志(binlog)文件中后,无需等待验证更新数据是否已经复制到从机中,就可以自由处理其它进入的事务处理请求。但这也同时带来了很高的风险,如果在主机或从机端发生故障,会造成主从数据的不一致,甚至在恢复时造成数据丢失。
为了避免数据丢失,MySQL的“一主多从”架构下保持数据一致性显得尤为重要。目前通常采用如下两种方案:第一种为,对于业界其他RDS(RelationalDatabaseService)提供商,都适用GTID(GlobalTransactionIdentifier)来保证一主多从架构下数据的一致性;第二种为,使用relaylog保证数据一致性,并且,从多个从机中选择数据最多的从机作为新的主机,然后根据新的主机的relaylog去补其他从机的数据,从而保证“一主多从”下数据完全一致性。
发明内容
但是,第一种方法抛弃大量线上业务仍然广泛使用的MySQL5.5,只对MySQL5.6及更高版本提供一主多从下数据完全一致性的故障恢复,同时,开启GTID,需要在从机上开启binlog,对于HDD(HardDiskDrive,硬盘驱动器)磁盘,磁盘将成为性能瓶颈,复制会有较大的延迟,从而无法做到主机宕机以后,立即主从切换,效率较低;第二种方法为了实现脚本自动通过SSH(SecureShell,安全外壳协议)访问其他主机,需要在主机中保存密钥或密码,破坏了数据的安全性,寻找数据最多的从机势必需要进行多次网络交付,而网络存在较大的不确定性和时间延迟,就可能会延长故障恢复的时间。因此,目前保持数据一致性的方法存在适用MySQL版本有局限、效率较低及安全性较差的缺陷,这是非常令人烦恼的过程。
为此,非常需要一种改进的保持数据一致性的方法和装置,以解决现有技术中存在的适用MySQL版本有局限、效率较低及安全性较差的缺陷。
在本上下文中,本发明的实施方式期望提供一种保持数据一致性的方法和装置。
在本发明实施方式的第一方面中,提供了一种保持数据一致性的方法,包括:
确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;
将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;
针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
在一个实施例中,根据本发明的上述实施例所述的方法,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,包括:
确定该从机当前复制到所述初始主机中发生过变化的数据的第一位置;
确定所述新的主机当前复制到所述初始主机中发生过变化的数据的第二位置;
判断所述第一位置是否大于所述第二位置,若是,将所述第一位置和所述第二位置之间的所述发生过变化的数据回滚掉;否则,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
在一些实施例中,根据本发明的上述任一实施例所述的方法,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致之后,若所述新的主机中的数据发生变化,所述方法还包括:
针对所述剩余从机中的任意一从机,分别执行:
将所述任意一从机按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中
按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
在一些实施例中,根据本发明的上述任一实施例所述的方法,所述方法还包括:
若将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小达到阈值时,建立下一个relaylog文件,并将所述任意一binlog文件的文件名写入所述下一个relaylog文件的头部。
在一些实施例中,根据本发明的上述任一实施例所述的方法,所述方法还包括:
若将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小未达到阈值,且当前从所述任一binlog文件中读取的event为Rotateevent时,建立下一个relaylog文件,并将所述任意一binlog文件的相邻的下一个binlog文件的文件名写入所述下一个relaylog文件的头部。
在一些实施例中,根据本发明的上述任一实施例所述的方法,所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名。
在本发明实施方式的第二方面中,提供了一种保持数据一致性的装置,包括:
选择单元,用于确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;
确定单元,用于将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;
数据一致性保持单元,用于针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
在一个实施例中,根据本发明的上述实施例所述的装置,所述数据一致性保持单元包括位置确定单元、判断单元、回滚单元和复制单元,其中:
所述位置确定单元,用于确定该从机当前复制到所述初始主机中发生过变化的数据的第一位置;
所述位置确定单元还用于,确定所述新的主机当前复制到所述初始主机中发生过变化的数据的第二位置;
所述判断单元,用于判断所述第一位置是否大于所述第二位置;
所述回滚单元,用于在所述判断单元判定所述第一位置大于所述第二位置时,将所述第一位置和所述第二位置之间的所述发生过变化的数据回滚掉;
所述复制单元,用于在所述判断单元判定所述第一位置小于或者等于所述第二位置时,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
在一些实施例中,根据本发明的上述任一实施例所述的装置,若所述新的主机中的数据发生变化,所述复制单元还用于,针对所述剩余从机中的任意一从机,分别执行:将所述任意一从机按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
在一些实施例中,根据本发明的上述任一实施例所述的装置,所述装置还包括relaylog文件建立单元,用于将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小达到阈值时,建立下一个relaylog文件,并将所述任意一binlog文件的文件名写入所述下一个relaylog文件的头部。
在一些实施例中,根据本发明的上述任一实施例所述的装置,所述装置还包括relaylog文件建立单元,用于将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小未达到阈值,且当前从所述任一binlog文件中读取的event为Rotateevent时,建立下一个relaylog文件,并将所述任意一binlog文件的相邻的下一个binlog文件的文件名写入所述下一个relaylog文件的头部。
在一些实施例中,根据本发明的上述任一实施例所述的装置,所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名。
本发明实施例中,提出一种保持数据一致性的方法和装置:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,在该方案中,无MySQL版本的限制,也没有磁盘的限制,同时也不需要在主机中保存密钥或密码,而且切换速度快,因此,解决了现有技术中存在的适用MySQL版本有局限、效率较低及安全性较差的缺陷。
同时,由于所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名,和/或relaylog文件的头部添加binlog文件的文件名,因此,进一步提高了复制效率。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1A示意性地示出了根据本发明实施方式的从机从主机复制数据的方法示意图;
图1B示意性地示出了根据本发明实施方式的保持数据一致性的方法的流程图;
图1C示意性地示出了根据本发明实施方式的保持数据一致性的方法的示意图;
图1D示意性地示出了根据本发明实施方式的Rotateevent的示意图;
图2示意性地示出了根据本发明实施例的保持数据一致性的装置的一种示意图;
图3示意性地示出了根据本发明实施例的保持数据一致性的装置的另一种示意图;
图4示意性地示出了根据本发明实施例的保持数据一致性的装置的再一种示意图;
在附图中,相同或对应的标号表示相同或对应的部分。
具体实施方式
下面将参考若干示例性实施方式来描述本发明的原理和精神。应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
本领域技术技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
根据本发明的实施方式,提出了一种保持数据一致性的方法和设备。
下面对本发明中用到的主机文件和从机文件进行说明。
在MySQL构中,将数据的变更以event的形式进行记录,每一个变更对应于一个event,主机的数据发生变化时,相应的event写在主机的Binarylog中的binlog文件中(一个binlog文件代表Binarylog中的单个文件,该文件的文件名可以自定义);Binarylog包括多个binlog文件,每一个binlog文件中包含了多个event,因此,每个event可以使用Binarylog中的binlog文件的文件名和该event在binlog文件中写入位置的相对于该文件初始位置的偏移量唯一标示,其中,在该event处会保存该偏离量。
从机与主机保持数据一致性的机制如下:如果主机数据发生变化,则这些变化以event的形式记录在主机的Binarylog中的binlog文件中。主机将Binarylog发送给从机,从机将Binarylog保存为Relaylog,保存的方式为,将多个binlog文件中的event,依次存入多个relay-bin文件中。然后从机将relay-bin文件中所记录的event再进行回放,由此保持从机和主机的数据一致性,如图1A所示。
这里需要注意,Binarylog和Relaylog存放的内容存在细微差异,而且,Binarylog中binlog文件和Relaylog中的relay-bin文件的单个文件大小,并不需要相同。由于单个文件大小的不相同,会存在这样的问题,比如Binarylog中的单个文件binlog比relay-bin文件大(这里是举个例子,双方大小关系并不限定于此),在Binarylog中binlog文件中的内容在转移到的relay-bin中的时候,不能“文件与文件一一对应”的写入,而是binlog文件中的内容可能要被切分到两个relay-bin文件中。因此,关于一个特定的event,在Binarylog中其可以通过特定文件名和特定偏移量而唯一确定,但是,在Relaylog中其不能通过文件名称和偏移量在Relaylog找到。
MySQL为了节省存储空间,在binlog文件中,event中仅保存了该event在该文件中的偏移位置,该event并没有保存文件名,而是在binlog文件中,用一个专门的event来保存binlog文件的文件名,该event称之为Rotateevent;主机会将这个Rotatevent会和其他event一起传送到从机中的Relaylog中。
通过上述描述可以知道,我们解析一个Relaylog中的event时,可以通过其中的保存的偏移量知道它在原来的Binarylog中某一个binlog文件中的偏移位置,但是无法知道其是在哪个binlog文件中,因此,还需要在relaylog的文件中,找到与该event相关的RotateEvent,才能唯一确定Relaylog中的一个event在Binarylog中的位置。
在本文中,附图中的任何元素数量均用于示例而非限制,以及任何命名都仅用于区分,而不具有任何限制含义。
下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。
发明概述
本发明人发现,在保持数据一致性的时候,可以采用如下方式:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,在该方案中,无MySQL版本的限制,也没有磁盘的限制,同时也不需要在主机中保存密钥或密码,而且在主机宕机的情况下切换速度快,因此,解决了现有技术中存在的适用版本有局限、效率较低及安全性较差的缺陷。
在介绍了本发明的基本原理之后,下面具体介绍本发明的各种非限制性实施方式。
应用场景总览
本发明实施例中,安装MysQL的服务器可以为“DeveloperMachine(开发测试类服务器,MysQL占用很少资源)”、“ServerMachine(服务器类型,MysQL占用较多资源)”、“DedicatedMySQLServerMachine(专门的数据库服务器,MysQL占用所有可用资源)”中的任意一种,MySQL数据库的大致用途可以为如下几种:“MultifunctionalDatabase(通用多功能型)”、TransactionalDatabaseOnly(服务器类型,专注于事务处理)”、“Non-TransactionalDatabaseOnly(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional)”。
本领域技术人员可以理解,上面所说的可以安装MySQL的服务器和MySQL数据库仅是本发明的实施方式可以在其中得以实现的一个示例。本发明实施方式的适用范围不受任何限制。
示例性方法
下面结合上述应用场景,参考图1B来描述根据本发明示例性实施方式的用于保持数据一致性的方法。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
图1B示意性地示出了根据本发明实施方式的用于保持数据一致性的方法10的流程示意图。如图1B所示,该方法可以包括步骤100、110以及120。
该方法始于步骤100,其中确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机。
本发明实施例中,步骤100中的目标从机是事先定好,开始时,目标从机作为初始主机的备机,初始主机主要对外提供服务,目标从机不对外提供服务,主机有数据变化时,将数据变化同步给该目标从机,当初始主机宕机时迅速切换到目标从机,而与初始主机相关联的从机中除目标从机之外的其他从机为了减轻初始主机的负担,只分流一部分“读”业务请求,而不负担写请求,只有初始主机负担写请求,后续再将写请求引起的数据变化同步给与初始主机相关联的从机即可,从而实现初始主机、与初始主机相关联的从机的数据同步。故与初始主机相关联的从机除目标从机之外的其他从机和目标从机的作用有差别。
例如,从机1作为目标从机,在初始主机未发生宕机之前,初始主机主要对外提供服务,从机1不对外提供服务,只有当初始主机宕机时迅速切换到从机1,从机2、从机3和从机4只为了减轻初始主机的负担,分流一部分“读”业务请求,而不负担写请求,只有初始主机负担写请求,后续再将写请求引起的数据变化同步给从机1、从机2、从机3和从机4即可,从而实现初始主机、从机1、从机2、从机3和从机4的数据同步。可见从机1的作用和从机2、从机3、从机4的作用是不完全相同的,如图1C所示。
在该方案中,因为目标从机是事先备好的,不对外提供服务,专门作为初始主机的备选,所以可以快速切换保持服务继续,因此,可以提高数据库恢复服务的效率。
在执行完步骤100之后,还可以执行步骤110,其中将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机。
在执行完步骤110之后,还可以执行步骤120,其中针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
需要说明的是,针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致这一技术中,每一个从机都要将已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
例如,剩余从机为10个:从机1、从机2、从机3、……、从机10,将从机1中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致;将从机2中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致;将从机3中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,以此类推。
本发明实施例中,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致时,可以采用如下方式:
确定该从机当前复制到所述初始主机中发生过变化的数据的第一位置;
确定所述新的主机当前复制到所述初始主机中发生过变化的数据的第二位置;
判断所述第一位置是否大于所述第二位置,若是,将所述第一位置和所述第二位置之间的所述发生过变化的数据回滚掉;否则,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
本发明实施例中,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中时,可以通过新的主机中的relaylog去将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
本发明实施例中,回滚掉的这一部分数据并没有返回给用户,所以,回滚以后用户并不会感知到。
前面描述的是,当初始主机宕机后,将从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致的过程,在实际应用中,在从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致之后,新的主机中的数据可能还会发生变化,此时,仍然要保持新的主机中的数据和剩余从机中的每一个从机中的数据保持一致,因此,在执行完步骤120之后,若所述新的主机中的数据发生变化,所述方法还包括如下操作:
针对所述剩余从机中的任意一从机,分别执行:
将所述任意一从机按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中;
按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
例如,新的主机中依次生成5个binlog文件:binlog文件1、binlog文件2、binlog文件3、binlog文件4、binlog文件5,binlog文件1中依次生成event1、event2、event3;binlog文件2中依次生成event4、event5、event6;binlog文件3中依次生成event7、event8、event9;binlog文件4中依次生成event10、event11、event12;binlog文件5中依次生成event13、event14、event15,新的主机将event1、event2、event3、……、event13、event14、event15依次写入relaylog文件,从机依次执行上述event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
针对前面描述的过程,剩余从机中的每一个从机都要执行上述过程,例如剩余从机为10个:从机1、从机2、从机3、……、从机10,针对从机1,将从机1按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机1中的数据的一致性;针对从机2,将从机2按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机2中的数据的一致性;针对从机3,将从机3按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机3中的数据的一致性;……、针对从机10,将从机10按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机10中的数据的一致性。
在将新的主机中的event复制至从机中时,由于新的主机中的binlog的大小与relaylog的大小不同,因此,本发明实施例中,还包括如下操作:
若将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小达到阈值时,建立下一个relaylog文件,并将所述任意一binlog文件的文件名写入所述下一个relaylog文件的头部。
本发明实施例中,还可能包括如下操作:
若将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小未达到阈值,且当前从所述任一binlog文件中读取的event为Rotateevent时,建立下一个relaylog文件,并将所述任意一binlog文件的相邻的下一个binlog文件的文件名写入所述下一个relaylog文件的头部。
本发明实施例中,为了提高复制的效率,所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名,如图1D所示,这样,可以直接从Rotateevent读取下一个binlog文件名的文件名,从而写入到下一个新建的relaylog文件头部。
本发明实施例中,为了避免了搜索整个Relaylog文件来查找RotateEvent,在Relaylog中的单个文件relaylog文件的头部,加上这个Rotateevent,从而避免了搜索整个Relaylog文件以查找这个Rotateevent,这样,就可以快速地确定Relaylog中的一个event,与Binarylog中的哪个event对应,提高了复制效率。
由于采用了上述方法,在每个relaylog文件增加了一个Rotateevent,并且这个Rotateevent位于一个确定的位置,文件头部的位置,不需要搜索Relaylog就能够找到这个Rotateevent,从而能够快速的确定其他event在Binarylog中的文件名和位置,因此,提高了复制效率。
本发明实施例中,提出一种保持数据一致性的方法和装置:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,在该方案中,无MySQL版本的限制,也没有磁盘的限制,同时也不需要在主机中保存密钥或密码,而且在主机宕机的情况下切换速度快,因此,解决了现有技术中存在的适用MySQL版本有局限、效率较低及安全性较差的缺陷。
同时,由于所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名,和/或relaylog文件的头部添加有binlog的文件名,因此,进一步提高了复制效率。
示例性设备
在介绍了本发明示例性实施方式的方法之后,接下来,参考图2对本发明示例性实施方式的、用于保持数据一致性的装置进行说明。
图2示意性地示出了根据本发明实施方式的用于保持数据一致性的装置20的示意图。如图2所示,该装置20可以包括:
选择单元200,用于确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;
确定单元210,用于将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;
数据一致性保持单元220,用于针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
本发明实施例中,选择单元200选择的目标从机是事先定好,开始时,目标从机作为初始主机的备机,初始主机主要对外提供服务,目标从机不对外提供服务,主机有数据变化时,将数据变化同步给该目标从机,当初始主机宕机时迅速切换到目标从机,而与初始主机相关联的从机中除目标从机之外的其他从机为了减轻初始主机的负担,只分流一部分“读”业务请求,而不负担写请求,只有初始主机负担写请求,后续再将写请求引起的数据变化同步给与初始主机相关联的从机即可,从而实现初始主机、与初始主机相关联的从机的数据同步。故与初始主机相关联的从机除目标从机之外的其他从机和目标从机的作用有差别。
例如,从机1作为目标从机,在初始主机未发生宕机之前,初始主机主要对外提供服务,从机1不对外提供服务,只有当初始主机宕机时迅速切换到从机1,从机2、从机3和从机4只为了减轻初始主机的负担,分流一部分“读”业务请求,而不负担写请求,只有初始主机负担写请求,后续再将写请求引起的数据变化同步给从机1、从机2、从机3和从机4即可,从而实现初始主机、从机1、从机2、从机3和从机4的数据同步。可见从机1的作用和从机2、从机3、从机4的作用是不完全相同的,如图1C所示。
在该方案中,因为选择单元200选择的目标从机是事先备好的,不对外提供服务,专门作为初始主机的备选,所以可以快速切换保持服务继续,因此,可以提高数据库恢复服务的效率。
需要说明的是,数据一致性保持单元220针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致这一技术中,每一个从机都要将已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
例如,剩余从机为10个:从机1、从机2、从机3、……、从机10,数据一致性保持单元220将从机1中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致;数据一致性保持单元220将从机2中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致;数据一致性保持单元220将从机3中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,以此类推。
本发明实施例中,可选地,所述数据一致性保持单元220包括位置确定单元220A、判断单元220B、回滚单元220C和复制单元220D,其中:
所述位置确定单元220A,用于确定该从机当前复制到所述初始主机中发生过变化的数据的第一位置;
所述位置确定单元220A还用于,确定所述新的主机当前复制到所述初始主机中发生过变化的数据的第二位置;
所述判断单元220B,用于判断所述第一位置是否大于所述第二位置;
所述回滚单元220C,用于在所述判断单元220B判定所述第一位置大于所述第二位置时,将所述第一位置和所述第二位置之间的所述发生过变化的数据回滚掉;
所述复制单元220D,用于在所述判断单元220B判定所述第一位置小于或者等于所述第二位置时,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
本发明实施例中,复制单元220D将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中时,可以通过新的主机中的relaylog去将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
本发明实施例中,回滚单元220C回滚掉的这一部分数据并没有返回给用户,所以,回滚以后用户并不会感知到。
前面描述的是,当初始主机宕机后,将从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致的过程,在实际应用中,在从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致之后,新的主机中的数据可能还会发生变化,此时,仍然要保持新的主机中的数据和剩余从机中的每一个从机中的数据保持一致,因此,本发明实施例中,若所述新的主机中的数据发生变化,所述复制单元220D还用于,针对所述剩余从机中的任意一从机,分别执行:将所述任意一从机按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
例如,新的主机中依次生成5个binlog文件:binlog文件1、binlog文件2、binlog文件3、binlog文件4、binlog文件5,binlog文件1中依次生成event1、event2、event3;binlog文件2中依次生成event4、event5、event6;binlog文件3中依次生成event7、event8、event9;binlog文件4中依次生成event10、event11、event12;binlog文件5中依次生成event13、event14、event15,复制单元220D将新的主机中的event1、event2、event3、……、event13、event14、event15依次写入relaylog文件,从机依次执行上述event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
针对前面描述的过程,剩余从机中的每一个从机都要执行上述过程,例如剩余从机为10个:从机1、从机2、从机3、……、从机10,针对从机1,复制单元220D将从机1按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机1中的数据的一致性;针对从机2,复制单元220D将从机2按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机2中的数据的一致性;针对从机3,复制单元220D将从机3按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机3中的数据的一致性;……、针对从机10,复制单元220D将从机10按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和从机10中的数据的一致性。
在将新的主机中的event复制至从机中时,由于新的主机中的binlog的大小与relaylog的大小不同,因此,本发明实施例中,所述装置还包括relaylog文件建立单元230,用于将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小达到阈值时,建立下一个relaylog文件,并将所述任意一binlog文件的文件名写入所述下一个relaylog文件的头部。
本发明实施例中,所述装置还包括relaylog文件建立单元230,用于将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小未达到阈值,且当前从所述任一binlog文件中读取的event为Rotateevent时,建立下一个relaylog文件,并将所述任意一binlog文件的相邻的下一个binlog文件的文件名写入所述下一个relaylog文件的头部。
本发明实施例中,为了提高复制的效率,所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名,如图1D所示,这样,可以直接从Rotateevent读取下一个binlog文件名的文件名,从而写入到下一个新建的relaylog文件头部。
本发明实施例中,为了避免了搜索整个Relaylog文件来查找RotateEvent,在Relaylog中的单个文件relaylog文件的头部,加上这个Rotateevent,从而避免了搜索整个Relaylog文件以查找这个Rotateevent,这样,就可以快速地确定Relaylog中的一个event,与Binarylog中的哪个event对应,提高了复制效率。
由于采用了上述方法,在每个relaylog文件增加了一个Rotateevent,并且这个Rotateevent位于一个确定的位置,文件头部的位置,不需要搜索Relaylog就能够找到这个Rotateevent,从而能够快速的确定其他event在Binarylog中的文件名和位置,因此,提高了复制效率。
本发明实施例中,提出一种保持数据一致性的方法和装置:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,在该方案中,无MySQL版本的限制,也没有磁盘的限制,同时也不需要在主机中保存密钥或密码,而且在主机宕机的情况下切换速度快,因此,解决了现有技术中存在的适用MySQL版本有局限、效率较低及安全性较差的缺陷。
同时,由于所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名,和/或relaylog文件的头部添加有binlog的文件名,因此,进一步提高了复制效率。
示例性设备
在介绍了本发明示例性实施方式的方法和装置之后,接下来,介绍根据本发明的另一示例性实施方式的用于保持数据一致性的装置。
所属技术领域的技术人员能够理解,本发明的各个方面可以实现为***、方法或程序产品。因此,本发明的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
在一些可能的实施方式中,根据本发明的用于保持数据一致性的装置可以至少包括至少一个处理单元、以及至少一个存储单元。其中,所述存储单元存储有程序代码,当所述程序代码被所述处理单元执行时,使得所述处理单元执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于保持数据一致性方法中的步骤。例如,所述处理单元可以执行如图1B中所示的步骤100:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;步骤110:将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;步骤120:针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
下面参照图3来描述根据本发明的这种实施方式的用于保持数据一致性的装置10。图3显示的用于保持数据一致性示的装置10仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,用于保持数据一致性的装置10以通用计算设备的形式表现。用于保持数据一致性的装置10的组件可以包括但不限于:上述至少一个处理单元16、上述至少一个存储单元28、连接不同***组件(包括存储单元28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器、***总线、图形加速端口、处理器或者使用多种总线结构中的任意总线结构的局域总线。
存储单元28可以包括易失性存储器形式的可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32,还可以进一步只读存储器(ROM)34。
存储单元28还可以包括具有一组(至少一个)程序模块42的程序/实用工具40,这样的程序模块42包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
用于保持数据一致性的装置10也可以与一个或多个外部设备14(例如键盘、指向设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该用于保持数据一致性的装置10交互的设备通信,和/或与使得该用于保持数据一致性的装置10能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,用于保持数据一致性的装置10还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与用于保持数据一致性的装置10的其它模块通信。应当明白,尽管图中未示出,可以结合用于保持数据一致性的装置10使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
示例性程序产品
在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行本说明书上述“示例性方法”部分中描述的根据本发明各种示例性实施方式的用于保持数据一致性的方法中的步骤,例如,所述终端设备可以执行如图1B中所示的步骤100:确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;步骤110:将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;步骤120:针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
所述程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
如图4所示,描述了根据本发明的实施方式的用于保持数据一致性的程序产品40,其可以采用便携式紧凑盘只读存储器(CD-ROM)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,在本文件中,可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括——但不限于——电磁信号、光信号或上述的任意合适的组合。可读信号介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于——无线、有线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
应当注意,尽管在上文详细描述中提及了用于保持数据一致性的设备的若干装置或子装置,但是这种划分仅仅并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多装置的特征和功能可以在一个装置中具体化。反之,上文描述的一个装置的特征和功能可以进一步划分为由多个装置来具体化。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。

Claims (10)

1.一种保持数据一致性的方法,包括:
确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;
将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;
针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
2.如权利要求1所述的方法,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致,包括:
确定该从机当前复制到所述初始主机中发生过变化的数据的第一位置;
确定所述新的主机当前复制到所述初始主机中发生过变化的数据的第二位置;
判断所述第一位置是否大于所述第二位置,若是,将所述第一位置和所述第二位置之间的所述发生过变化的数据回滚掉;否则,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
3.如权利要求1所述的方法,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致之后,若所述新的主机中的数据发生变化,所述方法还包括:
针对所述剩余从机中的任意一从机,分别执行:
将所述任意一从机按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中;
按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
4.如权利要求3所述的方法,所述方法还包括:
若将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小达到阈值时,建立下一个relaylog文件,并将所述任意一binlog文件的文件名写入所述下一个relaylog文件的头部。
5.如权利要求3所述的方法,所述方法还包括:
若将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小未达到阈值,且当前从所述任一binlog文件中读取的event为Rotateevent时,建立下一个relaylog文件,并将所述任意一binlog文件的相邻的下一个binlog文件的文件名写入所述下一个relaylog文件的头部。
6.如权利要求3-5所述的方法,所述新的主机中的每一个binlog文件的底部包括Rotateevent,所述Rotateevent包括与所述Rotateevent所属的binlog文件相邻的下一个binlog文件的文件名。
7.一种保持数据一致性的装置,包括:
选择单元,用于确定初始主机宕机时,从与所述初始主机相关联的从机中选择出目标从机;
确定单元,用于将所述目标从机作为新的主机、所述与所述初始主机相关联的从机中除所述目标从机之外的其他从机作为剩余从机;
数据一致性保持单元,用于针对所述剩余从机中的每一个从机,将该从机中已经复制的所述初始主机中发生过变化的数据,与所述新的主机中已经复制的所述初始主机中发生过变化的数据保持一致。
8.如权利要求7所述的装置,所述数据一致性保持单元包括位置确定单元、判断单元、回滚单元和复制单元,其中:
所述位置确定单元,用于确定该从机当前复制到所述初始主机中发生过变化的数据的第一位置;
所述位置确定单元还用于,确定所述新的主机当前复制到所述初始主机中发生过变化的数据的第二位置;
所述判断单元,用于判断所述第一位置是否大于所述第二位置;
所述回滚单元,用于在所述判断单元判定所述第一位置大于所述第二位置时,将所述第一位置和所述第二位置之间的所述发生过变化的数据回滚掉;
所述复制单元,用于在所述判断单元判定所述第一位置小于或者等于所述第二位置时,将所述第一位置和所述第二位置之间的所述发生过变化的数据复制至该从机中。
9.如权利要求7所述的装置,若所述新的主机中的数据发生变化,所述复制单元还用于,针对所述剩余从机中的任意一从机,分别执行:将所述任意一从机按照所述新的主机中binlog文件生成的顺序,依次将所述新的主机中binlog文件中的事件event复制至relaylog文件中,按照所述event复制的顺序,依次执行所述relaylog文件中的event,从而保持所述新的主机中的数据和所述剩余从机中的数据的一致性。
10.如权利要求9所述的装置,所述装置还包括relaylog文件建立单元,用于将所述新的主机中的任意一binlog文件中的event复制至relaylog文件的过程中,所述relaylog文件的大小达到阈值时,建立下一个relaylog文件,并将所述任意一binlog文件的文件名写入所述下一个relaylog文件的头部。
CN201610080266.0A 2016-02-04 2016-02-04 一种保持数据一致性的方法和装置 Active CN105760456B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610080266.0A CN105760456B (zh) 2016-02-04 2016-02-04 一种保持数据一致性的方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610080266.0A CN105760456B (zh) 2016-02-04 2016-02-04 一种保持数据一致性的方法和装置

Publications (2)

Publication Number Publication Date
CN105760456A true CN105760456A (zh) 2016-07-13
CN105760456B CN105760456B (zh) 2019-11-29

Family

ID=56330656

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610080266.0A Active CN105760456B (zh) 2016-02-04 2016-02-04 一种保持数据一致性的方法和装置

Country Status (1)

Country Link
CN (1) CN105760456B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106383861A (zh) * 2016-08-31 2017-02-08 网易(杭州)网络有限公司 一种用于数据库的数据同步方法及装置
CN106407356A (zh) * 2016-09-07 2017-02-15 网易(杭州)网络有限公司 一种数据备份方法及装置
CN108139191A (zh) * 2015-10-15 2018-06-08 松下神视株式会社 位移检测装置和光学检测装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318044A1 (en) * 2010-07-27 2013-11-28 Oracle International Corporation Mysql database heterogeneous log based replication
CN104036043A (zh) * 2014-07-01 2014-09-10 浪潮(北京)电子信息产业有限公司 一种mysql高可用的方法及管理节点
CN104951474A (zh) * 2014-03-31 2015-09-30 阿里巴巴集团控股有限公司 一种用于获取MySQL binlog增量日志的方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130318044A1 (en) * 2010-07-27 2013-11-28 Oracle International Corporation Mysql database heterogeneous log based replication
CN104951474A (zh) * 2014-03-31 2015-09-30 阿里巴巴集团控股有限公司 一种用于获取MySQL binlog增量日志的方法和装置
CN104036043A (zh) * 2014-07-01 2014-09-10 浪潮(北京)电子信息产业有限公司 一种mysql高可用的方法及管理节点

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108139191A (zh) * 2015-10-15 2018-06-08 松下神视株式会社 位移检测装置和光学检测装置
CN108139191B (zh) * 2015-10-15 2020-06-30 松下神视株式会社 位移检测装置和光学检测装置
CN106383861A (zh) * 2016-08-31 2017-02-08 网易(杭州)网络有限公司 一种用于数据库的数据同步方法及装置
CN106407356A (zh) * 2016-09-07 2017-02-15 网易(杭州)网络有限公司 一种数据备份方法及装置

Also Published As

Publication number Publication date
CN105760456B (zh) 2019-11-29

Similar Documents

Publication Publication Date Title
EP2494456B1 (en) Backup using metadata virtual hard drive and differential virtual hard drive
US9996421B2 (en) Data storage method, data storage apparatus, and storage device
US8438136B2 (en) Backup catalog recovery from replicated data
JP4741371B2 (ja) システム、サーバ装置及びスナップショットの形式変換方法
US8255653B2 (en) System and method for adding a storage device to a cluster as a shared resource
CN106951345B (zh) 一种虚拟机磁盘数据的一致性测试方法及装置
US11321291B2 (en) Persistent version control for data transfer between heterogeneous data stores
US20150213100A1 (en) Data synchronization method and system
US10353872B2 (en) Method and apparatus for conversion of virtual machine formats utilizing deduplication metadata
CN102483711B (zh) 对复制顺序访问存储组件进行同步
WO2015010327A1 (zh) 数据发送方法、数据接收方法和存储设备
CN102323930B (zh) 对数据库***中的数据变更进行镜像
CN111984465A (zh) 数据库远程备份方法、装置、介质和电子设备
US10223205B2 (en) Disaster recovery data sync
CN104965835B (zh) 一种分布式文件***的文件读写方法及装置
CN103092718A (zh) 测试数据备份***及方法
CN105760456A (zh) 一种保持数据一致性的方法和装置
CN110121694A (zh) 一种日志管理方法、服务器和数据库***
JP6967010B2 (ja) 異種ストレージシステム間の複製
US7376676B2 (en) Method, system, and program for autonomic copy services solutions
US20180316756A1 (en) Cross-platform replication of logical units
US20120005162A1 (en) Managing Copies of Data Structures in File Systems
CN105159790A (zh) 一种数据抢救方法及文件服务器
US10795601B2 (en) Method and device for storage system
US8214613B2 (en) Storage system and copy method

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant