CN113868014A - 一种数据同步方法及装置 - Google Patents
一种数据同步方法及装置 Download PDFInfo
- Publication number
- CN113868014A CN113868014A CN202010617593.1A CN202010617593A CN113868014A CN 113868014 A CN113868014 A CN 113868014A CN 202010617593 A CN202010617593 A CN 202010617593A CN 113868014 A CN113868014 A CN 113868014A
- Authority
- CN
- China
- Prior art keywords
- data
- queue
- completion queue
- wakes
- completion
- 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
- 238000000034 method Methods 0.000 title claims abstract description 906
- 230000008569 process Effects 0.000 claims abstract description 816
- 230000002618 waking effect Effects 0.000 claims description 19
- 238000003860 storage Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 23
- 238000012545 processing Methods 0.000 description 14
- 238000004891 communication Methods 0.000 description 12
- 230000001360 synchronised effect Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000010076 replication Effects 0.000 description 6
- 238000011084 recovery Methods 0.000 description 5
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2097—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1448—Management of the data involved in backup or backup restore
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1446—Point-in-time backing up or restoration of persistent data
- G06F11/1458—Management of the backup or restore process
- G06F11/1464—Management of the backup or restore process for networked environments
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/80—Database-specific techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种数据同步方法,可以应用于数据库相关领域,本申请提供的数据同步方法包括:主机通过数据同步进程将第一进程生成的第一数据发送给备机,所述备机同步所述第一数据;所述数据同步进程基于所述备机完成所述第一数据的同步,唤醒第二进程,进而由所述第二进程唤醒所述第一进程以执行后续操作。本申请中的数据同步进程不需要唤醒已完成数据同步的第一进程,只需要唤醒第二进程,并由第二进程唤醒已完成数据同步的第一进程,使得数据同步进程可以更专注于触发备份机进行数据的同步以及接收备份机的同步进度,从而缓解数据同步进程的压力,减少了数据同步进程唤醒事务进程的时间。
Description
技术领域
本申请涉及计算机数据库领域,尤其涉及一种数据备份方法及装置。
背景技术
为了提高数据库***的可用性,一般会提供备机来同步包括数据操作记录的数据,并基于包括数据操作记录的数据进行与主机相同的数据操作。当主机发生故障时,可以切换为由备机对外提供服务。
其中,主机(master)和备机(standby)的数据同步方法一般分为两种,一种是同步复制,主机事务提交时包括数据操作记录的数据除了在本机同步写入到文件之外,还得同步写入到备机的文件,然后才能认为事务可以提交。另一种是异步复制,事务完成包括数据操作记录的数据的本地文件写入后,不等备机同步完成就直接宣称事务提交完成。
相比较而言,同步复制由于需要同步等待备机同步,导致事务提交时延明显加大,因此性能上明显弱于异步复制。但是异步复制在主机发生故障时,有可能导致已提交的事务在备机上还没有完成同步,当发生故障切换时可能会丢失信息,存在问题。因此对于要求高可靠性和高可用性的场景,一般采用同步复制技术。
具体的,主机的数据同步进程可以触发备机进行数据的同步,且在备机进行数据的同步时,主机相关的事务进程处于睡眠状态,当备机完成同步后,主机的数据同步进程需要依次唤醒对应的事务进程,在完成事务进程的唤醒之后,数据同步进程可以继续触发备机进行数据的同步。
然而,在一些场景中,数据同步进程需要唤醒的事务进程较多,此时,数据同步进程需要花费大量的时间进行事务进程唤醒,进而使得由于等待同步机进行数据同步而进入睡眠状态的事务进程较多,增加了事务进程进行事务处理的时延。
发明内容
第一方面,本申请实施例提供了一种数据同步方法,所述方法包括:
数据同步进程将第一数据发送给备机,所述第一数据为第一进程生成的;其中,第一进程可以为运行在主机上的事务进程,主机在接收用户所发出的操作指令进行读写等操作的事务时,可以生成对应的事务进程,该事务进程包括与用户发出的操作指令对应的操作,事务进程可以对数据库中的存储设备进行相应的操作,其中,操作可以包括增加数据、删除数据、修改数据以及查询数据等等。第一数据可以但不限于是处理故障恢复的事务日志(database transaction log for dealing with crash recovery,XLOG)。基于该数据,备机可以获取到主机的事务进程进行的操作,进行执行相同的操作,从而在备份机上实现了主机的数据同步。所述数据同步进程基于所述备机完成所述第一数据的同步,唤醒第二进程;数据同步进程在接收到备机发送同步进度之后,可以唤醒第二进程,由第二进程唤醒所述第一进程,既由第二进程唤醒事务进程。具体的,数据同步进程可以遍历等待队列,根据完成进度从等待队列中分离出已完成的事务进程(包括第一进程),并生成完成队列(包括第一进程)。此完成队列可以是临时生成的,在这个完成队列中的所有事务进程被唤醒后,此完成队列可以不再存在。数据同步进程可以唤醒第二进程,由第二进程可以唤醒完成队列中的第一进程,既由第二进程唤醒事务进程。需要说明的是,数据同步进程可以先生成包括第一进程的完成队列,然后唤醒第二进程;或者先唤醒第二进程,然后再生成包括第一进程的完成队列,这里并不限定完成队列生成和第二进程唤醒的先后顺序。上述的队列(完成队列和等待队列)只是一种实现方式,本申请实施例中还可以通过其他具有相同或相似的数据结构来代替队列。
本实施例中,第二进程可以不为事务进程,而是单独用于唤醒事务进程的进程,具体的,可以在数据库服务启动的时候启动第二进程,第二进程在没有事务进程需要唤醒时处于睡眠状态,第二进程在被数据同步进程唤醒后,可以唤醒事务进程,在完成事务进程的唤醒后,可以进入睡眠状态。
本申请实施例中,数据同步进程不需要唤醒数据同步已被完成的事务进程,只需要唤醒一个专门用于唤醒已完成数据同步的进程,使得数据同步进程可以更专注于触发备份机进行数据的同步以及接收备份机的同步进度,从而缓解数据同步进程的压力,减少了数据同步进程唤醒事务进程的时间。
在一种可选的实现中,所述方法还包括:所述数据同步进程将第一数据发送给备机之前,所述数据同步进程接收所述第一进程对应的数据同步请求。
在一种可选的实现中,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录。
在一种可选的实现中,所述方法还包括:所述数据同步进程将第二数据发送给所述备机,所述第二数据为所述第二进程生成的;所述数据同步进程基于所述备机完成所述第一数据和所述第二数据的同步,唤醒所述第二进程。
在一种可选的实现中,所述第二进程被配置对数据库进行第二操作,所述第二数据包括所述第二操作对应的操作记录。
在一种可选的实现中,所述主机包括完成队列,所述第二进程的标识位于所述完成队列的第一元素中;所述唤醒所述第二进程,包括:
唤醒所述第一元素中包括的标识所对应的进程。
在一种可选的实现中,在唤醒所述第二进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第二进程的标识生成完成队列,其中,所述第二进程的标识位于所述完成队列的第一元素中。
在一种可选的实现中,所述第一元素为所述完成队列的头部元素。
在一种可选的实现中,所述第一进程的标识位于所述完成队列的第二元素中,且在所述完成队列中,所述第二元素位于所述第一元素之后;所述第二进程唤醒所述第二元素包括的标识所对应的进程。
在一种可选的实现中,所述第二进程可以唤醒所述完成队列中位于所述第一元素之后的多个元素包括的标识所对应的进程。
本申请实施例中,第二进程可以代替数据同步进程来唤醒完成队列中的其它进程。具体的,第二进程需要检测完成队列的后续元素中是否含有其他事务进程,如果有,则需要负责唤醒完成队列中的剩余事务进程。
在一种可选的实现中,所述第二元素与所述第一元素相邻;所述第二进程可以唤醒在所述完成队列中与所述第一元素相邻且位于所述第一元素之后的元素包括的进程。
在一种可选的实现中,所述主机包括等待队列,在所述备机完成所述同步之前,所述第二进程的标识位于所述等待队列中的第三元素,所述第一进程的标识位于所述等待队列中的第四元素,所述第四元素在所述第三元素之后;其中,所述完成队列为根据所述等待队列生成的。
本实施例中,生成的完成队列保持了原有的等待队列中进程的先后顺序,保证了事务处理的先入先出。
在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。
在一种可选的实现中,所述第三元素和所述第四元素在所述等待队列中的相对位置,和所述第一元素和所述第二元素在所述完成队列中的相对位置相同。即,第二进程所在的元素和第一进程所在的元素之间的间隔和前后顺序不变。
在一种可选的实现中,所述第二进程的标识位于所述等待队列的头部元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素。
本实施例中,第二进程的标识位于完成队列中除头部元素之外的元素,则数据同步进程可以唤醒头部元素包括的进程,以及依次相邻的元素包括的标识所对应的进程,直到唤醒第二进程。
在一种可选的实现中,所述主机包括完成队列,所述第一进程的标识位于所述完成队列的第一元素中,所述第二进程位于所述完成队列外;所述第二进程唤醒所述第一进程,包括:所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
本实施例中,第二进程可以不为事务进程,而是单独用于唤醒事务进程的进程。第一进程为等待队列(等待队列)中的任意一个元素包括的标识所对应的进程。本申请实施例中,所述完成队列为至少根据所述第一进程生成的,所述第一进程的标识位于所述完成队列的第一元素中;所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
在一种可选的实现中,所述方法还包括:
在所述第二进程唤醒所述第一进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第一进程的标识生成完成队列,其中,所述第一进程的标识位于所述完成队列的第一元素中。
在一种可选的实现中,所述主机包括等待队列,在所述备机完成所述同步之前,所述第一进程的标识位于所述等待队列中的第四元素;其中,所述完成队列为根据所述等待队列生成的。
在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程属于同一个NUMA节点包括的进程。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述完成队列属于同一个NUMA节点。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述等待队列属于同一个NUMA节点;和/或,所述完成队列和所述等待队列属于同一个NUMA节点。
可选的,本申请实施例中,所述完成队列和所述等待队列属于同一个NUMA节点。其中,与第二进程和第一进程相关的数据,占用同样的NUMA节点下的内存资源。其中,完成队列以及等待队列相关的数据,占用同样的NUMA节点下的内存资源。
本申请实施例中,在数据库***初始化时,可以为每个NUMA节点分配对应的等待队列,以及将事务进程(第二进程和第一进程)分配到该节点的等待队列中,同理,从等待队列中分离出来的完成队列(完成队列)也需要位于该节点。基于此,完成队列在遍历和唤醒事务进程时进程和访问的数据位于相同的NUMA节点,避免了代价较高的远端访存,进一步提升了并行唤醒机制的效率。
第二方面,本申请提供了一种数据写入方法,所述方法包括:数据写入进程基于完成对第一数据的写操作,唤醒第二进程,其中,所述第一数据为第一进程生成的;以及,所述第二进程唤醒所述第一进程。
本申请实施例中,数据写入进程在完成对所述第一数据的写操作之后,可以唤醒第二进程,之后由第二进程完成或者结合完成队列中的其余进程完成进程的唤醒。进而可以减少本地数据写入进程花费在事务进程唤醒上的时间,从而可以提高写文件操作的效率。
在一种可选的实现中,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录。
在一种可选的实现中,所述数据写入进程基于完成对第一数据的写操作,唤醒第二进程,包括:
所述数据写入进程基于完成对第一数据和第二数据的写操作,唤醒第二进程;其中,所述第二数据为所述第二进程生成的。
在一种可选的实现中,所述第二进程被配置对数据库进行第二操作,所述第二数据包括所述第二操作对应的操作记录。
在一种可选的实现中,所述主机包括完成队列,所述第二进程的标识位于所述完成队列的第一元素中;所述唤醒所述第二进程,包括:
唤醒所述第一元素中包括的标识所对应的进程。
在一种可选的实现中,所述方法还包括:
在唤醒所述第二进程之前,在所述数据写入进程完成对第一数据的写操作之后,所述数据写入进程至少根据所述第二进程的标识生成完成队列,其中,所述第二进程的标识位于所述完成队列的第一元素中。
在一种可选的实现中,所述第一元素为所述完成队列的头部元素。
在一种可选的实现中,所述第一进程的标识位于所述完成队列的第二元素中,且在所述完成队列中,所述第二元素位于所述第一元素之后;
相应的,所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第二元素包括的标识所对应的进程。
在一种可选的实现中,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒所述完成队列中位于所述第一元素之后的多个元素包括的标识所对应的进程。
在一种可选的实现中,所述第二元素与所述第一元素相邻;相应的,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒在所述完成队列中与所述第一元素相邻且位于所述第一元素之后的元素包括的进程。
在一种可选的实现中,所述主机包括等待队列,在所述数据写入进程完成对第一数据的写操作之前,所述第二进程的标识位于所述等待队列中的第三元素,所述第一进程的标识位于所述等待队列中的第四元素,所述第四元素在所述第三元素之后;其中,所述完成队列为根据所述等待队列生成的。
在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。
在一种可选的实现中,所述第三元素和所述第四元素在所述等待队列中的相对位置,和所述第一元素和所述第二元素在所述完成队列中的相对位置相同。
在一种可选的实现中,所述第二进程的标识位于所述等待队列的头部元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素。
在一种可选的实现中,所述主机包括完成队列,所述第一进程的标识位于所述完成队列的第一元素中,所述第二进程位于所述完成队列外;所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
在一种可选的实现中,所述方法还包括:
在所述第二进程唤醒所述第一进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第一进程的标识生成完成队列,其中,所述第一进程的标识位于所述完成队列的第一元素中。
在一种可选的实现中,所述主机包括等待队列,在所述数据写入进程完成对第一数据的写操作之前,所述第一进程的标识位于所述等待队列中的第四元素;其中,所述完成队列为根据所述等待队列生成的。
在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程属于同一个NUMA节点包括的进程。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述完成队列属于同一个NUMA节点。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述等待队列属于同一个NUMA节点;和/或,所述完成队列和所述等待队列属于同一个NUMA节点。
第三方面,本申请提供了一种数据同步装置,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第一方面以及任一所述的方法。对于处理器执行第一方面的各个可能实现方式中执行的步骤,具体均可以参阅第一方面,此处不再赘述。
第四方面,本申请提供了一种数据写入装置,可以包括处理器,处理器和存储器耦合,存储器存储有程序指令,当存储器存储的程序指令被处理器执行时实现上述第二方面任一所述的方法。对于处理器执行第二方面以及其各个可能实现方式中执行的步骤,具体均可以参阅第二方面,此处不再赘述。
第五方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法。
第六方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第二方面任一所述的方法。
第七方面,本申请提供了一种电路***,所述电路***包括处理电路,所述处理电路配置为执行上述第一方面以及任一所述的方法。
第八方面,本申请提供了一种电路***,所述电路***包括处理电路,所述处理电路配置为执行上述第二方面以及任一所述的方法。
第九方面,本申请提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法。
第十方面,本申请提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第二方面任一所述的方法。
第十一方面,本申请提供了一种芯片***,该芯片***包括处理器,用于支持服务器或门限值获取装置实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据和/或信息。在一种可能的设计中,所述芯片***还包括存储器,所述存储器,用于保存服务器或通信设备必要的程序指令和数据。该芯片***,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1为本申请实施例提供的一种NUMA***的示意性架构示意图;
图2为一种NUMA架构中两个节点的连接示意图;
图3为一种进程处理流程示意;
图4a为一种等待队列结构示意;
图4b为一种等待队列结构示意;
图4c为一种等待队列结构示意;
图5a为一种等待队列和完成队列的结构示意;
图5b为一种等待队列和完成队列的结构示意;
图5c为一种等待队列和完成队列的结构示意;
图6a为一种进程处理流程示意;
图6b为一种进程处理流程示意;
图6c为一种进程处理流程示意;
图6d为一种进程处理流程示意;
图7为一种进程处理流程示意;
图8为一种进程处理流程示意;
图9为一种进程处理流程示意;
图10为一种进程处理流程示意;
图11为一种进程处理流程示意;
图12为一种进程处理流程示意;
图13为一种进程处理流程示意;
图14为一种进程处理流程示意;
图15为一种数据同步装置的结构示意;
图16为一种计算机程序产品的结构示意;
图17为一种主机的结构示意。
具体实施方式
下面结合附图,对本申请的实施例进行描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或模块的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或模块,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或模块。在本申请中出现的对步骤进行的命名或者编号,并不意味着必须按照命名或者编号所指示的时间或逻辑先后顺序执行方法流程中的步骤,已经命名或者编号的流程步骤可以根据要实现的技术目的变更执行次序,只要能达到相同或者相类似的技术效果即可。
本申请实施例中的数据库***可以包括主机以及备机,下面首先介绍一下本申请的应用场景,本申请实施例中的主机和备机可以为基于NUMA的***,其中在NUMA***100的架构中,可以为多插槽***100,参照图1,图1为本申请实施例提供的一种NUMA***100的示意性架构示意图,如图1中示出的那样,NUMA***100包括插槽(socket)101a和插槽101b。插槽101a和插槽101b在本文中可被统称为插槽,可以用于安装中央处理器(centralprocessing unit,CPU)。插槽可以通过互联(interconnect)104彼此通信地耦合。示例性的,每个插槽可经由点对点快速路径互连(quick path interconnect,QPI)链路来连接至其他插槽中的每一个。需要说明的是,QPI是一种互连架构,本申请实施例中各个插槽之间的互联还可以通过其他互连架构实现,诸如其他点对点架构、环架构以及总线架构,这里并不限定。NUMA***100中所描绘插槽的数量仅为一种示例,并且本领域技术人员将理解,可存在不同数量的插槽。例如,NUMA***100可包括诸如,六个、四个或更少数量的插槽,又或者NUMA***100可以包括诸如,十六个、三十二个或更多数量的插槽。
插槽可以包括多个节点(node),每个节点有自己的CPU和内存,节点和节点之间通过互联104进行连接和通信,如图1中示出的那样,插槽101a包括节点102a和节点102b,插槽101b包括节点103a和节点103b,每个节点包括一个内存和六个CPU。需要说明的是,NUMA***100中所描绘的节点和CPU的数量仅为一种示例,并且本领域技术人员将理解,每个插槽可以包括其他数量的节点,每个节点可以包括其他数量的CPU。
本申请实施例中,主机的软件涉及到事务进程、数据同步进程、等待队列等;备机软件主要涉及到数据同步进程。在一种现有的实现中,数据同步的主要流程如下:
1、主机事务进程在准备提交事务时,先完成本机数据提交,然后向主机的数据同步进程发送同步请求,并将自己加入到等待队列。
2、主机数据同步进程响应请求发送数据给备机;
3、备机的数据同步进程接收并写入备机文件***;
4、备机数据同步进程向主机反馈同步进度;
5、主机数据同步进程根据同步进度遍历等待队列,逐个唤醒已经完成同步的事务进程。至此,事务进程就可以完成事务提交操作了。
其中,主机数据同步进程一直在循环执行如下步骤:
1、被事务进程唤醒,读取未同步的数据,通过网络发送给备机;
2、等待备机发送的进度指示;
3、根据当前进度,遍历等待队列,从队列中唤醒已经完成的事务进程。
然而随着中央处理器(central processing unit,CPU)核数和非统一内存访问(non-uniform memory access,NUMA)节点数目的不断增多,单机能力越来越强,逐步暴露出一些不足之处:事务进程的唤醒时间较长,影响了主机数据同步进程的效率。
这些不足的产生原因包括:
1、进程唤醒操作是放在主机的数据同步进程中执行的。随着单机多核能力的提升,支持的事务进程并发度也是急剧提升,所以同一时间内等待队列中的进程数也是大幅增加,用于等待队列遍历并唤醒操作的时间也明显变长。这就导致主机数据同步进程处理的周期变长。
2、受上述第一点的影响,事务进程的唤醒也会比较低效。即使备机数据同步已经完成,但是在队列尾部的事务进程需要等待较长的时间才能被唤醒。
3、对于多NUMA节点的服务器,此等待队列的访问涉及到跨NUMA节点的大量内存访问,相比单节点服务器来说,访问代价将会进一步扩大。
为了解决上述问题,本申请提供了一种数据备份方法,参照图2,图2为本申请实施例提供的一种数据备份方法的流程示意图,本申请实施例提供了一种数据同步方法,如图2示出的那样,本申请提供的数据同步方法,具体包括:
201、数据同步进程将第一数据发送给备机,所述第一数据为第一进程生成的。
本申请实施例中,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录,在一种实现中,第一进程为事务进程,第一数据可以但不限于是处理故障恢复的事务日志(database transaction log for dealing with crashrecovery,XLOG)。基于该数据,备机可以获取到主机的事务进程进行的操作,进行执行相同的操作,从而在备份机上实现了主机的数据同步。
本申请实施例中,所述第二进程可以被配置为进行对数据库的第二操作,并生成包括所述第二操作对应的操作记录的第二日志,第二进程和第一进程可以为主机中的事务进程,其中,主机可以存在一个或多个事务进程,主机在接收用户所发出的操作指令进行读写等操作的事务时,可以生成对应的事务进程,该事务进程包括与用户发出的操作指令对应的操作,事务进程可以对数据库中的存储设备进行相应的操作,其中,操作可以包括增加数据、删除数据、修改数据以及查询数据等等,本申请并不限定。事务进程在完成相应的操作之后,可以生成包括该操作对应的操作记录的数据,通过该数据,备机可以进行与主机相同的对存储设备的操作。在一种实现中,日志可以但不限于是处理故障恢复的事务日志(database transaction log for dealing with crash recovery,XLOG)。基于该日志,备机可以获取到主机的事务进程进行的操作,进行执行相同的操作,从而在备份机上实现了主机的备份。
可选的,本申请实施例中,第一进程和第二进程可以为事务进程,其中,第二进程被配置为进行对数据库(数据库***中的存储设备或者内存等)的第二操作,并生成包括所述第二操作对应的操作记录的第二数据,其中,所述第二进程被配置对数据库进行第二操作,所述第二数据包括所述第二操作对应的操作记录。所述第一进程被配置为进行对数据库的第一操作,并生成包括所述第一操作对应的操作记录的第一数据。其中,第二进程和第一进程可以为主机上不同的事务进程,分别响应于不同的用户操作指令生成。
事务进程在生成数据之后,可以将数据存入缓存,并由数据写入进程将数据由缓存写入到对应的文件中。其中,数据写入进程可以为某一个竞争到锁的事务进程,或者是单独的专门用于进行数据写入的进程,这里并不限定。
本申请实施例中,第二进程在生成包括所述第二操作对应的操作记录的第二数据之后,可以由数据写入进程将第二数据写入到对应的文件中;第一进程被生成包括所述第一操作对应的操作记录的第一数据之后,可以由数据写入进程将第一数据写入到对应的文件中。其中,数据写入进程可以为第二进程、第一进程或者是其他事务进程,或者是其他专门用于进行数据写入的进程。
事务进程在生成数据之后,可以加入到特定的等待队列;其中,事务进程可以基于数据所在的数据队列号LSN(LOG sequence number)在等待队列中进行排序,并依次加入到对应的队列元素中。示例性的,参照图3,假设有4个事务进程加入等待队列,代号分别为T1~T4,数据T1~T4的数据位置LSN按顺序标识为10~40,如图3中示出的那样,事务进程T1~T4在加入到等待队列时,可以按照LSN进行排序,依次加入到等待队列中。
本申请实施例中,第二进程和第一进程在生成数据之后,可以将第二进程和第一进程的标识加入到等待队列中;具体的,第二进程在生成第二数据之后,可以将第二进程对应的标识加入到等待队列中;第一进程在生成第一数据之后,可以将第一进程对应的标识加入到等待队列中。需要说明的是,第一进程的标识可以唯一指示第一进程,第二进程的标识可以唯一指示第二进程,上述标识可以为进程的指针或者是其他字符串,本申请并不限定。
其中,所述第二进程的标识位于所述等待队列中的第三元素,所述第一进程的标识位于所述等待队列中的第四元素,所述第四元素在所述第三元素之后。其中,等待队列可以包括串接的多个元素,头部元素的next指针指向相邻的元素,以此类推,各个元素的next指针都指向队列中相邻的元素,直到尾部元素,在一种实现中,尾部元素的next指针可以指向空NULL,若等待队列是双向环回队列,用于更便利地支持其他的一些操作,比如需要临时取消某个事务进程时,因此尾部元素也可以指向其它队列元素。本申请实施例中,所述第四元素在所述第三元素之后,即在等待队列中存在一个next指针通路,可以由所述第三元素指向所述第四元素。
其中,在一种可选的实现中,等待队列可以包括多个元素,其中每个元素可以包括一个进程的标识,所述第二进程的标识位于所述等待队列中除头部元素之外的元素,所述第四元素与所述第三元素相邻,即第三元素的next指针指向第四元素。参照图4a,第二进程的标识位于等待队列除头部元素之外的元素(第三元素),第一进程的标识位于与第三元素相邻的元素(第四元素)中,其中,第一进程的标识也可以位于等待队列的尾部元素。
其中,在一种可选的实现中,等待队列可以包括多个元素,其中每个元素可以包括一个进程的标识,所述第二进程的标识位于所述等待队列的头部元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素。需要说明的是,这里的头部元素是指队列中的头部head。示例性的,参照图4b,第二进程的标识位于等待队列的头部元素,第一进程的标识位于等待队列中除头部元素之外的元素,其中,第二进程的标识所在的元素和第一进程的标识所在的元素之间可以存在其他元素,第一进程的标识也可以位于等待队列的尾部元素。
其中,在一种可选的实现中,参照图4c,等待队列可以包括多个元素,其中每个元素可以包括一个进程的标识,所述第二进程的标识位于所述等待队列中除头部元素之外的元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素,且所述第四元素与所述第三元素不相邻,即所述第四元素与所述第三元素之间还存在包括其他进程的元素。
本申请实施例中,事务进程在生成数据之后,除了进入等待队列之外,还可以向主机的数据同步进程发送数据同步请求,来指示数据同步进程触发备机进行数据同步,具体的,数据同步进程在接收到同步请求之后,若处于空闲状态,则可以将当前需要进行同步的数据发送到备机,备机的数据同步进程可以接收数据并写入到相应的备机文件***。并在完成数据写入(即完成数据的同步)之后,备机的数据同步进程可以向主机反馈同步进度,来指示完成了哪些数据的同步。
本申请实施例中,数据同步进程可以为上述数据同步进程,数据同步进程在接收到数据同步请求之后,若处于空闲状态,则可以将当前需要进行同步的数据(第一数据和第二数据)发送到备机,备机的数据同步进程可以接收第一数据和第二数据并写入到相应的备机文件***。并在完成第一数据和第二数据的写入(即完成第一数据和第二数据的同步)之后,备机的数据同步进程可以向主机的数据同步进程反馈同步进度,来指示完成了第一数据和第二数据的同步。
202、所述数据同步进程基于所述备机完成所述第一数据的同步,唤醒第二进程。
数据同步进程在接收到备机发送同步进度之后,可以唤醒第二进程。具体的,数据同步进程可以遍历等待队列,根据完成进度从等待队列中分离出已完成的事务进程,并生成完成队列。此完成队列可以是临时生成的,在这个完成队列中的所有事务进程被唤醒后,此完成队列可以不再存在。需要说明的是,如果数据同步的进程足够快,同一个等待队列可能会先后分离出多个完成队列并存。
本申请实施例中,所述数据同步进程触发备机进行所述第二数据和所述第一数据的同步;并基于所述备机完成所述第二数据和所述第一数据的同步,至少根据所述第二进程生成完成队列,其中,所述第二进程的标识位于所述完成队列的第一元素中,则数据同步进程可以唤醒所述第一元素中包括的标识所对应的进程。
接下来描述,数据同步进程如何至少根据所述第二进程生成完成队列:
本申请实施例中,所述完成队列为至少基于所述第二进程和所述第一进程生成的,所述第一进程的标识位于所述完成队列的第二元素中,且在完成队列中,所述第二元素位于所述第一元素之后。
本申请实施例中,完成队列可以是数据同步进程基于等待队列生成的。在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。其中,若等待队列中仅有一部分进程对应的日志在备机上完成了备份,则可以将上述一部分进程中,在等待队列中位于最末端的进程所在的元素的next指针由原本的指向相邻的进程,变为指向空NULL。此时,上述一部分进程中,在等待队列中位于最末端的进程所在的元素则成为了尾部元素。
本申请实施例中,所述第三元素和所述第四元素在所述等待队列中的相对位置,和所述第一元素和所述第二元素在所述完成队列中的相对位置相同。即,第二进程所在的元素和第一进程所在的元素之间的间隔和前后顺序不变。
参照图5a,第二进程的标识位于等待队列除头部元素之外的元素(第三元素),第一进程的标识位于与第三元素相邻的元素(第四元素)中,其中,第一进程也可以位于等待队列的尾部元素,即第一进程所在的元素的next指针指向空NULL。相应的,完成队列为等待队列的一部分,在等待队列中,第三元素和第四元素相邻,且第四元素位于第三元素之后,相应的,在完成队列中,第三元素和第四元素相邻,且第四元素位于第三元素之后。
参照图5b,第二进程的标识位于等待队列的头部元素,第一进程的标识位于等待队列中除头部元素之外的元素,其中,第二进程所在的元素和第一进程所在的元素之间可以存在其他元素,第一进程也可以位于等待队列的尾部元素,即第一进程所在的元素的next指针指向空NULL。相应的,完成队列为等待队列的一部分,在等待队列中,第三元素为头部元素,第三元素和第四元素之间间隔了N个元素,且第四元素位于第三元素之后,相应的,在完成队列中,第三元素为头部元素,第三元素和第四元素之间间隔了N个元素,且第四元素位于第三元素之后。
参照图5c,所述第二进程的标识位于所述等待队列中除头部元素之外的元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素,且所述第四元素与所述第三元素不相邻,即所述第四元素与所述第三元素之间还存在包括其他进程的元素。相应的,完成队列为等待队列的一部分,在等待队列中,第三元素和第四元素之间间隔了N个元素,且第四元素位于第三元素之后,相应的,在完成队列中,第三元素和第四元素之间间隔了N个元素,且第四元素位于第三元素之后。
本申请实施例中,数据同步进程可以唤醒完成队列中的所述第二进程,即数据同步进程可以唤醒完成队列中的第一元素包括的标识所对应的进程,该第一元素包括所述第二进程的标识。
在一种可选的实现中,第二进程的标识位于完成队列的头部元素,则数据同步进程可以唤醒完成队列的头部元素包括的标识所对应的进程。
在一种可选的实现中,第二进程的标识位于完成队列中除头部元素之外的元素,则数据同步进程可以唤醒头部元素包括的进程,以及依次相邻的元素包括的标识所对应的进程,直到唤醒第二进程。
203、所述第二进程唤醒所述第一进程。
本申请实施例中,第二进程在被唤醒之后,可以唤醒第一进程。
在一种可选的实现中,所述第二进程唤醒所述完成队列中位于所述第一元素之后的一个或多个元素包括的进程。本申请实施例中,第二进程可以代替数据同步进程来唤醒完成队列中的其它进程。具体的,第二进程需要检测完成队列的后续元素中是否含有其他事务进程,如果有,则需要负责唤醒完成队列中的剩余事务进程。
在一种可选的实现中,第二进程的标识位于完成队列的头部元素,具体的,参照图6a,数据同步进程在唤醒第二进程之后,第二进程可以唤醒第N进程(该第N进程可以存在也可以不存在,当不存在时,第二进程所在的元素和第一进程所在的元素相邻,且第N进程的数量并不限定,即第二进程和第一进程之间可以存在一个或多个元素),在完成第N进程的唤醒之后,可以唤醒第一进程,并唤醒第一进程之后的进程(如果第一进程的标识位于完成队列的尾部元素的话,则不需要)。
在一种可选的实现中,第二进程的标识位于完成队列中除头部元素之外的元素,具体的,参照图6b,数据同步进程需要首先唤醒第N进程(第N进程的数量并不限定,即第二进程之前可以存在一个或多个元素),之后,数据同步进程可以唤醒第二进程,进而,第二进程可以唤醒第一进程,并唤醒第一进程之后的进程(如果第一进程的标识位于完成队列的尾部元素的话,则不需要)。
在一种可选的实现中,所述第二元素与所述第一元素相邻;则所述第二进程唤醒在所述完成队列中与所述第一元素相邻且位于所述第一元素之后的元素包括的标识所对应的进程。
在一种可选的实现中,第二进程的标识位于完成队列的头部元素,具体的,参照图6c,数据同步进程在唤醒第二进程之后,第二进程可以唤醒相邻的元素包括的第一进程,之后,第一进程可以唤醒与其相邻的第N进程,以此类推,直到唤醒尾部元素包括的事务进程。
在一种可选的实现中,第二进程的标识位于完成队列中除头部元素之外的元素,具体的,参照图6d,数据同步进程需要首先唤醒第N进程(第N进程的数量并不限定,即第二进程之前可以存在一个或多个元素),之后,第N进程可以唤醒第二进程,进而,第二进程可以唤醒第一进程,以此类推,直到唤醒尾部元素包括的事务进程。
本申请实施例中,若第二进程的标识位于完成队列除头部元素之外的元素(不是尾部元素),则,第二进程的后续进程的唤醒都不由数据同步进程来进行(可以由第二进程或者第二进程的后续进程来做),使得数据同步进程(数据同步进程)只需要唤醒一部分已完成数据同步的进程,使得数据同步进程可以更专注于触发备份机进行数据的同步以及接收备份机的同步进度,从而缓解数据同步进程的压力,减少了数据同步进程唤醒事务进程的时间。
若第二进程的标识位于完成队列的头部元素,且后续进程的唤醒都不由数据同步进程来进行(可以由第二进程或者第二进程的后续进程来做),使得数据同步进程(数据同步进程)只需要唤醒一个进程(第二进程),从而更进一步的降低了缓解数据同步进程的压力,减少了数据同步进程唤醒事务进程的时间。
参照图7,本申请实施例中,数据同步进程在唤醒第二进程之后,可以触发备份机进行数据同步,而其余事务进程可以由第二进程来完成。参照图8,在现有的实现中,数据同步进程在唤醒第二进程之后,还需要唤醒其余事务进程,直到完成其余事务进程的唤醒,才可以触发备份机进行数据同步,此时,等待队列中可能存在很多等待唤醒的事务进程了,使得数据同步进程的进程唤醒效率较差。
本申请实施例中,数据同步进程不需要唤醒全部已完成数据同步的进程,只需要唤醒一部分已完成数据同步的进程,使得数据同步进程可以更专注于触发备份机进行数据的同步以及接收备份机的同步进度,从而缓解数据同步进程的压力,减少了数据同步进程唤醒事务进程的时间。
在一种实施例中,第二进程可以不为事务进程,而是单独用于唤醒事务进程的进程。第一进程为等待队列(等待队列)中的任意一个元素包括的标识所对应的进程。本申请实施例中,所述完成队列为至少根据所述第一进程生成的,所述第一进程的标识位于所述完成队列的第一元素中;所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
本申请实施例中,可以至少根据所述第一进程生成完成队列,其中,所述第一进程的标识位于所述完成队列的第一元素中。所述主机包括等待队列,所述方法还包括:在所述备机完成所述备份之前,将所述第一进程加入到所述等待队列,其中,所述完成队列为根据所述等待队列生成的。可选的,所述完成队列可以为所述等待队列的全部或一部分。
需要说明的是,参照图9,第二进程可以唤醒完成队列中的全部元素包括的事务进程;或者,当第一进程的标识位于完成队列的头部元素时,第二进程可以唤醒第一进程,由第一进程来唤醒完成队列中剩余的元素包括的事务进程。
或者,参照图10,第二进程可以唤醒第一进程所在的元素之前的元素包括的标识所对应的进程,直到唤醒了第一进程,并由第一进程来唤醒完成队列中剩余的元素包括的事务进程。
或者,参照图11,当第一进程的标识位于完成队列的头部元素时,第二进程可以唤醒第一进程,由第一进程来唤醒相邻且之后的元素包括的标识所对应的进程,之后,由上述唤醒的相邻且之后的元素包括的标识所对应的进程完成队列中剩余的元素包括的事务进程;或者,当第一进程的标识位于完成队列的头部元素时,第二进程可以唤醒第一进程,由第一进程来唤醒相邻且之后的元素包括的标识所对应的进程,之后,由上述唤醒的相邻且之后的元素包括的标识所对应的进程唤醒相邻的元素包括的标识所对应的进程,以此类推,直到完成队列中的元素包括的事务进程都被唤醒。
本申请实施例中,数据同步进程不需要唤醒已完成数据同步的进程,只需要唤醒一个专门用于唤醒已完成数据同步的进程,使得数据同步进程可以更专注于触发备份机进行数据的同步以及接收备份机的同步进度,从而缓解数据同步进程的压力,减少了数据同步进程唤醒事务进程的时间。
可选的,本申请实施例中,所述主机包括多个NUMA节点,所述第二进程和所述第一进程属于同一个NUMA节点包括的进程。其中,与第二进程和第一进程相关的数据,占用同样的NUMA节点下的内存资源。
可选的,本申请实施例中,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程与所述完成队列属于同一个NUMA节点。其中,与第二进程和第一进程中的至少一个进程、以及完成队列相关的数据,占用同样的NUMA节点下的内存资源。
可选的,本申请实施例中,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程与所述等待队列属于同一个NUMA节点。其中,与第二进程和所述第一进程中的至少一个进程、以及等待队列相关的数据,占用同样的NUMA节点下的内存资源。
可选的,本申请实施例中,所述完成队列和所述等待队列属于同一个NUMA节点。其中,与第二进程和第一进程相关的数据,占用同样的NUMA节点下的内存资源。其中,完成队列以及等待队列相关的数据,占用同样的NUMA节点下的内存资源。
本申请实施例中,在数据库***初始化时,可以为每个NUMA节点分配对应的等待队列,以及将事务进程(第二进程和第一进程)分配到该节点的等待队列中,同理,从等待队列中分离出来的完成队列(完成队列)也需要位于该节点。基于此,完成队列在遍历和唤醒事务进程时进程和访问的数据位于相同的NUMA节点,避免了代价较高的远端访存,进一步提升了并行唤醒机制的效率。
接下来描述一个本申请的应用例子,参照图12和图13,若NUMA***存在两个NUMA节点(节点1和节点2)。
在***初始化时,要为数据同步进程准备两个等待队列(等待队列),分属节点1和节点2。在事务进程启动时,可以按照均分策略分别绑定到不同的NUMA节点。这里假设编号为奇数的进程绑定在节点1,而编号为偶数的进程绑定到节点2。
当事务进程准备提交,并已经完成了本机日志文件写入后,向数据同步进程发送请求,并加入到对应的等待队列。比如,编号为1/3/5/7/9的进程加入到节点1下的等待队列;编号为2/4/6/8/10的进程则加入到节点2下的等待队列;
主机的数据同步进程发送日志到备机,并接收备机的日志处理进度报文。主机数据同步进程当发现备机的同步进度有刷新,准备唤醒相关事务进程。在唤醒时,遍历各个等待队列,根据同步完成的位置信息将队列断开,即分离出已完成的事务队列;此步骤需要持有锁,以保护等待队列。
如上图12所示,编号为1/3/5的事务进程和编号为2/4/6的事务进程被分别分离到不同的完成队列(完成队列)。数据同步进程可以唤醒每个完成队列的首个事务进程,不再负责唤醒其它进程。如图13所示,仅编号为1和2的进程被唤醒。然后数据同步进程立即进入下一轮工作,不再处理剩余进程。每个完成队列的头部元素的进程(编号为1和2的进程)负责完成本队列的进程唤醒任务。其中,编号为1和2的进程唤醒操作是并发执行的。
参照图14,图14为本申请实施例提供的一种数据写入方法的流程示意,如图14中示出的那样,本申请实施例提供的数据写入方法包括:
1401、数据写入进程基于完成对第一数据的写操作,唤醒第二进程,其中,所述第一数据为第一进程生成的。
1402、所述第二进程唤醒所述第一进程。
本申请实施例中,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录。
和图2至图13中描述的实施例不同的是,本实施例应用在数据写入的场景中,其中,数据可以是和图2对应的实施例中第一数据和第二数据相同类型的数据,数据库***的数据写入到本地文件是非常重要的处理步骤,其中,为避免竞争带来的额外消耗,采用专门的数据服务进程来为其它事务进程写入数据(即本实施例中的数据写入进程)。
在现有的实现中,数据写入进程在完成对所述第一数据的写操作之后,需要进行第一进程唤醒。花费在事务进程唤醒上的时间较长,且数据写入进程只有在完成事务进程的唤醒之后才能进行其余事务进程对应的数据的写操作,效率较低。
本申请实施例中,数据写入进程在完成对所述第一数据的写操作之后,可以唤醒第二进程,之后由第二进程完成或者结合完成队列中的其余进程完成进程的唤醒。相似之处可以参考图2至图13中实施例的描述,这里不再赘述。
本申请实施例中,可以减少本地数据写入进程花费在事务进程唤醒上的时间,从而可以提高写文件操作的效率。
在一种可选的实现中,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录。
在一种可选的实现中,所述数据写入进程基于完成对第一数据的写操作,唤醒第二进程,包括:
所述数据写入进程基于完成对第一数据和第二数据的写操作,唤醒第二进程;其中,所述第二数据为所述第二进程生成的。
在一种可选的实现中,所述第二进程被配置对数据库进行第二操作,所述第二数据包括所述第二操作对应的操作记录。
在一种可选的实现中,所述主机包括完成队列,所述第二进程的标识位于所述完成队列的第一元素中;所述唤醒所述第二进程,包括:
唤醒所述第一元素中包括的标识所对应的进程。
在一种可选的实现中,所述方法还包括:
在唤醒所述第二进程之前,在所述数据写入进程完成对第一数据的写操作之后,所述数据写入进程至少根据所述第二进程的标识生成完成队列,其中,所述第二进程的标识位于所述完成队列的第一元素中。
在一种可选的实现中,所述第一元素为所述完成队列的头部元素。
在一种可选的实现中,所述第一进程的标识位于所述完成队列的第二元素中,且在所述完成队列中,所述第二元素位于所述第一元素之后;
相应的,所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第二元素包括的标识所对应的进程。
在一种可选的实现中,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒所述完成队列中位于所述第一元素之后的多个元素包括的标识所对应的进程。
在一种可选的实现中,所述第二元素与所述第一元素相邻;相应的,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒在所述完成队列中与所述第一元素相邻且位于所述第一元素之后的元素包括的进程。
在一种可选的实现中,所述主机包括等待队列,在所述数据写入进程完成对第一数据的写操作之前,所述第二进程的标识位于所述等待队列中的第三元素,所述第一进程的标识位于所述等待队列中的第四元素,所述第四元素在所述第三元素之后;其中,所述完成队列为根据所述等待队列生成的。
在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。
在一种可选的实现中,所述第三元素和所述第四元素在所述等待队列中的相对位置,和所述第一元素和所述第二元素在所述完成队列中的相对位置相同。
在一种可选的实现中,所述第二进程的标识位于所述等待队列的头部元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素。
在一种可选的实现中,所述主机包括完成队列,所述第一进程的标识位于所述完成队列的第一元素中,所述第二进程位于所述完成队列外;所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
在一种可选的实现中,所述方法还包括:
在所述第二进程唤醒所述第一进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第一进程的标识生成完成队列,其中,所述第一进程的标识位于所述完成队列的第一元素中。
在一种可选的实现中,所述主机包括等待队列,在所述数据写入进程完成对第一数据的写操作之前,所述第一进程的标识位于所述等待队列中的第四元素;其中,所述完成队列为根据所述等待队列生成的。
在一种可选的实现中,所述完成队列为所述等待队列的全部或一部分。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程属于同一个NUMA节点包括的进程。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述完成队列属于同一个NUMA节点。
在一种可选的实现中,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述等待队列属于同一个NUMA节点;和/或,所述完成队列和所述等待队列属于同一个NUMA节点。
参照图15,本申请还提供了一种数据同步装置1500,所述装置1500包括:处理电路1501和通信接口1502;其中,
所述处理电路1501,被配置为执行图2以及图14对应的实施例中与数据处理相关的动作;上述通信接口1502被配置执行上述实施例中与备机之间交互相关的发送动作或接收动作。
参照图16,本申请还提供了一种计算机可读存储介质,在一些实施例中,上述图2至图14所公开的方法可以实施为以机器可读格式被编码在计算机可读存储介质上的或者被编码在其它非瞬时性介质或者制品上的计算机程序指令。图16示意性地示出根据这里展示的至少一些实施例而布置的示例计算机程序产品的概念性局部视图,示例计算机程序产品包括用于在计算设备上执行计算机进程的计算机程序。在一个实施例中,示例计算机程序产品1600是使用信号承载介质1601来提供的。信号承载介质1601可以包括一个或多个程序指令1602,其当被一个或多个处理器运行时可以提供以上针对图2至图14描述的功能或者部分功能。因此,例如,参考图2中所示的实施例,方框201-203的一个或多个特征可以由与信号承载介质1601相关联的一个或多个指令来承担,参考图14中所示的实施例,方框1401-1402的一个或多个特征可以由与信号承载介质1601相关联的一个或多个指令来承担。此外,图16中的程序指令1602也描述示例指令。
在一些示例中,信号承载介质1601可以包含计算机可读介质1603,诸如但不限于,硬盘驱动器、紧密盘(CD)、数字视频光盘(DVD)、数字磁带、存储器、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等等。在一些实施方式中,信号承载介质1601可以包含计算机可记录介质1604,诸如但不限于,存储器、读/写(R/W)CD、R/W DVD、等等。在一些实施方式中,信号承载介质1601可以包含通信介质1605,诸如但不限于,数字和/或模拟通信介质(例如,光纤电缆、波导、有线通信链路、无线通信链路、等等)。因此,例如,信号承载介质1601可以由无线形式的通信介质1605(例如,遵守IEEE802.11标准或者其它传输协议的无线通信介质)来传达。一个或多个程序指令1602可以是,例如,计算机可执行指令或者逻辑实施指令。在一些示例中,计算设备的计算设备可以被配置为,响应于通过计算机可读介质1603、计算机可记录介质1604、和/或通信介质1605中的一个或多个传达到计算设备的程序指令1602,提供各种操作、功能、或者动作。应该理解,这里描述的布置仅仅是用于示例的目的。因而,本领域技术人员将理解,其它布置和其它元素(例如,机器、接口、功能、顺序、和功能组等等)能够被取而代之地使用,并且一些元素可以根据所期望的结果而一并省略。另外,所描述的元素中的许多是可以被实现为离散的或者分布式的组件的、或者以任何适当的组合和位置来结合其它组件实施的功能实体。
基于同一发明构思,本发明实施例提供一种主机,请参见图17,主机1700包括:发射器1703、接收器1704、存储器1702和与存储器1702耦合的处理器1701。发射器1703、接收器1704、存储器1702和处理器1701可通过总线或者其它方式连接(图17中以通过总线连接为例)。其中:
处理器1701,可以是一个或多个中央处理器(Central Processing Unit,CPU),图17中以一个处理器为例,在处理器1701是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器1702,包括但不限于是随机存储记忆体(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)、可擦除可编程只读存储器(Erasable ProgrammableRead Only Memory,EPROM)、或便携式只读存储器(Compact Disc Read-Only Memory,CD-ROM),该存储器1702用于相关指令及数据,还用于存储程序代码,所述程序代码具体用于实现图2至图14中实施例中描述的方法;
发射器1703用于向外部(例如备机)发送数据;
接收器1704用于从外部(例如备机)接收数据。
需要说明的是,在本发明实施例中,主机可以是数据库***中独立的设备,例如,所述主机是独立的物理服务器。主机也可以是非独立的设备,这种情况下,在一种应用场景中,主机可以内置于主机中,或者作为主机的一种功能模块而存在(例如主机和主机作为不同的虚拟机,通过I/O接口连接,共存于同一物理服务器);在另一种应用场景中,主机可以内置于某个备机中,或者作为某个备机的一种功能模块而存在(例如某个备机和主机作为不同的虚拟机,通过I/O接口连接,共存于同一物理服务器)。
还需要说明的,处理器1701的执行步骤以及处理器1701涉及的其他技术特征还可参照图2至图17方法实施例中所述主机的相关内容,这里不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者其他网络设备等)执行本申请图2实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (45)
1.一种数据同步方法,其特征在于,所述方法包括:
数据同步进程将第一数据发送给备机,所述第一数据为主机上运行的第一进程生成的;
所述数据同步进程基于所述备机完成所述第一数据的同步,唤醒第二进程;以及,
所述第二进程唤醒所述第一进程。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
所述数据同步进程将第一数据发送给所述备机之前,所述数据同步进程接收所述第一进程对应的数据同步请求。
3.根据权利要求1或2所述的方法,其特征在于,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录。
4.根据权利要求1至3任一所述的方法,其特征在于,所述方法还包括:
所述数据同步进程将第二数据发送给所述备机,所述第二数据为所述第二进程生成的;
所述数据同步进程基于所述备机完成所述第一数据的同步,唤醒第二进程,包括:
所述数据同步进程基于所述备机完成所述第一数据和所述第二数据的同步,唤醒所述第二进程。
5.根据权利要求4所述的方法,其特征在于,所述第二进程被配置对数据库进行第二操作,所述第二数据包括所述第二操作对应的操作记录。
6.根据权利要求4或5所述的方法,其特征在于,所述主机包括完成队列,所述第二进程的标识位于所述完成队列的第一元素中;
所述唤醒所述第二进程,包括:
唤醒所述第一元素中包括的标识所对应的进程。
7.根据权利要求4至6任一所述的方法,其特征在于,所述方法还包括:
在唤醒所述第二进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第二进程的标识生成完成队列,其中,所述第二进程的标识位于所述完成队列的第一元素中。
8.根据权利要求6或7所述的方法,其特征在于,所述第一元素为所述完成队列的头部元素。
9.根据权利要求6至8任一所述的方法,其特征在于,所述第一进程的标识位于所述完成队列的第二元素中,且在所述完成队列中,所述第二元素位于所述第一元素之后;
相应的,所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第二元素包括的标识所对应的进程。
10.根据权利要求9所述的方法,其特征在于,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒所述完成队列中位于所述第一元素之后的多个元素包括的标识所对应的进程。
11.根据权利要求9所述的方法,其特征在于,所述第二元素与所述第一元素相邻;相应的,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒在所述完成队列中与所述第一元素相邻且位于所述第一元素之后的元素包括的进程。
12.根据权利要求6至11任一所述的方法,其特征在于,所述主机包括等待队列,在所述备机完成所述同步之前,所述第二进程的标识位于所述等待队列中的第三元素,所述第一进程的标识位于所述等待队列中的第四元素,所述第四元素在所述第三元素之后;其中,所述完成队列为根据所述等待队列生成的。
13.根据权利要求12所述的方法,其特征在于,所述完成队列为所述等待队列的全部或一部分。
14.根据权利要求12或13所述的方法,其特征在于,所述第三元素和所述第四元素在所述等待队列中的相对位置,和所述第一元素和所述第二元素在所述完成队列中的相对位置相同。
15.根据权利要求12至14任一所述的方法,其特征在于,所述第二进程的标识位于所述等待队列的头部元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素。
16.根据权利要求1至3任一所述的方法,其特征在于,所述主机包括完成队列,所述第一进程的标识位于所述完成队列的第一元素中,所述第二进程位于所述完成队列外;所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
17.根据权利要求1至3、16中任一所述的方法,其特征在于,所述方法还包括:
在所述第二进程唤醒所述第一进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第一进程的标识生成完成队列,其中,所述第一进程的标识位于所述完成队列的第一元素中。
18.根据权利要求16或17所述的方法,其特征在于,所述主机包括等待队列,在所述备机完成所述同步之前,所述第一进程的标识位于所述等待队列中的第四元素;其中,所述完成队列为根据所述等待队列生成的。
19.根据权利要求18所述的方法,其特征在于,所述完成队列为所述等待队列的全部或一部分。
20.根据权利要求1至19任一所述的方法,其特征在于,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程属于同一个NUMA节点包括的进程。
21.根据权利要求6至19任一所述的方法,其特征在于,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述完成队列属于同一个NUMA节点。
22.根据权利要求12至15、18、19中任一所述的方法,其特征在于,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述等待队列属于同一个NUMA节点;和/或,所述完成队列和所述等待队列属于同一个NUMA节点。
23.一种数据写入方法,其特征在于,所述方法包括:
数据写入进程基于完成对第一数据的写操作,唤醒第二进程,其中,所述第一数据为第一进程生成的;以及,
所述第二进程唤醒所述第一进程。
24.根据权利要求23所述的方法,其特征在于,所述第一进程被配置对数据库进行第一操作,所述第一数据包括所述第一操作对应的操作记录。
25.根据权利要求23或24所述的方法,其特征在于,所述数据写入进程基于完成对第一数据的写操作,唤醒第二进程,包括:
所述数据写入进程基于完成对第一数据和第二数据的写操作,唤醒第二进程;其中,所述第二数据为所述第二进程生成的。
26.根据权利要求25所述的方法,其特征在于,所述第二进程被配置对数据库进行第二操作,所述第二数据包括所述第二操作对应的操作记录。
27.根据权利要求25或26所述的方法,其特征在于,所述主机包括完成队列,所述第二进程的标识位于所述完成队列的第一元素中;所述唤醒所述第二进程,包括:
唤醒所述第一元素中包括的标识所对应的进程。
28.根据权利要求25至27任一所述的方法,其特征在于,所述方法还包括:
在唤醒所述第二进程之前,在所述数据写入进程完成对第一数据的写操作之后,所述数据写入进程至少根据所述第二进程的标识生成完成队列,其中,所述第二进程的标识位于所述完成队列的第一元素中。
29.根据权利要求27或28所述的方法,其特征在于,所述第一元素为所述完成队列的头部元素。
30.根据权利要求27至29任一所述的方法,其特征在于,所述第一进程的标识位于所述完成队列的第二元素中,且在所述完成队列中,所述第二元素位于所述第一元素之后;
相应的,所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第二元素包括的标识所对应的进程。
31.根据权利要求30所述的方法,其特征在于,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒所述完成队列中位于所述第一元素之后的多个元素包括的标识所对应的进程。
32.根据权利要求30所述的方法,其特征在于,所述第二元素与所述第一元素相邻;相应的,所述第二进程唤醒所述第二元素包括的进程,包括:
所述第二进程唤醒在所述完成队列中与所述第一元素相邻且位于所述第一元素之后的元素包括的进程。
33.根据权利要求27至32任一所述的方法,其特征在于,所述主机包括等待队列,在所述数据写入进程完成对第一数据的写操作之前,所述第二进程的标识位于所述等待队列中的第三元素,所述第一进程的标识位于所述等待队列中的第四元素,所述第四元素在所述第三元素之后;其中,所述完成队列为根据所述等待队列生成的。
34.根据权利要求33所述的方法,其特征在于,所述完成队列为所述等待队列的全部或一部分。
35.根据权利要求33或34所述的方法,其特征在于,所述第三元素和所述第四元素在所述等待队列中的相对位置,和所述第一元素和所述第二元素在所述完成队列中的相对位置相同。
36.根据权利要求33至35任一所述的方法,其特征在于,所述第二进程的标识位于所述等待队列的头部元素,所述第一进程的标识位于所述等待队列中除头部元素之外的元素。
37.根据权利要求23或24所述的方法,其特征在于,所述主机包括完成队列,所述第一进程的标识位于所述完成队列的第一元素中,所述第二进程位于所述完成队列外;所述第二进程唤醒所述第一进程,包括:
所述第二进程唤醒所述第一元素中包括的标识所对应的进程。
38.根据权利要求23、24、37中任一所述的方法,其特征在于,所述方法还包括:
在所述第二进程唤醒所述第一进程之前,在所述备机完成所述第一数据的同步之后,至少根据所述第一进程的标识生成完成队列,其中,所述第一进程的标识位于所述完成队列的第一元素中。
39.根据权利要求37或38所述的方法,其特征在于,所述主机包括等待队列,在所述数据写入进程完成对第一数据的写操作之前,所述第一进程的标识位于所述等待队列中的第四元素;其中,所述完成队列为根据所述等待队列生成的。
40.根据权利要求39所述的方法,其特征在于,所述完成队列为所述等待队列的全部或一部分。
41.根据权利要求23至40任一所述的方法,其特征在于,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程属于同一个NUMA节点包括的进程。
42.根据权利要求27至40任一所述的方法,其特征在于,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述完成队列属于同一个NUMA节点。
43.根据权利要求33至36、39、40中任一所述的方法,其特征在于,所述第一进程以及所述第二进程运行在主机上,所述主机包括多个NUMA节点,所述第二进程和所述第一进程中的至少一个进程,与所述等待队列属于同一个NUMA节点;和/或,所述完成队列和所述等待队列属于同一个NUMA节点。
44.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述程序被计算机执行时,实现权利要求1至22任一项所述的方法。
45.一种计算机可读存储介质,其特征在于,存储有计算机程序,所述程序被计算机执行时,实现权利要求23至43任一项所述的方法。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617593.1A CN113868014A (zh) | 2020-06-30 | 2020-06-30 | 一种数据同步方法及装置 |
EP21834339.0A EP4170519A4 (en) | 2020-06-30 | 2021-06-21 | DATA SYNCHRONIZATION METHOD AND APPARATUS |
PCT/CN2021/101223 WO2022001723A1 (zh) | 2020-06-30 | 2021-06-21 | 一种数据同步方法及装置 |
US18/146,955 US20230137609A1 (en) | 2020-06-30 | 2022-12-27 | Data synchronization method and apparatus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010617593.1A CN113868014A (zh) | 2020-06-30 | 2020-06-30 | 一种数据同步方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113868014A true CN113868014A (zh) | 2021-12-31 |
Family
ID=78981829
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010617593.1A Pending CN113868014A (zh) | 2020-06-30 | 2020-06-30 | 一种数据同步方法及装置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20230137609A1 (zh) |
EP (1) | EP4170519A4 (zh) |
CN (1) | CN113868014A (zh) |
WO (1) | WO2022001723A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033087A (zh) * | 2023-10-10 | 2023-11-10 | 武汉吧哒科技股份有限公司 | 数据处理方法、装置、存储介质及管理服务器 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012140916A1 (ja) * | 2011-04-15 | 2012-10-18 | 日本電気株式会社 | ログ情報記録システム、装置、方法およびプログラム |
US20120291034A1 (en) * | 2011-05-14 | 2012-11-15 | International Business Machines Corporation | Techniques for executing threads in a computing environment |
CN105573825B (zh) * | 2014-10-11 | 2020-02-14 | 华为技术有限公司 | 一种跨操作***的任务间同步的方法及装置 |
CN108319508B (zh) * | 2017-01-18 | 2020-10-20 | ***通信集团公司 | Http同步请求转为异步处理的方法及服务器 |
CN108460047B (zh) * | 2017-02-21 | 2021-11-16 | 阿里巴巴集团控股有限公司 | 数据同步方法及设备 |
CN108509260B (zh) * | 2018-01-31 | 2021-08-13 | 深圳市万普拉斯科技有限公司 | 线程识别处理方法、装置、计算机设备和存储介质 |
CN110807062B (zh) * | 2018-08-02 | 2021-06-22 | 中兴通讯股份有限公司 | 一种数据同步的方法、装置和数据库主机 |
-
2020
- 2020-06-30 CN CN202010617593.1A patent/CN113868014A/zh active Pending
-
2021
- 2021-06-21 EP EP21834339.0A patent/EP4170519A4/en active Pending
- 2021-06-21 WO PCT/CN2021/101223 patent/WO2022001723A1/zh unknown
-
2022
- 2022-12-27 US US18/146,955 patent/US20230137609A1/en active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117033087A (zh) * | 2023-10-10 | 2023-11-10 | 武汉吧哒科技股份有限公司 | 数据处理方法、装置、存储介质及管理服务器 |
CN117033087B (zh) * | 2023-10-10 | 2024-01-19 | 武汉吧哒科技股份有限公司 | 数据处理方法、装置、存储介质及管理服务器 |
Also Published As
Publication number | Publication date |
---|---|
WO2022001723A1 (zh) | 2022-01-06 |
EP4170519A1 (en) | 2023-04-26 |
US20230137609A1 (en) | 2023-05-04 |
EP4170519A4 (en) | 2023-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160246866A1 (en) | Distributed persistent memory using asynchronous streaming of log records | |
US7971029B2 (en) | Barrier synchronization method, device, and multi-core processor | |
US20070294578A1 (en) | Method and apparatus for facilitating process migration | |
CN114637475A (zh) | 一种分布式存储***控制方法、装置及可读存储介质 | |
US20120297107A1 (en) | Storage controller system with data synchronization and method of operation thereof | |
WO2020025049A1 (zh) | 数据同步的方法、装置、数据库主机及存储介质 | |
WO2014173364A1 (zh) | 共享资源访问方法和装置 | |
US20200293412A1 (en) | Log Management Method, Server, and Database System | |
CN115550384B (zh) | 集群数据同步方法、装置、设备及计算机可读存储介质 | |
WO2024001079A1 (zh) | 一种数据库主备同步操作的加速方法和*** | |
US20210103475A1 (en) | Cooperation-based node management protocol | |
CN115994053A (zh) | 数据库备机的并行回放方法、装置、电子设备及介质 | |
CN115080277B (zh) | 一种多核***的核间通信*** | |
US20230137609A1 (en) | Data synchronization method and apparatus | |
Camargos et al. | Multicoordinated paxos | |
CN110121712B (zh) | 一种日志管理方法、服务器和数据库*** | |
CN116955267B (zh) | 一种谐振陀螺惯导双处理器同步高速软件架构设计方法 | |
CN108460047B (zh) | 数据同步方法及设备 | |
CN111858626B (zh) | 一种基于并行执行的数据同步的方法和装置 | |
JP7192388B2 (ja) | 並列処理装置、並列演算実行プログラムおよびバックアップ方法 | |
CN116719764A (zh) | 数据同步方法、***以及相关装置 | |
WO2023115935A1 (zh) | 数据处理方法、相关装置及设备 | |
CN110309224B (zh) | 一种数据复制方法及装置 | |
CN103019829A (zh) | 用签名实现的多核程序内存竞争记录及重演方法 | |
WO2012137238A1 (ja) | 計算機システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |